【CF1250G】Discarding Game(DP)】的更多相关文章

题意:A和B玩游戏,一共n轮,A先B后,第i轮两人分别能得到a[i]和b[i]的得分,累加到当前得分和中 每一轮进行完之后A可以选择抵消得分,即两者都减去两者的min 若某个时刻某个人得分和不小于K则判负 问A最少抵消几次能赢 n<=2e5,K<=1e9 思路:因为两人得分和的差不变,考虑A最后抵消的位置,从此位置出发的局面是固定的 dp[i]表示A进行到i不败的最小抵消次数 这个dp有单调性,随着左端点右移右端点也在右移,线性扫一遍就出来了 #include<bits/stdc++.h…
题目链接 题意:给定一个\(n\times m\)的矩阵,每次可以向→↓←移动一格,也可以原地不动,求从\((x,y)\)到最后一行的期望步数. 此题标签\(DP\) 看到上面这个肯定会想到 方法一: \(f[i][j]\)表示表示从\((x,y)\)走到\((i,j)\)的期望步数,正推 方法二: \(f[i][j]\)表示从\((i,j)\)走到最后一行的期望步数,倒推 事实上,方法二更优秀. 因为如果用方法一,我们要求的答案就是\(\frac{\sum f[\text{最后一行}][\te…
题意: 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第 i ( 1≤ i≤n)个时同段上, 两节内容相同的课程同时在不同的地点进行, 其中, 牛牛预先被安排在教室 ci上课, 而另一节课程在教室 di进行. 在不提交任何申请的情况下,学生们需要按时间段的顺序依次完成所有的n节安排好的课程.如果学生想更换第i节课程的教室,则需要提出中情.若申请通过,学生就可以在第 i个时间段去教室 di上课, 否则仍然在教室…
Description 然而,由于小C沉迷于制作游戏,他完全忘记了自己作为国家集训队的一员,还有156道作业题等他完成.还有一天作业就要截止了,而他一题还没有做.于是他赶紧挑了一道看起来最简单的题: "给定一个整数N,请你求出有多少字符集为1到K之间整数的字符串,使得该字符串可以由一个长度为N的回文串循环移位后得到.所谓循环移位,就是把字符串的某个前缀(可以为空)移到字符串末尾,如"1221"循环移位可以得到"1221"."2211".…
百度之星2017复赛1003 HDU-6146 Pokémon GO 题意 两行n列,只能到相邻格子,可以斜着.求遍历的方案数. 题解 dp[i]从一个点出发遍历长度i最后回到这一列的方案数 dp2[i]从一个点出发遍历长度i的方案数 显然有\(dp[i]=2*dp[i-1]\). dp2[i]就要考虑3种情况:先遍历后面的格子,最后回到当前列,\(2*dp[i-1]\); 先完成当前列,再去别的格子,\(2*dp2[i-1]\); 先遍历下一列,再回来,再遍历后面的列,\(4*dp2[i-2]…
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=465&page=show_problem&problem=2399 最长的很简单,将串翻转过来后求两个串的lcs就是答案.. 主要是字典序那里... 还是开string来比较吧.. 注意最后输出方案时用前半段推出后半段.(因为可能lcs时会重合...) #include <cstdio> #include…
题意:给出一个n*n的矩阵,要求在每个位置涂上黑/白色, 要求满足:任意相邻的两行,其颜色要么完全相同,要么完全相反 任意相邻的两列,其颜色也要么相同要么完全相反 且这个矩形中,不存在任意一个大小大于等于k的同色矩形 求方案数模998244353 n<=5e2,1<=k<=n^2 思路:From https://blog.csdn.net/qq_34454069/article/details/81835687 #include<cstdio> #include<cst…
这个题乍一看就应该是DP,再看一眼数据范围,1000..那就应该是了.然后就向DP的方向想,经过对小数据的计算可以得出,如果我们用f[i][j]来表示前i个数有j个是填了"<"的,那么f[i][j]显然可以表示为f[i][j]+=f[i-1][j]\*(j+1)+f[i-1][j-1] (i-j). 至于原因 1.与f[i-1][j-1] 在这种情况下,由于我们是从前往后去推的,所以当前加入的数一定比前面的都大.那么怎么才能使得其变为前n个有j个<呢? 仔细想一下你就会发现…
题意:有一个n*m的矩阵,每个矩阵里有一个数字a[i][j].现在要求将其中一个格子的值改为p,使得修改后矩阵的最大子矩阵和最小,求这个最小值 n,m<=150,abs(a[i][j])<=1e3 思路:学习cf,也把这种题叫DP了…… 考虑如何快速求出修改后最大子矩阵的值 最大子矩阵有一个O(n^3)的写法:枚举所处的两行或两列,剩下的就当做最大子串做 用这样的方法预处理出上下左右四个方向的最大子矩阵之后,枚举任意一个原最大子矩阵中每个点是否修改 如果有多个最大子矩阵除非枚举到重叠部分否则答…
题意:有N个数对(a[i],b[i]) 每次可以把(x,y)变成(x+a[i],y+b[i])或(x+b[i],x+a[i]),后者称为交换一次 求使abs(x-y)最小时的最小交换次数 n<=1000 1<=a[i],b[i]<=6 思路:设dp[i,j]为前i个数对,使x-y=j时的最小交换次数 转移即可 ; ..,-..]of longint; a,b:..]of longint; n,i,v,j,t,ans:longint; function min(x,y:longint):l…