bzoj 4565 状压区间dp
我还以为我状压很好。。。。。。
噗!!!
果然我区间很差。。。
f[i][j][s]表示i~j段,合并后的状态为s所得的最大收益
枚举i,j,k,s.
f[i][j][s<<1]=max(f[i][j][s<<1],f[i][k−1][s]+f[k][j][0])
f[i][j][s<<1|1]=max(f[i][j][s<<1|1],f[i][k−1][s]+f[k][j][1])
就这样……
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
#define N 350
#define LL long long
char ch[N];
int n,m,nxt[N],a[N],bit[10];
LL val[N],ans,f[N][N][1<<8],maxn[2];
using namespace std;
int main()
{
bit[0]=1;for(int i=1;i<=9;i++)bit[i]=bit[i-1]<<1;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
ch[i]=getchar();
while(ch[i]!='0'&&ch[i]!='1')ch[i]=getchar();
a[i]=ch[i]-'0';
}
for(int i=0;i<bit[m];i++)
scanf("%d%lld",&nxt[i],&val[i]);
memset(f,-1,sizeof f);
for(int i=1;i<=n;i++)f[i][i][a[i]]=0;
for(int l=2;l<=n;l++){
for(int i=1;i<=n-l+1;i++){
int j=i+l-1,len=l;
while(len>=m)len-=m-1;
for(int k=j;k>i;k-=m-1){
for(int s=0;s<bit[len==1?m-1:len-1];s++){
if(f[i][k-1][s]!=-1){
if(f[k][j][0]!=-1)f[i][j][s<<1]=max(f[i][j][s<<1],f[i][k-1][s]+f[k][j][0]);
if(f[k][j][1]!=-1)f[i][j][s<<1|1]=max(f[i][j][s<<1|1],f[i][k-1][s]+f[k][j][1]);
}
}
}
if(len==1){
maxn[0]=maxn[1]=-1;
for(int s=0;s<bit[m];++s)
if(f[i][j][s]!=-1)
maxn[nxt[s]]=max(maxn[nxt[s]],f[i][j][s]+val[s]);
f[i][j][0]=maxn[0];f[i][j][1]=maxn[1];
}
}
}
for(int i=0;i<=bit[m-1];i++)ans=max(ans,f[1][n][i]);
printf("%lld\n",ans);
return 0;
}
bzoj 4565 状压区间dp的更多相关文章
- BZOJ 4565 状压DP
思路: f[i][j][S]表示从i到j压成S状态 j-m是k-1的倍数 $f[i][j][S<<1]=max(f[i][j][S<<1],f[i][m-1][S]+f[m][ ...
- bzoj 1879 状压dp
879: [Sdoi2009]Bill的挑战 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 852 Solved: 435[Submit][Status ...
- bzoj 1087 状压dp
1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4130 Solved: 2390[Submit][ ...
- BZOJ 2064 - 状压DP
传送门 题目大意: 给两个数组, 数组中的两个元素可以合并成两元素之和,每个元素都可以分裂成相应的大小,问从数组1变化到数组2至少需要多少步? 题目分析: 看到数据范围\(n<=10\), 显然 ...
- BZOJ 4057 状压DP
思路: 状压一下 就完了... f[i]表示选了的集合为i 转移的时候判一判就好了.. //By SiriusRen #include <cstdio> #include <cstr ...
- 【10.26校内测试】【状压?DP】【最小生成树?搜索?】
Solution 据说正解DP30行??? 然后写了100行的状压DP?? 疯狂特判,一算极限时间复杂度过不了aaa!! 然而还是过了....QAQ 所以我定的状态是待转移的位置的前三位,用6位二进制 ...
- bzoj 1068 [SCOI2007]压缩 区间dp
[SCOI2007]压缩 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 1644 Solved: 1042[Submit][Status][Discu ...
- 【BZOJ3925】[ZJOI2015] 地震后的幻想乡(状压期望DP)
点此看题面 大致题意: 有\(n\)个点和\(m\)条边,每条边的权值是一个\(0\sim1\)的随机实数,要你用\(n-1\)条边将图联通,问这\(n-1\)条边中边权最大值的期望最小值. 提示 这 ...
- HDU - 4804 Campus Design(状压+轮廓线dp)
Campus Design Nanjing University of Science and Technology is celebrating its 60th anniversary. In o ...
随机推荐
- jsJqGrid
/*展开收起*/ $(function() { initGridTable(); }); function change() { var flag = $("#searchTitle&quo ...
- java 垃圾回收总结(1)
java 垃圾回收总结(1) 以前看过很多次关于垃圾回收相关的文章,都只是看过就忘记了,没有好好的整理一下,发现写文章可以强化自己的记忆. java与C,c++有很大的不同就是java语言开发者不 ...
- Android面试题摘录
本文中面试题全部选自<精通Android>(英文名“Pro android 4”)一书的章后面试题,不过这套面试题与书中内容结合比较紧密,所以选择使用时请谨慎. ####C2:Androi ...
- 模仿天猫实战【SSM】——总结
第一篇文章链接:模仿天猫实战[SSM版]--项目起步 第二篇文章链接:模仿天猫实战[SSM版]--后台开发 总结:项目从4-27号开始写,到今天5-7号才算真正的完工,有许多粗糙的地方,但总算完成了, ...
- JWT实现用户权限认证
网上的java基础教程曾教会我们,将用户登录信息存在session(服务器端)中,需要验证的时候拿出来作对比以达到身份 验证的效果.但这种方式暴露的问题也是可想而知的: 1.Seesion:每次认证用 ...
- hadoop环境运行程序出现 Retrying connect to server 问题
程序运行时出现如下问题: 从网上查资料,有说重启format的..有说/etc/hosts出问题的... 反正都试了一遍..还是有这个问题 后来看日志,发现问题是访问服务器9001端口访问不到..开始 ...
- Spring Boot 事件和监听
Application Events and Listeners 1.自定义事件和监听 1.1.定义事件 package com.cjs.boot.event; import lombok.Data; ...
- MySQL数据库主从分离的配置方法
1.介绍 MySQL数据库设置读写分离,可以使对数据库的写操作和读操作在不同服务器上执行,提高并发量和响应速度.现在的网站一般大点的,都采用有数据库主从分离.读写分离,既起到备份作用也可以减轻数据库的 ...
- BOM和DOM的区别
一.BOM和DOM之间的关系图 window对象是BOM的顶层(核心)对象,所有对象都是通过它延伸出来的,也可以称为window的子对象由于window是顶层对象,因此调用它的子对象时可以不显示的指明 ...
- .net自定义错误页面实现升级篇
问题描述: 在上一篇博文 ".net自定义错误页面实现" 中已经介绍了在.net中如何实现自定义错误页面实现(有需要者可以去上一篇博文了解),单纯按照上一篇博文那样设置,能够实现所 ...