随笔分类 - 动态规划--普通DP
摘要:T<=10组数据问K<=30种珠子每种n<=1e9串成1~n长度的序列共有多少种,mod1234567891。 方程没想到。矩阵不会推。很好。 f[i][j]--长度i,j种珠子方案数,f[i][j]=f[i-1][j]*j(放个旧的)+f[i-1][j-1]+(K-(j-1))(放个新的) n太大
        阅读全文
                
摘要:n<=100000个杆,给高度,增加高度代价为增加量的平方,通过增加使得sigma (a[i]-a[i-1])*C,2<=i<=n的值最小。 f[i][j]--前i根杆第i根高度j的最大值,f[i][j]=min(f[i-1][k]+C*|k-j|+(j-a[i])2),过不了。 把绝对值拆掉,就有
        阅读全文
                
摘要:每月m<=1000块钱,有n<=300道题,要按顺序做,每月做题要花钱,花钱要第一个月预付下个月立即再付一次,给出预付和再付求最少几个月做完题,第一个月不做。 神奇的DP。。竟没想出来。。 注意到这个月做题受制于上个月做的题,f[i][j]--最后做i~j题的最少月数,f[i][j]=inf(i~j
        阅读全文
                
摘要:给出平面上n<=100个点,求最少用多少面积≤S<=200000的矩形能全覆盖。 第一想法是区间DP,f[i,j]表示覆盖第i到j的点最少矩形数,$f[i,j]=∑f[i,x]+f[x+1,j],x∈[i,j)$,但好在样例良心,这样的方案过不了样例。怎么把两个矩形相交的方案处理出来呢? f[i,j
        阅读全文
                
摘要:n个数,分组,数Ai要在至少含有Ai个数的组,求最多分多少组。 方法一:大的数应该尽量跟大的在一起,这样才能让小的出现很多很多组,所以从大到小排序,给当前序列中最大的数x分x个数。代码如下: 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<st
        阅读全文
                
摘要:n<=2000个数,把它修改成不上升或不下降序列所要改变的数值总共最小是多少yy一下可得最后改成的数值肯定是原数组数值中的某一个感觉一下,相邻两个数如果有冲突要改,那肯定把他们改成两者之一的数才较好,具体证明不会。。f(i,j)--前i个数,最后一个改为第j小(第j大)的数,答案是多少f(i,j)=
        阅读全文
                
摘要:len<=2000的字符串上,给出删掉和添加每种字符的花费,求把字符串变成回文串的最小花费。 首先每个字符添加和删除是一样的,因此花费在添加和删掉每个字符的花费中取小的。 如果每个字符的花费都是1,就是找最长回文串再用len减掉即可。(manacher!) 加了花费同理,就是找“最大权回文串”再用每
        阅读全文
                
摘要:n<=40000个<=m<=n的数,一段数不和谐(河蟹???)度为该段中不同数的个数的平方,求把n个数划成若干段后的最小不和谐度。 好题。首先可以确定是DP,f[i]=min(f[j]+P(j+1,i)),其中P(l,r)表示区间l到r的不同数的个数的平方。n2,过不了。 不过可以发现f是不下降的。
        阅读全文
                
摘要:题目大意:把一个只含1,2,3的序列改成形如111……222……333……或333……222……111……的形式最少改几个数。 题解:光看这个数列无从知晓答案,所以试着采用DP。由于每个数变1,2,3与后面的数怎么变密切相关,所以F[i][j]表示前i个数中,第i个数变j后满足第一种形态的最少次数,
        阅读全文
                

 浙公网安备 33010602011771号
浙公网安备 33010602011771号