NOIP2002 字符变换
啊本来以为2002的题应该会比较友善于是很naive地像模拟一样用着stl乱玩结果死也过不了最后一个点qaq
心情很悲痛于是为了解放自我
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<string>
#include<map>
using namespace std;
],bb[];
];
];
map <string,bool> k;
int main(){
// freopen ("string.in","r",stdin);
// freopen ("string.out","w",stdout);
cin>>a>>b;
;
while (cin>>aa[j]>>bb[j]) j++;
j--;
,t=;
q[]=a;
k[a]=;
;
while (h<t){
string u=q[++h];
string l;
int d=tt[h];
if (u==b) {fl=tt[h];break;}
) {fl=;break;}
;
;i<=j;++i){
int sr=aa[i].length();
);
) continue;
;++o){
if (u.substr(o,sr)!=aa[i]) continue;
l=u;
l.replace(o,sr,bb[i]);
;;}
,k[l]=;
) {cout<<;}//先让我强行卡过最后一个点爽一下
}
}
}
) cout<<"NO ANSWER!";
else cout<<fl;
;
}
后来想了一下这样还是不太好
去网上看了一下双向广搜 大概就是一种在知道初始并且也知道目标状态的情况下的优化型搜索
一般有两种方法 一种是直接交替着搜 但是这种似乎有点问题 好像是说如果要交替应该是一层一层地交替
另外一种是相对而言更优秀一点的 就是每次选两边中状态更少的那一队进行扩展 这样能使扩展的节点更少一点吧
具体实现大概就是把原来的bfs分为两端 然后好像还可以用^操作
我实在是太懒了所以没怎么想好好打就把上面那个乱玩的随便复制了一遍 勉勉强强最后一点还是拖过了(本来就只想着要过最后一个点23333
一定是stl太慢了才不是我垃圾呢哼(睁眼说瞎话
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<string>
#include<map>
using namespace std;
],bb[];
],p[];
][];
map <];
map <string,int> kk;
int main(){
freopen ("string.in","r",stdin);
freopen ("string.out","w",stdout);
cin>>a>>b;
;
while (cin>>aa[j]>>bb[j]) j++;
j--;
,t=,hh=,ttt=;
q[]=a;
p[]=b;
k[][a]=;
k[][b]=;
;
while (h<t&&hh<ttt){
if (t<=ttt){
string u=q[++h];
string l;
][h];
) {fl=;break;}
;
;i<=j;++i){
int sr=aa[i].length();
);
) continue;
;++o){
if (u.substr(o,sr)!=aa[i]) continue;
l=u;
l.replace(o,sr,bb[i]);
][l]) {cout<<d++tt[][kk[l]];;
}
][l]) q[++t]=l,tt[][t]=d+,k[][l]=,kk[l]=t;
}
}
}
else{
string u=p[++hh];
string l;
][hh];
) {fl=;break;}
;
;i<=j;++i){
int sr=bb[i].length();
);
) continue;
;++o){
if (u.substr(o,sr)!=bb[i]) continue;
l=u;
l.replace(o,sr,aa[i]);
][l]) {cout<<d++tt[][kk[l]];;}
][l]) p[++ttt]=l,tt[][ttt]=d+,k[][l]=,kk[l]=ttt;
}
}
}
}
) cout<<"NO ANSWER!";
else cout<<fl;
;
}
NOIP2002 字符变换的更多相关文章
- 洛谷 P1032 字符变换
洛谷 P1032 字符变换 题目描述 已知有两个字串 A,B 及一组字串变换的规则(至多 6 个规则): A1 -> B1 A2 -> B2 规则的含义为:在 A 中的子串 A1 ...
- LuoguP1032 字符变换(BFS)
题目链接为:https://www.luogu.org/problemnew/show/P1032 思路:看到数据比较小,而且最多有6个规则,就可以用搜索去做了,我用的BFS,大体思路如下: 定义结构 ...
- python中实现打印特定字符变换
首先需要将 lib文件 放在该文件同一目录 使用的时候,先导入 from lib.common import print_msg ,然后调用里面的 print_msg() 方法即可! lib文件地址: ...
- $NOIp$提高组历年题目复习
写在前面 一个简略的\(NOIp\)题高组历年题目复习记录.大部分都有单独写题解,但懒得放\(link\)了\(QwQ\).对于想的时候兜了圈子的题打上\(*\). \(NOIp2018\ [4/6] ...
- $NOIp$提高组做题记录
对了我在这里必须讲一个非常重要的事情,就是前天也就是$2019.8.21$的傍晚,我决定重新做人了$!!$ 其实之前没怎么做$Noip$题,那就从现在开始叭
- hdu----(4545)魔法串(LCS)
魔法串 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submiss ...
- fw:sed的高级用法
转的,找不到原创了.... sed高级用法 <收藏> 首先,应该明白模式空间的定义.模式空间就是读入行所在的缓存,sed对文本行进行的处理都是在这个缓存中进行的.这对接下来 的学习是有帮助 ...
- Toad
1. Toad 规矩: toad 不会违反, 限制, 扩大 你当前用户的权限, toad 不会影响你定义的关于instance的内容. 2. toad 可以执行大部分在 sql*plus 中执行的命令 ...
- 进程间通信之popen和pclose函数
常见的操作是创建一个管道连接到另一个进程,然后读其输出或向其输入端发送数据,为此,标准I/O库提供了两个函数popen和pclose.这两个函数实现的操作是:创建一个管道,调用fork产生一个子进程, ...
随机推荐
- python学习笔记 map&&reduce
---恢复内容开始--- 1.map 1)map其实相当对吧运算符进行一个抽象,返回的是一个对象,但是这里不知道为什么不可以对一个map返回变量打印两次,难道是因为回收了? def f(x): ret ...
- 数字三角形-poj
题目要求: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 在上面的数字三角形中寻找在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大.路径上的每一步都只能往左 ...
- SQL知识目录
SQL理论知识 -------理论知识总结 -------理论知识总结 -------理论知识总结 -------理论知识总结 -------理论知识总结 -------理论知识总结 -------理 ...
- hibernate第一天
首先介绍一下javaEE开发的三层架构 Web层 也被称为表现层 它是表现层的一个设计模型:也就是大家常用的MVC开发模式 Service层 它是和需求相关的 DAO层 它只和数据 ...
- TCP/IP协议栈 ARP和RARP协议
上几章中我们提到以太网协议中,在以太网首部中一个帧类型的字段,它可以表示为IP ARP RARP协议. 这里说一下ARP 和RARP协议. 首先看ARP协议: 要想网络中的数据包准确到达某个主机,最后 ...
- phpcms网站搬家 至 服务器 完整并且详细过程
上传服务器空间后,才会通过搜索域名进行网页访问. 上传的过程肯定会有很多东西要修改,例如数据库怎么上传.路径怎么修改等..... 这就让大家看下,自己不断尝试后的完整搬家步骤!!! 一.上传服务器 ( ...
- 伸缩的菜单,用toggle()重写
<!DOCTYPE ><html><head><meta charset="UTF-8"/><title>伸缩的菜单,用 ...
- SOJ--Zig-Zag
Zig-Zag 在图形图像处理中经常须要将一个二维的图像矩阵转化为一维的向量.二维化一维的过程实际上就是将二维数组的元素按某种顺序构成一维数组. 一种经常使用的序列叫"Zig-Zag&quo ...
- android 自己创建一个凝视模板
android 自己创建一个凝视模板 作为一名程序猿 不仅要有一个写代码的能力,养成一个良好的编写习惯也是非常重要的. 今天给大家具体介绍一下怎样创建凝视模板,给每一个类和方法都自己手动去凝视信息也 ...
- 怎样提升 RailS 应用的性能?
Is rails slow? 「铁路非常慢」,你或许听过这个笑话,那么我们的 Rails 框架呢? 假设说 Rails 慢,那么怎样提升 Rails APP 的性能就成了开发人员们最关注的问题. 或许 ...