![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
区间dp
花王江不语
这个作者很懒,什么都没留下…
展开
-
洛谷P3205合唱队
题链我以为我的思路很奇怪,而且以这种奇怪的方式还过了,但是看题解发现和我的思路是一样的dp还要分情况?再加维度!有点傻批了,还又浪费时间开个数组dptgo(i,1,n) dp[i][i][0]=1,dpt[i][i][0]=a[i];go(len,2,n){ for(int i=1;i+len-1<=n;++i){ int j=i+len-1; if(dpt[i+1][j][0]>a[i]) dp[i][j][0]=(dp[i][j][0]原创 2021-11-14 12:16:54 · 334 阅读 · 0 评论 -
高精度+区间dp 洛谷P1005矩阵取数游戏
两点教训:用 #define 自定义的东西是原模原样的替换过去在某些情况要记得加括号#define base (1000*1000*1000) z.a[i]+= ( (x.a[i]+y.a[i])%base ); z.a[i+1]+=(x.a[i]+y.a[i])/base;如果不加括号的话,就会变成z.a[i]+= ( (x.a[i]+y.a[i])%1000*1000*1000);z.a[i+1]+=(x.a[i]+y.a[i])/1000*1000*1000;原创 2021-11-13 22:48:13 · 2424 阅读 · 0 评论 -
洛谷P3146 [USACO16OPEN]248 G
题链区间dp写到目前的区间dp,都有这两个特征线性合并线性区间重复给定一个1*n的地图,在里面玩2048,每次可以合并相邻两个(数值范围1-40),问序列中出现的最大数字的值最大是多少。注意合并后的数值并非加倍而是+1,例如2与2合并后的数值为3。这翻译。。。我要是不知道2048是不是就不配做这道题每次可以合并相邻两个,,还要两个数相同#include<bits/stdc++.h>#define go(i,a,b) for(int i=a;i<=b;++i)#def原创 2021-11-12 19:45:03 · 411 阅读 · 0 评论 -
洛谷P1063 [NOIP2006 提高组] 能量项链
题链环形&区间环形的,在末尾 在复制一遍在末尾 从头开始复制区间问题, 处理每个长度的 每个区间的最优值a[1+n+n]=a[1];不知道测试数据的N有没有超一百,开的210长的数组有两个测试RE了#include<bits/stdc++.h>#define go(i,a,b) for(int i=a;i<=b;++i)#define ll long longusing namespace std;int a[400+10];int dp[400+10][4原创 2021-11-12 19:24:00 · 324 阅读 · 0 评论 -
环形石子合并
题链区间,环形区间动态规划,从小到大 枚举长度区间动态规划的特点是 线段被重复使用#include<bits/stdc++.h>#define go(i,a,b) for(int i=a;i<=b;++i)#define ll long longusing namespace std;int dpmi[200+10][200+10];int dpma[200+10][200+10];int a[200+10];int sum[200+10];int min(in原创 2021-11-12 18:06:08 · 193 阅读 · 0 评论 -
ccf 201612-4 压缩编码
#include<bits/stdc++.h>#define ll long longusing namespace std;ll a[1000+10],s[1000+10];ll dp[1000+10][1000+10];int main(){int n;cin>>n;for(int i=1;i<=n;++i){ scanf("%lld",&a[i]); s[i]=s[i-1]+a[i];}for(int i=1;i&原创 2021-11-04 18:36:43 · 95 阅读 · 0 评论