BZOJ 1055 区间DP
1055: [HAOI2008]玩具取名
Time Limit: 10 Sec Memory Limit: 162 MB
Submit: 1144 Solved: 668
[Submit][Status][Discuss]
Description
某人有一套玩具,并想法给玩具命名。首先他选择WING四个字母中的任意一个字母作为玩具的基本名字。然后他会根据自己的喜好,将名字中任意一个字母用“WING”中任意两个字母代替,使得自己的名字能够扩充得很长。现在,他想请你猜猜某一个很长的名字,最初可能是由哪几个字母变形过来的。
Input
第一行四个整数W、I、N、G。表示每一个字母能由几种两个字母所替代。接下来W行,每行两个字母,表示W可以用这两个字母替代。接下来I行,每行两个字母,表示I可以用这两个字母替代。接下来N行,每行两个字母,表示N可以用这两个字母替代。接下来G行,每行两个字母,表示G可以用这两个字母替代。最后一行一个长度不超过Len的字符串。表示这个玩具的名字。
Output
一行字符串,该名字可能由哪些字母变形而得到。(按照WING的顺序输出)如果给的名字不能由任何一个字母变形而得到则输出“The name is wrong!”
Sample Input
II
WW
WW
IG
IIII
Sample Output
HINT
W可以变成II所以IIII可以缩成WW IN均能变成WW所以WW又可以缩成I或者N 所以最终答案应该按照“WING”的顺序输出IN
[数据范围]
100%数据满足Len<=200,W、I、N、G<=16
#include<cstdio>
#include<iostream>
#include<cstring>
#include<vector>
using namespace std;
#define maxn 201
vector<int > mp[maxn];
int a,b,c,d,sum;
char ch[],s[];
int dp[][][];
char next[];
int str[];
void stt(char a[])
{
sum=;
if(a[]=='W')
{
sum+=;
}else if(a[]=='I')sum+=;else if(a[]=='N')sum+=;else if(a[]='G')sum+=;
sum*=;
if(a[]=='W')
{
sum+=;
}else if(a[]=='I')sum+=;else if(a[]=='N')sum+=;else if(a[]='G')sum+=;
}
int main()
{ next[]='W';str['W']=;
next[]='I';str['I']=;
next[]='N';str['N']=;
next[]='G';str['G']=;
scanf("%d%d%d%d",&a,&b,&c,&d);
for(int i=;i<=a;i++)
{
scanf("%s",ch);
stt(ch);
//cout<<sum<<endl;
mp[sum].push_back();
}
for(int i=;i<=b;i++)
{
scanf("%s",ch);
stt(ch);
mp[sum].push_back();
}
for(int i=;i<=c;i++)
{
scanf("%s",ch);
stt(ch);
mp[sum].push_back();
}
for(int i=;i<=d;i++)
{
scanf("%s",ch);
stt(ch);
mp[sum].push_back();
}
scanf("%s",s);
memset(dp,,sizeof(dp));
for(int i=;i<strlen(s);i++){
dp[i][i][str[s[i]]]=;
}
int n=strlen(s);
for(int l=;l<=n;l++)
{
for(int i=;i<n-l+;i++)
{
for(int k=i;k<i+l-;k++)
{
for(int j=;j<=;j++)
for(int h=;h<=;h++)
{
if(dp[i][k][j]&&dp[k+][i+l-][h])
{
for(int f=;f<mp[j*+h].size();f++)
{
dp[i][i+l-][mp[j*+h][f]]=;
}
}
}
}
}
}
int flag=;
for(int i=;i<=;i++)
if(dp[][n-][i])cout<<next[i],flag=;
if(!flag)cout<<"The name is wrong!";
cout<<endl;
return ;
}
代码君
BZOJ 1055 区间DP的更多相关文章
- BZOJ 1068 (区间DP)
题意:字符串的压缩,f[l][r][0]代表还没M,f[l][r][1]代表有M. #include<cstdio> #include<cmath> #include<c ...
- bzoj 1261 区间DP
首先我们知道ans=Σ(h[i]*f[i])=Σ(h[i]*d[i])/s=Σ(k(r[i]+1)+c)*d[i]/s=Σ(k*r[i]+(k+c))*d[i]/s 我们可以发现,除了k*r[i]之外 ...
- BZOJ 1260 - 区间dp
Magic Door 题目大意: 给一个字符串,问需要至少覆盖多少次. 题目分析 区间dp: dp[i][j]表示达到i~j这个状态的最少覆盖次数,分两种情况: s[i] == s[j]: 此时内层可 ...
- BZOJ 1090 - 区间dp
Magic Door 题目大意: 给一个字符串,可以将重复的串缩成x(a),表示x个a,求能缩成的最小长度. 题目分析 区间dp: dp[i][j]表示i~j处理后的最小长度, 则有 \[dp[i][ ...
- tyvj 1055 区间dp
P1055 沙子合并 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 设有N堆沙子排成一排,其编号为1,2,3,…,N(N<=300).每堆沙子 ...
- bzoj 1996 区间dp
1996: [Hnoi2010]chorus 合唱队 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 1727 Solved: 1115[Submit][ ...
- [CQOI2007]涂色 BZOJ 1260 区间dp
题目描述 假设你有一条长度为5的木版,初始时没有涂过任何颜色.你希望把它的5个单位长度分别涂上红.绿.蓝.绿.红色,用一个长度为5的字符串表示这个目标:RGBGR. 每次你可以把一段连续的木版涂成一个 ...
- BZOJ 2037 区间DP
跟POJ 3042是一个类型的http://blog.csdn.net/qq_31785871/article/details/52954924 思路: 先排个序 (把初始位置也插进去) f[i][j ...
- bzoj1055玩具取名——区间DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1055 区间DP,注意初始化!! 因为没记忆化,TLE了一晚上,区间DP尤其要注意不重复递归! ...
随机推荐
- layui timeline使用
使用layui timeline过程记录: layui官网时间线介绍比较少,可能是太简单了,这里把时间线通过请求后台数据.再自动填写到对应区块,进行了封装: 代码如下: function timeli ...
- React开发实时聊天招聘工具 -第四章 Redux
复杂以后 setState 就不太方便了 所以使用Redux来管理 React只负责View. Store.State.Dispatch.Reducer reducer(state,action) { ...
- cssrefresh.js-CSS文件自动刷新
一.如何使用cssrefresh.js 使用很简单,类似下面的代码: <head> <link rel="stylesheet" type="text/ ...
- 全国绿色计算大赛 模拟赛第一阶段(Python)
第1关求和 class Task: def getSum(self, num1, num2): sum = 0 for i in range(num1, num2 + 1): while (i != ...
- 在SpringBoot框架中使用拦截器
1.继承WebMvcConfigureAdapter类,覆盖其addInterceptors接口,注册我们自定义的拦截器 package com.eth.wallet.config; import c ...
- YOLOv3配置(win10+opencv3.40+cuda9.1+cudnn7.1+vs2015)
最近心血来潮想学一下YOLOv3,于是就去网上看了YOLOv3在win10下的配置教程.在配置过程中塌坑无数,花了很多时间和精力,所以我想就此写一篇博客来介绍在在win10+vs2015的环境下如何配 ...
- Codeforces 805 D Minimum number of steps
题意: 给定一串字符串,将所有“ab”的子串替换为“bba”,询问多少次操作后没有子串“ab”. 分析: 观察可得,将“ab”替换为“bba”有两种结果. ①a移到了b的后面 ②增加了一个b 而且最终 ...
- python后端开发工程师考证试题
python开发工程师考证试题 问答题链接 python开发工程师考证试题 选择题 题目 关于 Python 程序格式框架的描述,以下选项中错误的是 ( A ) A: Python 语言不采用严格的“ ...
- AspNetPager控件的简单使用
1.首先引用这个控件. 在前台页面上修改一些属性. <webdiyer:AspNetPager ID=" AlwaysShow="true" FirstPageTe ...
- Chrome new features
Chrome new features copy fetch url fetch("http://10.1.5.202/deploy/http/send/svnuser", { & ...