bzoj1055: [HAOI2008]玩具取名(dp)
2024-08-31 15:30:28
1055: [HAOI2008]玩具取名
题目:传送门
简要题意:
就是固定四个字母,给出这四个字母分别可以由哪两个字母组成,然后在给你一个字符串,要求把这个字符串还原成原始的四个字母的其中一个。
题解:
一开始看题有点瞎...想了想是一道超级大难题...
其实就是一个很简单的DP...
定义发f[i][j][s]:表示在字符串中i~j这个区间是否可以组合成为字符s
转移很容易就可以想出来:因为如果f[i][k][s1]==f[k+1][j][s2]==1(i<=k<=j) && s1和s2可以组成s,那么f[i][j][s]=1;
O(n^4)...大水题
代码:
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
char s[];
struct node
{
char s1,s2,id;
}st[];
bool f[][][];
int main()
{
int W,I,N,G;bool bk=false;
scanf("%d%d%d%d",&W,&I,&N,&G);
int len=;
for(int i=;i<=W;i++)
scanf("%s",s+),st[++len].s1=s[],st[len].s2=s[],st[len].id='W';
for(int i=;i<=I;i++)
scanf("%s",s+),st[++len].s1=s[],st[len].s2=s[],st[len].id='I';
for(int i=;i<=N;i++)
scanf("%s",s+),st[++len].s1=s[],st[len].s2=s[],st[len].id='N';
for(int i=;i<=G;i++)
scanf("%s",s+),st[++len].s1=s[],st[len].s2=s[],st[len].id='G';
scanf("%s",s+);
int len1=strlen(s+);
memset(f,,sizeof(f));
for(int i=;i<=len1;i++)f[i][i][s[i]]=true;
for(int i=;i<=len1;i++)//长度
for(int l=;l<=len1-i+;l++)//左端点
{
int r=l+i-;
for(int j=l;j<=r;j++)//断点
for(int k=;k<=len;k++)//枚举所有种类的字符串
if(f[l][j][st[k].s1] && f[j+][r][st[k].s2])
f[l][r][st[k].id]=true;
}
W='W';I='I';N='N';G='G';
if(f[][len1][W])printf("W"),bk=true;
if(f[][len1][I])printf("I"),bk=true;
if(f[][len1][N])printf("N"),bk=true;
if(f[][len1][G])printf("G"),bk=true;
if(bk==false)printf("The name is wrong!\n");
return ;
}
最新文章
- 数据结构算法C语言实现(十七)--- 5.1&;5.2数组:定义、顺序表示及实现
- 用python下载辞典
- jsf taglib定义函数
- [Design Pattern] Front Controller Pattern 简单案例
- rsync+inotify实现服务器之间文件实时同步--转
- C#委托的详细使用
- 银联+移动+三星PK微信、余额宝
- hdu_5677_ztr loves substring(回文+二维多重背包)
- 第九篇 C#实现螺旋矩阵
- 201521123008《Java程序设计》第十三周学习总结
- IT连创业系列:近期功能调整(小魔术功能从二级目录调整到一级栏目)
- linux系统设置cpu孤立
- Mybatis框架基础支持层——反射工具箱之MetaClass(7)
- 分布式系列六: WebService简介
- 容器加載Web工程的Web.xml文件介紹
- State状态模式
- 前后端跨域 _ cross domain
- 数组指针与指针数组(good)
- Python 构建方便的函数调用
- [boost] : lightweight_test库
热门文章
- HDU——T The King’s Problem
- android:px,dp(dip),sp的差别
- Android px,dp,pt,sp的差别
- Javaee 应用分层架构
- m_Orchestrate learning system---一、amazeui如何使用
- Photoshop CC (2015.2) 2016.1 版
- Ubuntu 14.04下安装CUDA8.0
- mac下maven的安装配置与使用
- javascript----三目运算符
- 原生的ajax请求----(播放托管到爱奇艺上的视频)