Ural 1658 Sum of Digits
来源:互联网 发布:青铜器铭文翻译软件 编辑:程序博客网 时间:2024/03/29 01:05
PRO IS HERE
0<s1<901 ,0<s2<8100
我用队列直接枚举(s1,s2) 是否可行。
dp[s1][s2] 表示达到(s1,s2) 加的数,就是:
s1 = S1 - dp[s1][s2] ,s2 = S2 - dp[s1][s2]^2
No solution 打成 NO solution WA 了n次。。。
#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<vector>#include<set>#include<queue>#include<map>#include<iostream>using namespace std;#define PB push_back#define INS insert#define FOR(i,a,b) for(int (i)=(a);(i)<=(b);(i)++)#define nMax 201#define bug puts("Fuck");#define LL long long#define mp make_pair#define F first#define S second#define iter set<pair<int,int> >::iteratorint dp[901][8101],dist[901][8101];queue<pair<int,int> > que;void init(){FOR(i,0,900)FOR(j,0,8100) dp[i][j]=-1;dp[0][0]=0;dist[0][0]=0;que.push(mp(0,0));while(!que.empty()){ pair<int,int> u = que.front();que.pop(); if(dist[u.F][u.S]>=100) break; for(int j=1;j<10;j++) if(u.F+j<901 && u.S+j*j<8101 && dp[u.F+j][u.S+j*j]==-1){ dp[u.F+j][u.S+j*j]=j; dist[u.F+j][u.S+j*j]=dist[u.F][u.S]+1; que.push(mp(u.F+j,u.S+j*j)); }}//FOR(i,1,900) FOR(j,1,8100) if(dp[i][j]!=-1) printf("dp[%d][%d]=%d\n",i,j,dp[i][j]);/*for(int i = 1;i<=100;i++) {for(int s=1;s<901;s++) {for(int t=1;t<8101;t++)if(dp[s][t]==-1){for(int j=1;j<10;j++) if(s>=j && t-j*j>=0 && dp[s-j][t-j*j]!=-1){dp[s][t]=j;break;}}}}*/}void out(int x,int y){if(x==0 && y==0) return ;if(dp[x][y]==-1) { printf("No solution"); return ;}out(x-dp[x][y],y-dp[x][y]*dp[x][y]);printf("%d",dp[x][y]);return ;}int main(){ //freopen("input.txt","r",stdin);//freopen("output.txt","w",stdout);init(); int t;scanf("%d",&t);int s1,s2;while(t--){scanf("%d%d",&s1,&s2);if(s1>900 || s2 > 8100) { puts("No solution"); continue; }out(s1,s2);puts("");}return 0;}
- Ural 1658 Sum of Digits
- Ural 1658 Sum of Digits
- ural 1658. Sum of Digits
- URAL 1658. Sum of Digits
- URAL 1658 Sum of Digits (DP) #by Plato
- 【URAL 1658】1658. Sum of Digits(DP)
- URAL 1658. Sum of Digits(简单dp)
- URAL 1206 Sum of Digits of the Sum of Numbers
- ural 1014 Product of Digits
- URAL 1014 Product of Digits
- Timus Online Judge 1658 Sum of Digits
- HDU3022:Sum of Digits
- HDU3022:Sum of Digits
- B. Sum of Digits
- Sum of Digits
- Lucky Sum of Digits
- timus 1658. Sum of Digits URAL 解题报告 DP 数字位数和……
- Ural-1014. Product of Digits(简单题)
- ueditor修改富文本框宽度和高度的方法
- 深层次讨论:抽象类是否可继承实体类 (concrete class)?
- ant修改文件中的内容
- 心系雅安灾区,网页变黑白代码
- Java API中文版下载
- Ural 1658 Sum of Digits
- 韩顺平 PHP视频教程 Ajax技术第03讲-无刷新验证用户名 笔记
- 启动一个线程是用run()还是start()?
- CSS3 圆角(border-radius)
- 构造器Constructor是否可被重写?
- 雅安加油,中国加油!
- 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
- 算法基础(1)关于时间复杂度计算之函数增长
- helper_seo::base64_transform【'decode小黑中国Q1440580】