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 ... 
随机推荐
- C++笔记018:构造函数的调用规则
			原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 一.默认构造函数 两个特殊的构造函数 1.默认无参构造函数 当类中没有定义构造函数时,编译器默认提供一个无参构造函数,并且其函数体为空 ... 
- vs工具
			首页 精选版块 论坛帮助 论坛牛人 论坛地图 专家问答 CSDN > CSDN论坛 > .NET技术 > 非技术区 返回列表 管理菜单 结帖 发帖 回复 关注 [推荐] Visual ... 
- 设置eclipse全局编码格式
			window--preference--general--workspace--text file encoding 
- werfault进程使用CPU率高
			werfault进程是Windows vista 错误报告进程,是用来向微软反馈报告.是安全的正常进程. 解决方法:1.打开控制面板”—“系统和维护”,点击“问题报告和解决方案”. 2.点击“更改设置 ... 
- 关于Linux和Unix的分析
			Linux操作系统即linux. Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软 ... 
- JAVA代码设置selector不同状态下的背景颜色
			代码实现Shape 代码实现Selector StateListDrawable与GradientDrawable 的运用 在Android开发中,我们时常会用到自定义drawable样式,在draw ... 
- 刚收到一个吃瓜群众看了肯定不信的offer!
			我教过了很多学生了,有的毕业后跟我依然保持联系,有的不知所踪,有的越混越好,有的没有什么变化,这让我不断思考,到底拉开人与人之间差距的是什么呢? 
- 视频压缩:I帧、P帧、B帧
			/*************************************************************************************************** ... 
- ubuntu11.04安装nginx+php+mysql
			先列参考内容,后面我再补充点东西: http://www.4wei.cn/archives/1001436 http://www.gidot.net/blog/article.asp?id=322 上 ... 
- Spring请求参数校验
			SpringMVC支持的数据校验是JSR303的标准,通过在bean的属性上打上@NotNull.@Max等进行验证.JSR303提供有很多annotation接口,而SpringMVC对于这些验证是 ... 
