bzoj1055
不难想到是一个布尔型dp,
不难想到用f[i,j,k]表示区间[i,j]能否变为字母k
不难想到对于f[i,j,k],拆[i,j]成两个区间,然后穷举k的每一个变换来判断
感觉记忆化搜索写的比较顺,就写了记忆化
const a:array[..] of char=('W','I','N','G');
var b:array[..] of longint;
f:array[..,..,..] of integer;
w:array[..,..] of longint;
c:array[..] of longint;
l,i,j,k,e,n,m,p:longint;
flag:boolean;
s:string;
function exc(x:char):longint;
begin
if x='W' then exit()
else if x='I' then exit()
else if x='N' then exit()
else if x='G' then exit();
end;
function search(l,r,k:longint):integer;
var i,j,x1,x2:longint;
begin
if f[l,r,k]<> then exit(f[l,r,k]);
if l=r then
begin
f[l,l,b[l]]:=;
if k=b[l] then exit()
else begin
f[l,l,k]:=-;
exit(-);
end;
end;
for i:= to c[k] do
begin
x1:=(w[k,i]-) div +;
x2:=(w[k,i]-) mod +;
for j:=l to r- do
begin
if (search(l,j,x1)=) and (search(j+,r,x2)=) then
begin
f[l,r,k]:=;
exit();
end;
end;
end;
f[l,r,k]:=-;
exit(-);
end;
begin
for i:= to do
read(c[i]);
readln;
for i:= to do
for j:= to c[i] do
begin
readln(s);
p:=(exc(s[])-)*+exc(s[]);
w[i,j]:=p;
end;
readln(s);
n:=length(s);
for i:= to n do
b[i]:=exc(s[i]);
flag:=false;
for i:= to do
if search(,n,i)= then
begin
write(a[i]);
flag:=true;
end;
if not flag then writeln('The name is wrong!') else writeln;
end.
bzoj1055的更多相关文章
- 【题解】 bzoj1055: [HAOI2008]玩具取名 (动态规划)
bzoj1055,懒得复制,戳我戳我 Solution: 区间动规(以后开始动规会在solution前面标注是啥动规 我觉的这道题挺难想了,但其实状态定义了一下子就出来了(还是不行啊) 我们定义状态\ ...
- 【BZOJ1055】[HAOI2008]玩具取名(动态规划)
[BZOJ1055][HAOI2008]玩具取名(动态规划) 题面 BZOJ 洛谷 题解 裸的区间\(dp\),设\(f[i][j][W/I/N/G]\)表示区间\([i,j]\)能否由某个字母替换过 ...
- 【bzoj1055】[HAOI2008]玩具取名
[bzoj1055][HAOI2008]玩具取名 2014年12月1日3,0111 Description 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名 ...
- [bzoj1055][HAOI2008]玩具取名_区间dp
玩具取名 bzoj-1055 HAOI-2008 题目大意:给你一个用W,I,N,G组成的字符串,给你一些这四个字符之间的变换规则,每一个变换规则都是由一个字符变成两个字符,问这个字符串是否可能是由一 ...
- 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】玩具取名 区间DP
1055: [HAOI2008]玩具取名 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1560 Solved: 907[Submit][Statu ...
- bzoj千题计划199:bzoj1055: [HAOI2008]玩具取名
http://www.lydsy.com/JudgeOnline/problem.php?id=1055 区间DP dp[i][j][k] 表示区间[i,j]能否合成k #include<cst ...
- bzoj1055 ||P4290 [HAOI2008]玩具取名
目录 链接 思路 代码 链接 luogu bzoj 思路 区间dp 然后\(f[i][j][k]\) 区间\([i,j]\)能否变成\(k\)字符 (字符当然得转化一下) 字符的个数不多,直接暴力\( ...
随机推荐
- c语言学习之基础知识点介绍(十五):函数的指针
一.函数的指针的介绍 /* 函数指针: 函数的指针,本质上一个指针 指向函数的指针,就是一个函数指针. 回忆:我们写的源代码编译成二进制的指令集,一串交给CPU执行的指令 先存在内存里面,然后CPU读 ...
- UIImagePickerController显示中文界面
iOS开发中,我们经常遇到获取拍照.相册中图片的功能,就必然少不了UIImagePickerController,但是我们发现当我们使用它的时候,它的页面是英文的,看着很别扭,国人还是比较喜欢看中文界 ...
- UVA 11300 Spreading the Wealth (数学推导 中位数)
Spreading the Wealth Problem A Communist regime is trying to redistribute wealth in a village. They ...
- bzoj2653:middle
思路:首先容易想到二分答案,但如何去check呢,对于一段区间[l,r],把所有小于答案的都赋值为-1,大于等于它的都赋值为1,然后求左端点在[a,b],右端点在[c,d]的最大子串和即可(也就是区间 ...
- bzoj1688: [Usaco2005 Open]Disease Manangement 疾病管理
思路:状压dp,枚举疾病的集合,然后判断一下可行性即可. #include<bits/stdc++.h> using namespace std; #define maxs 400000 ...
- Flash Professional CS6 安装zxp插件
说明 头两天因工作原因需要使用DragonBones,他的工作方式是的Flash Professional CS5.5以上的环境. DragonBones提供的是一个文件名为:xzp的文件,在Wind ...
- IOS 学习笔记 2015-03-27 我理解的OC-代理模式
案例1 KCButton.h // // KCButton.h // Protocol&Block&Category // // Created by Kenshin Cui on 1 ...
- 专题一、ArrayList增删操作技术细节详解
一.索引检查 1)在指定位置插入元素时,第一步都需要检查输入的指定位置是否合法 public void add(int index, E element){ rangeCheckForAdd(i ...
- 使用NPOI操作Excel
案例:用NPOI动态生成一个Excel表,然后弹出对话框让用户下载,文件名是"用户列表.xls" 先去相关网站下载 NPOI DLL文件,再引用 application/x-e ...
- 锋利的Jquery解惑系列(三)------ 各路选择器大聚会
申明:初次学习Jquery的选择器时只记得几个和css选择器类似的几个,在这里列出书上写上的各路选择器方便以后的查询和现在的学习 所有例子都来自书上 测试画面: 一.基本选择器 #id, $(&quo ...