hihocoder1426 What a Ridiculous Election(bfs预处理)
来源:互联网 发布:原版优化9 编辑:程序博客网 时间:2024/05/30 12:30
题目大意:给定一个5位数,可以进行一下变换:
①任选两个位进行交换(不限次数);
②任选一位进行加一,如果超过10则模除10(仅限三次);
③任选一位乘以2,如果超过10则模除10(仅限2次);
问这个五位数经过最少多少次变换能够成为12345;
如果可以,输出最小次数,否则输出-1;
解: 用bfs,模拟出所有的12345变换情况,开个三维数组 m[x][y][z] ,表示12345变换成x,②用了y次,③用了z次时的最少步数;
#include <iostream>#include <queue>#include <algorithm>#include <string.h>#include <string>using namespace std;struct pt{string s;int step1;int step2;int step;};bool operator <(pt a,pt b){return a.step>b.step;}pt st;int mi=0x3f3f3f3f;int m[100000][5][5];int change(string s){int sum;sum=s[0]-48;for (int i=1;i<5;i++)sum=sum*10+s[i]-48;return sum;}void bfs(){priority_queue<pt>q;pt p,pp;int nu;q.push(st);while (!q.empty()){pp=q.top();q.pop();p.step=pp.step+1; for (int i=0;i<4;i++) {p.step1=pp.step1;p.step2=pp.step2;p.s=pp.s;swap(p.s[i],p.s[i+1]);nu=change(p.s); if (m[nu][p.step1][p.step2]!=mi)continue;m[nu][p.step1][p.step2]=p.step;q.push(p); } if (pp.step1<3) { for (int i=0;i<5;i++) { p.s=pp.s; p.s[i]=((pp.s[i]-48)+1)%10+48; p.step1=pp.step1+1; p.step2=pp.step2; nu=change(p.s); if (m[nu][p.step1][p.step2]!=mi)continue; m[nu][p.step1][p.step2]=p.step; q.push(p); } } if (pp.step2<2) { for (int i=0;i<5;i++) { p.s=pp.s; p.s[i]=((pp.s[i]-48)*2)%10+48; p.step1=pp.step1; p.step2=pp.step2+1; nu=change(p.s); if (m[nu][p.step1][p.step2]!=mi)continue; m[nu][p.step1][p.step2]=p.step; q.push(p); } } }}int main(){st.step1=st.step2=st.step=0;st.s="12345";memset(m,0x3f3f3f3f,sizeof(m));m[12345][0][0]=0;bfs();string ss;while (cin>>ss){int minn=0x3f3f3f3f;for (int i=0;i<=3;i++) for (int j=0;j<=2;j++) minn=min(minn,m[change(ss)][i][j]); printf("%d\n",minn==0x3f3f3f3f?-1:minn);}return 0;}
阅读全文
0 0
- hihocoder1426 What a Ridiculous Election(bfs预处理)
- 2016 ACM-ICPC 亚洲区域赛北京站E题 What a Ridiculous Election (BFS预处理)
- HihoCoder 1426 What a Ridiculous Election (BFS)
- Hihocoder 1426 E. What a Ridiculous Election (BFS)
- hihocoder 1426 What a Ridiculous Election
- 2016北京区域赛E UVAlive 7672 题目:What a Ridiculous Election 带约束条件的BFS
- HDU 2102 A计划 (BFS + 预处理)
- Codeforces 128 A Statues【预处理+Bfs】
- BFS预处理 hihoCoder1251 Today Is a Rainy Day
- UVALive - 7263 Today Is a Rainy Day (BFS预处理)
- HDU3533 Escape —— BFS / A*算法 + 预处理
- UVALive 7263 Today Is a Rainy Day(BFS预处理)
- hihocoder1426||UVALive
- Election
- Election
- poj_3669_Meteor Shower(BFS+预处理)
- HDU 3567 BFS+预处理
- hdu5637 Transform (bfs+预处理)
- 练习:时间显示,文件内容显示,新建用户、组
- BZOJ 1260涂色 paint
- 蛇形填数
- 前向传播与反向传播代码
- 第一套线条型icon
- hihocoder1426 What a Ridiculous Election(bfs预处理)
- JavaScript的几种继承模式
- codevs 1506 传话 Tarjan 解题报告
- gcc
- 【bzoj 1600】建造栅栏(DP)
- 最大独立子集
- hdu1905(判断质数+快速幂)
- Coursera吴恩达 Deep Learning第二课第三周测验题Hyperparameter tuning, Batch Normalization, Programming Frameworks
- hdu 5242(贪心)