
dp
caozhining
这个作者很懒,什么都没留下…
展开
-
NOIP2018 货币系统
解题方法我们发现这个新的系统的货币一定是都属于原来的集合内的,所有我们只需要判断原来的数能不能被其他的数替代。然后我们自然就有一种想法就是从小到大找。这个时候如果这个数无法被替代,那么这个数一定会被选中,如果能被替代就不要了。而从小到大正好可以避免漏选的情况,我们发现aia_iai都比较小,我们就可以暴力修改一个数能不能从已知的可以转移的数转移来,然后每次加入这个不可以替代的数的时候更新一下...原创 2019-11-08 20:07:59 · 346 阅读 · 0 评论 -
CF1245C Constanze's Machine
题目传送门题面给你一个字符串,其中两个uuu是可以变成www,两个nnn是可以变成mmm,当然也可以不会,问有可能有多少的字符串。解题方法首先我们要先判断一下m和wm\text{和}wm和w是否出现过,如果出现过那么就直接输出000结束,如果不是我们就开始dpdpdp,我们发现如果这两个字符可以合并,那么dp[i]=d[i−1]+d[i−2]dp[i]=d[i-1]+d[i-2]dp[i]...原创 2019-11-08 18:23:18 · 332 阅读 · 0 评论 -
luogu2112 鸿雁传书
题目传送门题意给你nnn个单词,在保证顺序不变的情况下让你把他们分成kkk行,使得每行字母数的方差最小,求最小方差。解题方法我们发现这个不能改变顺序的,而且我们也发现平均值是个定值,不会随我们的安排而改变,所以我们就可以安全的递推了,我们定义dp[i][j]dp[i][j]dp[i][j]表示前iii个单词共安排jjj行的最小方差,我们发现就这个递推式就变成了:dp[i][j]=min(d...原创 2019-11-08 16:45:38 · 134 阅读 · 0 评论 -
CF1256E Yet Another Division Into Teams
題目傳送門題面你有nnn個選手,每個選手都有一個勢力值,你要把他們分成多個小組,每個小組最少要有3個人,每個小組的多樣性值為勢力值最大值減去最小值,問讓你提出一種分組方式使得多樣性總和最小。解題方法我們發現組分的越多,答案一定越小,所以說我們發現每個小組的人數一定是3−53-53−5人,然后我們就可以通過dpdpdp求答案了,我們能夠發現的遞推式如下:dp[i+3]=min(dp[i+3...原创 2019-11-07 22:13:46 · 282 阅读 · 0 评论 -
[HAOI2009]逆序对数列
题目传送门题意求长度为nnn的有kkk个逆序对数由1..n1..n1..n组成的排列有多少解题方法我们考虑一个一个的往里面加数,我们发现每次加进去的那个数一定是最大的数,并且在我们决定放的位置时他一定会产生后面的数的数量个逆序对,然后我们就可以尝试递推了,因为你每次加进去的这个数产生的贡献最大是i−1i-1i−1的,然后我们就可以递推了:dp[i][j]=∑k=1jdp[i−1][k]dp...原创 2019-11-06 19:23:44 · 297 阅读 · 0 评论 -
[luogu2014]选课
传送门动态转移方程:dp[now][j]=max(dp[now][j],dp[now][j-k]+dp[v][k]);代码:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int head[601],...原创 2019-04-03 22:31:39 · 165 阅读 · 0 评论 -
[luogu1140]相似基因
题目传送门转移方程还是很好想的,很明显dp[i][j]=max(dp[i][j],dp[i-1][j]+A链与空匹配,dp[i][j-1]+B链与空匹配,dp[i][j]+AB链同时匹配但是要注意细节,代码一定要写好,我就是打错奇怪的地方调了好久#include<iostream>#include<cstdio>#include<cstring>#i...原创 2019-03-27 21:48:39 · 215 阅读 · 0 评论 -
[luogu1040]加分二叉树
题目传送门解法这道题一看题目就大概知道是一道树状dp,我们就要想转移方程式是个什么样子了。首先我们很好能想出来要从下往上不断转移状态,所以我们要先预处理出来dp[i][i]=a[i]dp[i][i]=a[i]dp[i][i]=a[i],然后不断转移。然后转移方程该怎么想呢?方程很明显就是看看怎么分答案最大就好了,但是要注意一点要记录你怎么分的,最后输出一下就好了。动态转移方程:dp[i...原创 2019-03-28 15:56:37 · 93 阅读 · 0 评论 -
[luogu1122]最大子树和
题目传送门标准的树形dp。本题只要从1点开始dfs,不断更新dp[i]+=max(dp[v],0)即可#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int v[32001];int head[3200...原创 2019-03-28 16:30:45 · 535 阅读 · 0 评论