洛谷 P4290 [HAOI2008]玩具取名
洛谷 P4290 [HAOI2008]玩具取名
思路
博客半年没更新了,来更新个博文吧
在\(dsr\)聚聚博客的帮助下,我用半个上午和一个中午的时间苟延残喘地完成了这道题
先是读题目读大半天,最后连个样例都看不懂
之后又是想思路,实在想不出来,便去看了\(dsr\)学长的博客,发现是一道区间\(DP\)题
我们用\(f[i][j][k]\)来表示\(i\)、\(j\)这个区间能否压缩成为\(k\)这个字符
基本框架为
枚举长度len
枚举起点i
计算终点j
枚举中点k
起点到中点的check
中点到终点的check
转移
字符不多,所以是可以跑过去的
代码
#include <cstdio>
#include <string>
#include <cstring>
#include <iostream>
using namespace std;
inline int read() {
char c = getchar();
int x = 0, f = 1;
for( ; !isdigit(c); c = getchar()) if(c == '-') f = -1;
for( ; isdigit(c); c = getchar()) x = (x << 3) + (x << 1) + (c ^ 48);
return x * f;
}
int le[5], f[211][211][5];
bool z[5][5][5], flag;
char yuan[5], s[5], ss[211];
int calc(char w) {
if(w == 'W') return 1;
if(w == 'I') return 2;
if(w == 'N') return 3;
if(w == 'G') return 4;
}
int main() {
strcpy(yuan, " WING");
for(int i = 1; i <= 4; i++) le[i] = read();
for(int i = 1; i <= 4; i++) {
for(int j = 1; j <= le[i]; j++) {
scanf("%s", &s);
z[i][calc(s[0])][calc(s[1])] = 1;
}
}
scanf("%s", ss + 1);
int n = strlen(ss + 1);
for(int i = 1; i <= n; i++) f[i][i][calc(ss[i])] = 1;
for(int len = 1; len < n; len++) {//枚举长度
for(int i = 1; i <= n; i++) {//枚举起点
int j = i + len;
if(j > n) break;//终点
for(int k = i; k < j; k++) {//中点
for(int ip = 1; ip <= 4; ip++) {
if(f[i][k][ip]) {
for(int jp = 1; jp <= 4; jp++) {
if(f[k + 1][j][jp]) {
for(int kp = 1; kp <= 4; kp++) {
if(z[kp][ip][jp] == 1) {
f[i][j][kp] = 1;
}
}
}
}
}
}
}
}
}
for(int i = 1; i <= 4; i++) {
if(f[1][n][i]) {
flag = 1;
printf("%c", yuan[i]);
}
}
if(!flag) cout << "The name is wrong!\n";
return 0;
}
洛谷 P4290 [HAOI2008]玩具取名的更多相关文章
- 洛谷 4290 [HAOI2008]玩具取名 题解
P4290 [HAOI2008]玩具取名 题目描述 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后他会根据自己的喜好,将名字中任意一个字母用&qu ...
- bzoj1055 ||P4290 [HAOI2008]玩具取名
目录 链接 思路 代码 链接 luogu bzoj 思路 区间dp 然后\(f[i][j][k]\) 区间\([i,j]\)能否变成\(k\)字符 (字符当然得转化一下) 字符的个数不多,直接暴力\( ...
- P4290 [HAOI2008]玩具取名
传送门 $dp$ 设 $f[i][j][k]$ 表示初始为 $k$ 时,能否得到 $[i,j]$ 这一段子串 设 $pd[i][j][k]$ 表示长度为二的字符串 $ij$ 能否由 $k$ 得到 然后 ...
- DP【洛谷P4290】 [HAOI2008]玩具取名
P4290 [HAOI2008]玩具取名 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后他会根据自己的喜好,将名字中任意一个字母用"WI ...
- 【BZOJ1055】[HAOI2008]玩具取名(动态规划)
[BZOJ1055][HAOI2008]玩具取名(动态规划) 题面 BZOJ 洛谷 题解 裸的区间\(dp\),设\(f[i][j][W/I/N/G]\)表示区间\([i,j]\)能否由某个字母替换过 ...
- BZOJ1055: [HAOI2008]玩具取名[区间DP]
1055: [HAOI2008]玩具取名 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1588 Solved: 925[Submit][Statu ...
- BZOJ1055: [HAOI2008]玩具取名
... #include<bits/stdc++.h> using namespace std; int q[255]; char s[205]; char p[]={'W','I','N ...
- BZOJ 1055 [HAOI2008]玩具取名
1055: [HAOI2008]玩具取名 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1119 Solved: 653[Submit][Statu ...
- bzoj 1055 [HAOI2008]玩具取名(区间DP)
1055: [HAOI2008]玩具取名 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1258 Solved: 729[Submit][Statu ...
随机推荐
- Jsp自学1
jsp学习之初,我是用记事本(EditPlus)来进行编辑的,那么写好的jsp文件如何执行看到效果呢?不像html文件可以直接用浏览器打开,jsp文件需要先进行编译器的编译才能执行,而Tomcat就可 ...
- tensorflow: arg_scope()
with arg_scope(): 1.允许我们设定一些共享参数,并将其进行保存,必要时还可以嵌套覆盖 2.在指定的函数调用时,可以将一些默认参数塞进去. 接下来看一个tensorflow自带的例子. ...
- Missing artifact com.lowagie:itextasian:jar:2.1.7
在maven中添加iTextAsian支持 导入maven项目 发现pom.xml文件 中这个依赖报错:Missing artifact com.lowagie:itextasian:jar:2. ...
- LINQ 之 SelectMany
声明:本文为www.cnc6.cn原创,转载时请注明出处,谢谢! 一.第一种用法: public static IEnumerable<TResult> SelectMany<TSo ...
- Prometheus监控学习笔记之Prometheus查询无数据或者Grafana不显示数据的诡异问题
0x00 概述 Prometheus和Grafana部署完成后,网络正常,配置文件正常,抓取agent运行正常,使用curl命令获取监控端口数据正常,甚至Prometheus内的targets列表内都 ...
- 禁止直接通过IP访问--->nginx
在nginx.conf 中添加 server{ listen 80 default_server; return 501; } 注: nginx加载include是按顺序,如果是文件夹,就是文件顺序, ...
- WPF toolkit AutoCompleteBox
checked http://www.broculos.net/2014/04/wpf-autocompletebox-autocomplete-text.html#.WGNnq4N95aQ. 1.S ...
- linq 数据库已存在,直接添加数据
using System.Data.Linq;using System.Data.Linq.Mapping; namespace ConsoleApplication1388{ class Progr ...
- C++矢量图形库系列(转)
转自:http://blog.sina.com.cn/s/blog_4265e1760100lg03.html 本系列篇章的主要内容是讲解矢量图形库的编译.开发和使用.并不对他们周边的内容做过多的描述 ...
- python计算不规则图形面积算法
介绍:大三上做一个医学影像识别的项目,医生在原图上用红笔标记病灶点,通过记录红色的坐标位置可以得到病灶点的外接矩形,但是后续会涉及到红圈内的面积在外接矩形下的占比问题,有些外接矩形内有多个红色标记,在 ...