BFS-hdu-1226-超级密码
来源:互联网 发布:南通seo招聘 编辑:程序博客网 时间:2024/06/07 02:41
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1226
题目意思:
给一个N,给nn个jj进制的数字,问最小的不超过500位的由这些数字组成的jj进制数是十进制数N的正整数倍。
解题思路:
BFS。
因为N<=5000,所以用余数判重。
代码:
#include<iostream>#include<cmath>#include<cstdio>#include<cstdlib>#include<string>#include<cstring>#include<algorithm>#include<vector>#include<map>#include<set>#include<stack>#include<list>#include<queue>#define eps 1e-6#define INF 0x1f1f1f1f#define PI acos(-1.0)#define ll __int64#define lson l,m,(rt<<1)#define rson m+1,r,(rt<<1)|1//#pragma comment(linker, "/STACK:1024000000,1024000000")using namespace std;/*freopen("data.in","r",stdin);freopen("data.out","w",stdout);*/bool vis[5500];char save[20];int n,jj,nn;struct Inf{ string s; int m,len;};bool cmp(char a,char b){ return int(a)<int(b);}void bfs(){ memset(vis,false,sizeof(vis)); queue<Inf>myq; for(int i=1;i<=nn;i++) { if(save[i]=='0') continue; Inf tmp; tmp.s="",tmp.len=1; tmp.s+=save[i]; tmp.m=((save[i]>='0'&&save[i]<='9')?(save[i]-'0'):(10+save[i]-'A'))%n; if(tmp.m==0) //只有一位的情况 特殊处理 { cout<<tmp.s<<endl; return ; } vis[tmp.m]=true; myq.push(tmp); } while(!myq.empty()) { Inf tt=myq.front(); myq.pop(); for(int i=1;i<=nn;i++) { int aa=(save[i]>='0'&&save[i]<='9')?(save[i]-'0'):(10+save[i]-'A'); int t=(tt.m*jj+aa)%n; if(!t) //不小于2位的情况 { cout<<tt.s; printf("%c\n",save[i]); return ; } if(vis[t]) continue; vis[t]=true; Inf cur; cur.len=tt.len+1; if(cur.len>=500) //超过500位 continue; cur.s=tt.s+save[i]; cur.m=t; myq.push(cur); } } printf("give me the bomb please\n"); return ;}int main(){ int t; scanf("%d",&t); while(t--) { scanf("%d%d%d",&n,&jj,&nn); getchar(); //fflush(stdin); //由于这句话 ,wa了一上午 for(int i=1;i<=nn;i++) scanf("%s",save+i); //save[nn+1]='\0'; sort(save+1,save+nn+1,cmp); if(n==0) { if(save[1]=='0') printf("0\n"); else printf("give me the bomb please\n"); continue; } //printf("%s\n",save+1); bfs(); } return 0;}
- hdu 1226 超级密码bfs
- HDU 1226 超级密码(BFS)
- BFS-hdu-1226-超级密码
- hdu 1226 超级密码 bfs
- hdu 1226 超级密码【BFS】
- 【hdu】1226 超级密码【bfs】
- hdu 1226 超级密码 bfs
- Hdu-1226-超级密码 [bfs]
- [HDU 1226]超级密码:BFS
- HDU 1226超级密码(数位BFS)
- hdu 1226 超级密码 bfs+取余判重
- HDU 1226 超级密码 (bfs好题)
- HDU 1226 超级密码(BFS)
- hdu-超级密码(BFS)
- HDU 1266 超级密码 bfs
- hdu 1226 超级密码 (bfs+取余判重 poj 1465加强版 )
- hdu 1226 超级密码 BFS 挺不错的题啊!
- hdu 1226 超级密码(BFS,同余剪枝)
- cocos2d-x+Tiledmap中实现自由跳跃和移动
- Hdu 3887 Counting Offspring \ Poj 3321 Apple Tree \BZOJ 1103 [POI2007]大都市meg
- POJ 2498 Martian Mining
- 系统重装 三种系统安装方法,图文教程,详细讲解,附带系统工具和系统
- IOS cocos2d学习笔记-<二>CCScene、CCLayer、CCSprite的关系
- BFS-hdu-1226-超级密码
- 基于xFire的webService例子
- C++ queue队列
- VC++6.0调试入门
- Singleton模式 笔记
- Android之自定义AlertDialog无法监听控件
- 软件工程
- hdu 2686 Matrix(多线程DPor费用流,5级)
- 【UVaOJ 409】Excuses, Excuses!