Bzoj3791:作业:DP
来源:互联网 发布:数据库市场占有率 2016 编辑:程序博客网 时间:2024/06/05 04:14
题目链接:3791:作业
一段序列用K种不同的颜色染色最多染成2*K-1段
然会就可以考虑dp了
设dp[i][j][k]表示染到了第i个作业,共染了j段,当前染的颜色为k(k为0/1)
如果当前颜色和上一段一样,dp[i][j][k]=max(dp[i][j][k],dp[i-1][j][k]+(a[i]==k));
否则如果染得不一样,也就是多染了一段,dp[i][j][k]=max(dp[i][j][k],dp[i-1][j-1][k^1]+(a[i]==k));
i这一维用滚动数组滚一下即可
#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int maxn=500010;int n,K,dp[2][100][2],a[maxn],ans=0;int main(){scanf("%d%d",&n,&K);for (int i=1;i<=n;++i) scanf("%d",&a[i]);dp[1][1][a[1]]=1; int cur=1;for (int i=2;i<=n;++i){cur^=1; for (int j=1;j<=K*2-1;++j) for (int k=0;k<2;++k){ dp[cur][j][k]=max(dp[cur][j][k],dp[cur^1][j][k]+(a[i]==k)), dp[cur][j][k]=max(dp[cur][j][k],dp[cur^1][j-1][k^1]+(a[i]==k)),ans=max(ans,dp[cur][j][k]);}}printf("%d",ans);}
4 0
- Bzoj3791:作业:DP
- 【bzoj3791】作业 dp
- BZOJ3791 作业 [DP]
- 【BZOJ3791】作业
- 【bzoj3791】作业
- bzoj3791 作业
- [ DP ] BZOJ3791
- 作业(Dp-贪心)
- 学校作业-Dp练习
- BZOJ 3791 作业 DP
- 【BZOJ 3791】作业 dp
- DP第二周作业
- DP作业指南
- 学校作业-Usaco DP水题
- 3791: 作业 思路题 DP
- 小灶第五次作业 dp
- 【bzoj3379】【区间DP】交作业
- hdu1074写作业,dp状态压缩
- 利用bind启动service
- ext2文件系统源代码之xattr_user.c
- 把本地的int类型的图片转换成drawable、Bitmap
- 第一遍 第二章算法
- 在Editplus配置PHP
- Bzoj3791:作业:DP
- ext2文件系统源代码之xattr_security.c
- Http协议访问DataSnap Rest 服务器 - 封三郎
- sizeof
- java语言程序设计第十版(Introduce to java 10th) 课后习题 chapter7-32
- Spark 性能相关参数配置详解-Storage篇
- RTSP实例解析
- 遗传算法学习心得
- 第一遍 第三章线性表