hihocoder 1251 Today Is a Rainy Day( 2015北京区域赛C题)
来源:互联网 发布:阿里大鱼 php短信demo 编辑:程序博客网 时间:2024/06/06 07:35
首先两种操作,一次性执行完2操作,最后再用1操作比混合着用1操作快。
所以先处理一次性执行操作完2操作,
也就是由123456 –> a1,a2,a3,a4,a5,a6
最多6 ** 6种转移
bfs预处理
最后再执行1操作,但不能每次都比较一次原序列和经过一系列2操作的现在的序列,需要一点技巧。(Tle了4发)
对于每一个数字k,统计它在the final list出现的次数c[ k },再记录它应该是数字k0的个数f[ k ][ k0 }
然后做变换时123456 –> a[1],a[2],a[3],a[4],a[5],a[6]
对于数字k,他还要做的变换次数=c[k}-f[k][a[ k } }
#include <iostream>#include <cstdio>#include <algorithm>#include <cstdlib>#include <stack>#include <vector>#include <cstring>#include <queue>#define msc(X) memset(X,-1,sizeof(X))#define ms(X) memset(X,0,sizeof(X))typedef long long LL;using namespace std;char org[120],nsr[120];struct _State{ int id,turn;};int turns[47000];int getid(int *a){ int ret=0; for(int i=0;i<6;i++) ret=a[i]%6+6*ret; return ret;}int geta(int id,int k){ while(++k<6) id/=6; return id%6==0?6:id%6;}void inti(void){ int a[6]={1,2,3,4,5,6}; msc(turns); turns[getid(a)]=0; queue<struct _State> q; struct _State tmp; tmp.id=getid(a),tmp.turn=0; q.push(tmp); while(!q.empty()){ tmp=q.front();q.pop(); int b[6]; for(int i=1;i<=6;i++) for(int j=1;j<=6;j++) if(i!=j){ struct _State tn; for(int k=0;k<6;k++) if((b[k]=geta(tmp.id,k))==i) b[k]=j; tn.id=getid(b); if(turns[tn.id]==-1){ turns[tn.id]=tn.turn=tmp.turn+1; q.push(tn); } } }}int main(int argc, char const *argv[]){ inti(); for(int id=0;id<46656;id++) if(turns[id]==-1) turns[id]=0x3f3f3f3f;//记得把无法直接用操作2达到的标记一下 while(scanf("%s%s",org,nsr)!=EOF){ int ans=120; int f[7][7]; int c[7]; ms(f); ms(c); for(int i=0;nsr[i];i++) { c[nsr[i]-'0']++; f[nsr[i]-'0'][org[i]-'0']++; } for(int id=0;id<46656;id++) { int tmp=turns[id]; int a[6]; for(int k=0;k<6;k++) { a[k]=geta(id,k); tmp+=c[k+1]-f[k+1][a[k]]; } ans=min(ans,tmp); } printf("%d\n",ans); } return 0;}
0 0
- hihocoder 1251 Today Is a Rainy Day( 2015北京区域赛C题)
- hihocoder 1251 Today Is a Rainy Day 2015北京区域赛C
- hihocoder 1251 Today Is a Rainy Day (2015ICPC北京C题)
- 2015 北京区域赛 Today Is a Rainy Day(暴搜)
- hihoCoder 1251 Today Is a Rainy Day(暴力)
- 2015Beijing区域赛(Today Is a Rainy Day-暴搜)
- UVALive7263-Today Is a Rainy Day(2015ICPC北京C题)-模拟+BFS
- ICPC 2015 北京 Today Is a Rainy Day
- 2015ACM-ICPC 北京赛区 Problem C. Today Is a Rainy Day
- 2015北京现场赛UVALive 7263 Today Is a Rainy Day 【bfs】
- hiho1251Today Is a Rainy Day【2015北京现场赛】BFS
- UVALive 7263 Today Is a Rainy Day(BFS预处理)
- BFS预处理 hihoCoder1251 Today Is a Rainy Day
- UVALive - 7263 Today Is a Rainy Day (BFS预处理)
- Today is a good day
- Today is a special day
- Today is a beautiful day!!!
- HDU 5124 hihocoder 1249 Xiongnu's Land (2015北京区域赛A)
- try-catch 中 try块中 return执行问题
- 创建沉浸式状态栏及兼容性适配
- 欢迎使用CSDN-markdown编辑器
- [Linux C编程]信号发送捕捉kill() raise() alarm() pause()
- 文章标题
- hihocoder 1251 Today Is a Rainy Day( 2015北京区域赛C题)
- 考研复习:极限未定式求解
- 4. APP 接口实例
- 7 java se(7)----网络编程(Socket编程)
- 洛谷P1156 垃圾陷阱
- 99%的人都会答错的js面试题
- python数据结构学习笔记-2016-10-28-02-使用链表实现稀疏矩阵
- 郝斌的C语言基础 017
- JSON 传值