题意:给你两个只由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的更多相关文章

  1. 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 ...

  2. (并查集)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 ...

  3. (二叉树)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)  ...

  4. 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 ...

  5. 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 ...

  6. 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 ...

  7. 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 ...

  8. 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 ...

  9. 【二分】【最长上升子序列】HDU 5489 Removed Interval (2015 ACM/ICPC Asia Regional Hefei Online)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5489 题目大意: 一个N(N<=100000)个数的序列,要从中去掉相邻的L个数(去掉整个区间 ...

随机推荐

  1. 持续集成工具Jenkins安装、部署、使用

    本文介绍jenkins,利用其做项目发布与持续集成交付工具. 一.Jenkins是什么? Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 1.持续的软件版本发布 ...

  2. POJ - 1330 Nearest Common Ancestors 最近公共祖先+链式前向星 模板题

    A rooted tree is a well-known data structure in computer science and engineering. An example is show ...

  3. virsh 命令最新整理。 每个“;”之后是正解

    1,migrate --domain --destURL --dname  --live(热迁移) migrate lf 192.168.16.3 dname 2,managedsave domain ...

  4. selenium grid应用1-多浏览器执行用例

    driver =webdriver.Remote(command_executor=’http://127.0.0.1:4444/wd/hub’, desired_capabilities=Desir ...

  5. C# 解决窗体闪烁

    C# 解决窗体闪烁 在Windows窗体上造成“闪烁”的窗体上有很多控制.造成这种闪烁的原因有两个: 1.当控件需要被绘制时,Windows发送一个控件两个消息.第一个(WM_ERASEBKGND)导 ...

  6. Linux打补丁的一些问题

    linuxpatchlinux内核文档commandheader类unix操作系统有一个很有趣的特性就是源代码级的补丁包.在windows上我们打补丁都是运行一个可执行的程序,然后就可以把补丁打完了, ...

  7. hdu 4678

    HDU 4768: Flyer 题意: 有N个社团,每个社团三个属性A,B,C,表示会向编号A+k*C的同学发传单(k=0,1,2...  && A+k*C <= B).题目保证 ...

  8. 转载--void指针(void *的用法)

    转自:jimmy 指针有两个属性:指向变量/对象的地址和长度 但是指针只存储地址,长度则取决于指针的类型 编译器根据指针的类型从指针指向的地址向后寻址 指针类型不同则寻址范围也不同,比如: int*从 ...

  9. Binary Tree Zigzag Level Order Traversal——关于广度优先的经典面试题

    Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to ...

  10. html5多媒体Video/Audio

    video:    1.常见的视频格式 视频的组成部分:画面.音频.编码格式 视频编码:H.264.theora.VP8(google开源)      2.常见的音频格式     编码:AAC.MP3 ...