【BFS】【枚举】HihoCoder - 1251 - The 2015 ACM-ICPC Asia Beijing Regional Contest - C - Today Is a Rainy Day
题意:给你两个只由1~6组成的串,问你B串至少要经过几次操作变成A串。
一次操作要么选择一个种类的数,将其全部变成另一种类;要么选择一个数,将其变为另一个数。
可以证明,一定先进行一定数量的第一种操作,然后再进行一定数量的第二种操作。
所以可以BFS预处理序列每种数要变成哪种数所需要的代价。初始状态是123456,代表1->1,2->2,...,6->6,一共才6^6种状态。
然后再枚举一遍所有状态,把该种状态下,剩下的仍然不符的数强行变过去就行了,然后在所有答案中取个最小的。
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
int d[700000];
bool vis[700000];
int n,pw[10];
queue<int>q;
char s[125],s2[125];
int main(){
// freopen("c.in","r",stdin);
memset(d,0x7f,sizeof(d));
pw[0]=1;
for(int i=1;i<=6;++i){
pw[i]=pw[i-1]*10;
}
q.push(123456);
vis[123456]=1;
d[123456]=0;
int t[7];
while(!q.empty()){
bool used[7]={0};
int U=q.front(); q.pop();
for(int i=1;i<=6;++i){
if(!used[i]){
int e=0;
int wei=U/pw[i-1]%10;
for(int j=i;j<=6;++j){
if(wei==U/pw[j-1]%10){
used[j]=1;
t[++e]=j;
}
}
for(int j=1;j<=6;++j){
if(j!=wei){
int tmp=U;
for(int k=1;k<=e;++k){
tmp+=(j-wei)*pw[t[k]-1];
}
if(!vis[tmp]){
vis[tmp]=1;
d[tmp]=d[U]+1;
q.push(tmp);
}
}
}
}
}
}
while(scanf("%s%s",s2+1,s+1)!=EOF){
int ans=2147483647;
n=strlen(s+1);
for(int i=1;i<=6;++i){
for(int j=1;j<=6;++j){
for(int k=1;k<=6;++k){
for(int l=1;l<=6;++l){
for(int p=1;p<=6;++p){
for(int q=1;q<=6;++q){
int x=i*100000+j*10000+k*1000+l*100+p*10+q;
if(d[x]<2000000000){
int cnt=0;
for(int pp=1;pp<=n;++pp){
int tt;
if(s[pp]=='1'){
tt=i;
}
else if(s[pp]=='2'){
tt=j;
}
else if(s[pp]=='3'){
tt=k;
}
else if(s[pp]=='4'){
tt=l;
}
else if(s[pp]=='5'){
tt=p;
}
else{
tt=q;
}
if(tt+'0'!=s2[pp]){
++cnt;
}
}
ans=min(ans,cnt+d[x]);
}
}
}
}
}
}
}
printf("%d\n",ans);
}
return 0;
}
【BFS】【枚举】HihoCoder - 1251 - The 2015 ACM-ICPC Asia Beijing Regional Contest - C - Today Is a Rainy Day的更多相关文章
- hdu 5444 Elven Postman(二叉树)——2015 ACM/ICPC Asia Regional Changchun Online
Problem Description Elves are very peculiar creatures. As we all know, they can live for a very long ...
- (并查集)Travel -- hdu -- 5441(2015 ACM/ICPC Asia Regional Changchun Online )
http://acm.hdu.edu.cn/showproblem.php?pid=5441 Travel Time Limit: 1500/1000 MS (Java/Others) Memo ...
- (二叉树)Elven Postman -- HDU -- 54444(2015 ACM/ICPC Asia Regional Changchun Online)
http://acm.hdu.edu.cn/showproblem.php?pid=5444 Elven Postman Time Limit: 1500/1000 MS (Java/Others) ...
- 2015 ACM/ICPC Asia Regional Changchun Online HDU 5444 Elven Postman【二叉排序树的建树和遍历查找】
Elven Postman Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)T ...
- ACM ICPC Central Europe Regional Contest 2013 Jagiellonian University Kraków
ACM ICPC Central Europe Regional Contest 2013 Jagiellonian University Kraków Problem A: Rubik’s Rect ...
- 2019-2020 ICPC, Asia Jakarta Regional Contest (Online Mirror, ICPC Rules, Teams Preferred)
2019-2020 ICPC, Asia Jakarta Regional Contest (Online Mirror, ICPC Rules, Teams Preferred) easy: ACE ...
- HDU 5889 Barricade 【BFS+最小割 网络流】(2016 ACM/ICPC Asia Regional Qingdao Online)
Barricade Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total S ...
- HDU 5458 Stability(双连通分量+LCA+并查集+树状数组)(2015 ACM/ICPC Asia Regional Shenyang Online)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5458 Problem Description Given an undirected connecte ...
- 【二分】【最长上升子序列】HDU 5489 Removed Interval (2015 ACM/ICPC Asia Regional Hefei Online)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5489 题目大意: 一个N(N<=100000)个数的序列,要从中去掉相邻的L个数(去掉整个区间 ...
随机推荐
- 持续集成工具Jenkins安装、部署、使用
本文介绍jenkins,利用其做项目发布与持续集成交付工具. 一.Jenkins是什么? Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 1.持续的软件版本发布 ...
- POJ - 1330 Nearest Common Ancestors 最近公共祖先+链式前向星 模板题
A rooted tree is a well-known data structure in computer science and engineering. An example is show ...
- virsh 命令最新整理。 每个“;”之后是正解
1,migrate --domain --destURL --dname --live(热迁移) migrate lf 192.168.16.3 dname 2,managedsave domain ...
- selenium grid应用1-多浏览器执行用例
driver =webdriver.Remote(command_executor=’http://127.0.0.1:4444/wd/hub’, desired_capabilities=Desir ...
- C# 解决窗体闪烁
C# 解决窗体闪烁 在Windows窗体上造成“闪烁”的窗体上有很多控制.造成这种闪烁的原因有两个: 1.当控件需要被绘制时,Windows发送一个控件两个消息.第一个(WM_ERASEBKGND)导 ...
- Linux打补丁的一些问题
linuxpatchlinux内核文档commandheader类unix操作系统有一个很有趣的特性就是源代码级的补丁包.在windows上我们打补丁都是运行一个可执行的程序,然后就可以把补丁打完了, ...
- hdu 4678
HDU 4768: Flyer 题意: 有N个社团,每个社团三个属性A,B,C,表示会向编号A+k*C的同学发传单(k=0,1,2... && A+k*C <= B).题目保证 ...
- 转载--void指针(void *的用法)
转自:jimmy 指针有两个属性:指向变量/对象的地址和长度 但是指针只存储地址,长度则取决于指针的类型 编译器根据指针的类型从指针指向的地址向后寻址 指针类型不同则寻址范围也不同,比如: int*从 ...
- Binary Tree Zigzag Level Order Traversal——关于广度优先的经典面试题
Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to ...
- html5多媒体Video/Audio
video: 1.常见的视频格式 视频的组成部分:画面.音频.编码格式 视频编码:H.264.theora.VP8(google开源) 2.常见的音频格式 编码:AAC.MP3 ...