[bzoj1055][HAOI2008]玩具取名(区间dp)
来源:互联网 发布:中国蝉的种类知乎 编辑:程序博客网 时间:2024/05/08 22:08
传送门
数据范围200,
读入时记录下来所有的替换方案,然后就可以记忆化搜索了。
状态:
然后dp即可。
代码:
#include<cstdio>#include<cstring>#include<iostream>#include<cmath>#include<algorithm>#include<cstdlib>#define ll long longusing namespace std;inline int read(){ int x=0;char ch=' ';int f=1; while(ch!='-'&&(ch<'0'||ch>'9'))ch=getchar(); if(ch=='-')f=-1,ch=getchar(); while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar(); return x*f;}int to[150];int cnt[4];int W,I,N,G,len;int g[4][20][2];bool f[201][201][4];int vis[201][201][4];int s[201];void dp(int l,int r,int c){ if(vis[l][r][c])return; if(l==r){ f[l][r][c]=(s[l]==c); return; } for(int i=l;i<r;i++){ for(int k=1;k<=cnt[c];k++){ dp(l,i,g[c][k][0]); dp(i+1,r,g[c][k][1]); if(f[l][i][g[c][k][0]]&&f[i+1][r][g[c][k][1]]){ f[l][r][c]=1; } } } vis[l][r][c]=1;}int main(){ to['W']=0;to['I']=1;to['N']=2;to['G']=3; cnt[0]=W=read();cnt[1]=I=read();cnt[2]=N=read();cnt[3]=G=read(); for(int i=1;i<=W;i++){ char ch[3]; scanf("%s",ch); g[0][i][0]=to[ch[0]]; g[0][i][1]=to[ch[1]]; } for(int i=1;i<=I;i++){ char ch[3]; scanf("%s",ch); g[1][i][0]=to[ch[0]]; g[1][i][1]=to[ch[1]]; } for(int i=1;i<=N;i++){ char ch[3]; scanf("%s",ch); g[2][i][0]=to[ch[0]]; g[2][i][1]=to[ch[1]]; } for(int i=1;i<=G;i++){ char ch[3]; scanf("%s",ch); g[3][i][0]=to[ch[0]]; g[3][i][1]=to[ch[1]]; } char ch[201]; scanf("%s",ch); len=strlen(ch); for(int i=0;i<len;i++){ s[i+1]=to[ch[i]]; } dp(1,len,0); dp(1,len,1); dp(1,len,2); dp(1,len,3); int flag=1; if(f[1][len][0])printf("W"),flag=0; if(f[1][len][1])printf("I"),flag=0; if(f[1][len][2])printf("N"),flag=0; if(f[1][len][3])printf("G"),flag=0; if(flag)printf("The name is wrong!"); return 0;}
阅读全文
0 0
- [bzoj1055][HAOI2008]玩具取名(区间dp)
- 【BZOJ1055】[HAOI2008]玩具取名【区间DP】【状压】
- bzoj1055[HAOI2008]玩具取名 (区间dp)
- bzoj1055 [HAOI2008]玩具取名[区间DP]
- BZOJ1055: [HAOI2008]玩具取名 区间DP
- bzoj1055 [HAOI2008]玩具取名(区间)
- [BZOJ1055][HAOI2008]玩具取名(dp)
- bzoj1055: [HAOI2008]玩具取名 dp
- [DP] BZOJ1055: [HAOI2008]玩具取名
- BZOJ1055:玩具取名(区间dp)
- BZOJ1055 玩具取名 [区间DP]
- bzoj1055【HAOI2008】玩具取名
- bzoj1055: [HAOI2008]玩具取名
- BZOJ1055: [HAOI2008]玩具取名
- BZOJ1055 [HAOI2008]玩具取名
- bzoj1055 [HAOI2008]玩具取名
- 【BZOJ1055】【HAOI2008】玩具取名
- bzoj1055 [HAOI2008]玩具取名
- Codeforces 600E Lomsat gelral (启发式合并)
- java将数据写入csv文件,从csv文件中读取数据
- 控制台程序生成窗口
- CodeForces
- Python2 列表方法
- [bzoj1055][HAOI2008]玩具取名(区间dp)
- ZooKeeper源码(3)server包非核心类
- ss安装并开启BBR算法
- NOI 2002 机器人M号 欧拉函数
- opencv-python(1):读入、显示、保存图像
- 2015ACM/ICPC亚洲区沈阳站-重现赛(感谢东北大学) Meeting(SPAF+拆点)
- 表格
- 最大的矩形
- [BZOJ]1101 莫比乌斯+分块优化