【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个数(去掉整个区间 ...
随机推荐
- JQuery的链式编程,隐式迭代是啥意思?
链式编程 1.好处 "一句话,链式编程可以省去很多重复的代码." 这话什么意思呢?举个例子. /*设置obj对象的两个属性*/ //普通做法是这样的 obj.name = '小明' ...
- NYOJ 231 Apple Tree (树状数组)
题目链接 描述 There is an apple tree outside of kaka's house. Every autumn, a lot of apples will grow in t ...
- imperva配置文件的导入导出
imperva配置文件的导入导出 Full_expimp.sh //进行备份 1导入 2导出 输入密码后 1 全部导出 是否想导出失败的数据 默认密码是system的密码 输入导出的路径 ...
- Swift中的指针类型
Swift编程语言为了能与Objective-C与C语言兼容,而引入了指针类型.尽管官方不建议频繁使用指针类型,但很多时候,使用指针能完成更多.更灵活的任务.比如,我们要实现一个交换两个整数值的函数的 ...
- oracle只要第一条数据SQL
select * from ( select * from COMMON_BIZREL_WF where sponsor is not null order by serialid ) where r ...
- jquery如何获取第一个或最后一个子元素
jquery如何获取第一个或最后一个子元素? 通过children方法,children("input:first-child") $(this).children(" ...
- java通过jdbc插入中文到mysql显示异常(问号或者乱码)
转自:https://blog.csdn.net/lsr40/article/details/78736855 首先本人菜鸡一个,如果有说错的地方,还请大家指出予批评 对于很多初学者来说,中文字符编码 ...
- IDE按住ctrl 打开单元 无效时 的方法
一般打开单元无效时 是由于程序有错误,若程序没有错误 可以重新build一下 再试. 若实在不行 就右键---open at cursor
- Appium+python 一个简单的登录测试实例
# coding=utf-8 from appium import webdriver import time import unittest import os import HTMLTestRun ...
- CSS Sprites的原理(图片整合技术)(CSS精灵)/雪碧图
CSS Sprites的原理(图片整合技术)(CSS精灵)/雪碧图 一.将导航背景图片,按钮背景图片等有规则的合并成一张背景图,即将多张图片合为一张整图,然后用background-positio ...