757D - Felicity's Big Secret Revealed

题目大意:给你一串有n(n<=75)个0或1组成的串,让你划最多n+1条分割线,第一条分割线的前面和最后一条分割线的后面

不算一段。设剩下的段里面的最大值为max,若1-max都在这些段里面出现过则算一个有效划分,问你总共有多少有效划分,

答案对1e9+7取模。

写的时候感觉是个dp,单就是想不出来,看了题解说是状态压缩dp,把出现过哪些数字当做状态,这样才写出来的QAQ。

思路:因为n<=75,我们列一下,最大值肯定不会超过20,这样我们就能状态压缩了。

dp[ i ][ j ]表示,最后一条划分线在第 i 个数后面,状态为 j 的划分数。这样我们就可以枚举划分的第一个数,

再枚举这个段的长度k,如果这个段对应的十进制的值为w,那么状态转移方程为 dp[ i + k -1 ] [ j | ( 1 << ( w - 1 ) ) ]+=dp[ i - 1 ][ j ];

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=;
const int M=;
const ll mod=1e9+;
int dp[N][(<<M)+];//dp[i][j] 表示最后一个划分线在i后面状态为j的划分数。
int a[N],n,pow2[];
int work(int l,int r,int len)
{
int c=len-,ans=;
for(int i=l;i<=r;i++)
{
ans+=a[i]*pow2[c];
c--;
}
return ans;
}
int main()
{
int up=<<M;
pow2[]=;
for(int i=;i<=;i++) pow2[i]=pow2[i-]*;
cin>>n;
for(int i=;i<=n;i++) scanf("%1d",&a[i]);
for(int i=;i<=n;i++) dp[i][]=;
for(int i=;i<=n;i++)
{
for(int j=;j<up;j++)
{
if(!dp[i-][j]) continue;
for(int k=;k<=n-;k++)//枚举长度最大不是5位 如00000001,这个wa了几次
{
if(i+k>n) break;
int w=work(i,i+k,k+);
if(w>) break;//这里不判断会RE
if(w>=) dp[i+k][j|(<<(w-))]=(dp[i+k][j|(<<(w-))]+dp[i-][j])%mod;
}
}
}
int ans=;
for(int i=;i<=n;i++)
{
int now=;
int p=;
for(int j=;j<=;j++)
{
p+=now;
ans=(ans+dp[i][p])%mod;
now*=;
}
}
cout<<ans<<endl;
return ;
}

Codeforces 757D - Felicity's Big Secret Revealed的更多相关文章

  1. CodeForces 757D Felicity's Big Secret Revealed(状压DP)

    题意:给定一个01串,一个有效的n切割定义如下:一个横杠代表一次切割,第一条横杠前面的01串不算,最后一条横杠后面的01串不算,将两个横杠中的01串转化成十进制数字,假设这些数字的最大值是MAX且这些 ...

  2. Codecraft-17 and Codeforces Round #391 (Div. 1 + Div. 2, combined)D. Felicity's Big Secret Revealed

    题目连接:http://codeforces.com/contest/757/problem/D D. Felicity's Big Secret Revealed time limit per te ...

  3. Codeforces 757 D. Felicity's Big Secret Revealed 状压DP

    D. Felicity's Big Secret Revealed   The gym leaders were fascinated by the evolutions which took pla ...

  4. 【codeforces 757D】Felicity's Big Secret Revealed

    [题目链接]:http://codeforces.com/problemset/problem/757/D [题意] 给你一个01串; 让你分割这个01串; 要求2切..n+1切; 对于每一种切法 所 ...

  5. Codeforces 757C. Felicity is Coming!

    C. Felicity is Coming! time limit per test:2 seconds memory limit per test:256 megabytes input:stand ...

  6. 【CodeForces】925 C.Big Secret 异或

    [题目]C.Big Secret [题意]给定数组b,求重排列b数组使其前缀异或和数组a单调递增.\(n \leq 10^5,1 \leq b_i \leq 2^{60}\). [算法]异或 为了拆位 ...

  7. [Codeforces Round #194 (Div. 2)] Secret 解题报告 (数学)

    题目链接:http://codeforces.com/problemset/problem/334/C 题目: 题目大意: 给定数字n,要求构建一个数列使得数列的每一个元素的值都是3的次方,数列之和S ...

  8. Codeforces Round #391 A B C D E

    A. Gotta Catch Em' All! 题意 从给定的字符串中选取字符,问可构成多少个\(Bulbasaur\) // 想到柯南里一些从报纸上剪汉字拼成的恐吓信_(:з」∠)_ Code #i ...

  9. ethereum/EIPs-1077 Executable Signed Messages

    https://github.com/alexvandesande/EIPs/blob/ee2347027e94b93708939f2e448447d030ca2d76/EIPS/eip-1077.m ...

随机推荐

  1. intellij idea 2018

    intellij idea 输入System.out.println()的快捷方法是:输入sout然后按tab键. 由于项目中引入了spring-boot-starter-test的依赖,也就是集成了 ...

  2. JavaScript常用函数总结

    1.test()方法 var str = "wzltestreg"; var reg = new RegExp("wzl", ""); al ...

  3. tessaract ocr简介

    Tesseract的历史Tesseract是一个开源的OCR引擎,惠普公司的布里斯托尔实验室在1984-1994年开发完成.起初作为惠普的平板扫描仪的文字识别引擎.Tesseract在1995年UNL ...

  4. 发现一sonar-runner bug

    最近在使用sonar-runner做代码扫描, 在windows环境运行多模块的扫描ok,但是在linux上sonar-runner扫描多模块报错: 先贴sonar-project.propertie ...

  5. Linux之常识小结[版本]

    1 linux内核版本 major.minor.patchlevel 主版本号.次版本号.修补次数 次版本号的意义:偶数稳定版,奇数不稳定版 注意:查看系统版本信息 方法1.uname -a 方法2. ...

  6. CentOS6.8安装配置sonarqube6.4

    下载最新版本的sonar(现在改名叫sonarqube) https://www.sonarqube.org/downloads/ 我下载的版本是Sonarqube6.4        1 使用前需要 ...

  7. Ngnix + Tomcat负载均衡架构

    一.nginx Nginx (发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.  其特点是占有内 ...

  8. Windows下 Robhess SIFT源码配置

    Robhess OpenSIFT 源码下载:传送门 为了进一步学习SIFT,选择论文就着代码看,在VS2013.OpenCV2.4.13下新建项目,跑一跑经典之作.由于将代码和Opencv配置好后还会 ...

  9. emmc基础技术8:操作模式4-data transfer mode

    1.前言 eMMC总线操作包含: boot mode, device identification mode interrupt mode data transfer mode 本文主要描述data ...

  10. dup,dup2函数【转】

    转自:http://eriol.iteye.com/blog/1180624 转自:http://www.cnblogs.com/jht/archive/2006/04/04/366086.html ...