HihoCoder 1426 What a Ridiculous Election (BFS)
来源:互联网 发布:linux时间戳转换命令 编辑:程序博客网 时间:2024/05/09 01:29
思路:预处理12345能到达所有情况的最小步数即可
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <set>#include <map>#include <string>#include <cmath>#include <cstdlib>#include <ctime>#define INF 0x3f3f3f3f#define esp 1e-9typedef long long LL;using namespace std;const int maxn = 100000;int ans[maxn][5][5];struct Node{ int s[10];int op2,op3;int step;};int change(Node a){ int sum = 0;for(int i = 1;i<=5;i++){ sum+=a.s[i];sum*=10;}return sum/10;}void bfs(Node st){memset(ans,INF,sizeof(ans)); int n = change(st);queue<Node>q; st.op2 = 3; //jia 1st.op3 = 2; // *2st.step = 0;q.push(st);ans[n][st.op2][st.op3]=0;//printf("%d\n",ans[n][st.op2][st.op3]);while(!q.empty()){ Node u = q.front();q.pop();for(int i = 2;i<=5;i++){ Node tmpu = u;swap(tmpu.s[i],tmpu.s[i-1]);int t = change(tmpu);tmpu.step++;if(tmpu.step >= ans[t][tmpu.op2][tmpu.op3])continue;q.push(tmpu);ans[t][tmpu.op2][tmpu.op3]=tmpu.step;}if(u.op2>0){for(int i = 1;i<=5;i++){ Node tmpu = u;tmpu.op2--;tmpu.s[i] =(tmpu.s[i]+1)%10;int t = change(tmpu);tmpu.step++;if(tmpu.step >= ans[t][tmpu.op2][tmpu.op3])continue;q.push(tmpu);ans[t][tmpu.op2][tmpu.op3] = tmpu.step;}}if(u.op3>0){ for(int i = 1;i<=5;i++){ Node tmpu = u;tmpu.op3--;tmpu.step++;tmpu.s[i] = (tmpu.s[i]*2)%10;int t = change(tmpu);if(tmpu.step >= ans[t][tmpu.op2][tmpu.op3])continue;q.push(tmpu);ans[t][tmpu.op2][tmpu.op3]=tmpu.step;}}}//printf("%d\n",ans[12345][3][2]);}char s[10];Node tar;int main(){for(int i = 1;i<=5;i++)tar.s[i]=i;bfs(tar);while(scanf("%s",s+1)!=EOF){int anss = INF;Node a;for(int i = 1;i<=5;i++)a.s[i]=s[i]-'0';int ta = change(a);for(int i = 0;i<=3;i++)for(int j = 0;j<=2;j++)anss = min(anss,ans[ta][i][j]);if(anss==INF)printf("-1\n");else printf("%d\n",anss);} //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); return 0;}
0 0
- HihoCoder 1426 What a Ridiculous Election (BFS)
- Hihocoder 1426 E. What a Ridiculous Election (BFS)
- hihocoder 1426 What a Ridiculous Election
- hihocoder1426 What a Ridiculous Election(bfs预处理)
- 2016 ACM-ICPC 亚洲区域赛北京站E题 What a Ridiculous Election (BFS预处理)
- 2016北京区域赛E UVAlive 7672 题目:What a Ridiculous Election 带约束条件的BFS
- What a Simple Research HihoCoder
- hihocoder 1425 What a Beautiful Lake
- hihocoder 1427 What a Simple Research
- hihoCoder 1233 Boxes(bfs)
- hihocoder 1425What a Beautiful Lake(实验专用)
- HihoCoder 1233 Boxes(bfs打表)
- HihoCoder 1233 Boxes (bfs 状压)
- hihocoder#1654 : XY游戏(BFS)
- HihoCoder 1251 BFS预处理
- HihoCoder 1233 Boxes BFS
- Kindergarten Election(ZOJ3715)
- Election
- redis安装
- 关于电路交换、报文交换、分组交换、帧中继、ATM交换
- Add Two Numbers ---LeetCode
- 二分查找(C语言编写)
- 使用JDBC实现登录功能
- HihoCoder 1426 What a Ridiculous Election (BFS)
- ShardedJedisPool
- 甲由信息科技官网
- Java 泛型 <? super T> 中 super 怎么 理解?与 extends 有何不同?
- NYOJ17 单调递增最长子序列(最长单调递增子序列)
- 实时音视频
- 如何进行简单数据解析:
- 关于简单工厂模式与开闭原则的讨论(1)
- J2SE第六章——常用类(二)StringBuffer类