hdu 1025 && hdu 1058
2016-07-29 11:14
429 查看
hdu 1025 #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int dp[500005], s[500005], len, Case=0; int search(int a, int b, int c) { int mid; while(a<=b) { mid = (a + b) / 2; if(dp[mid]==c) return mid; else { if(dp[mid]<c) a = mid + 1; else b = mid - 1; } } return a; } int main() { int n; while(scanf("%d",&n)!=EOF) { int p, r, i; for(i=1; i<=n; i++) { scanf("%d%d",&p,&r); s[p] = r; dp[i] = 500005; } len = 1; dp[1] = s[1]; for(i=2; i<=n; i++) { if(s[i] > dp[len]) dp[++len] = s[i]; else { int k = search(1,len,s[i]); dp[k] = s[i]<dp[k]?s[i]:dp[k]; } } if(len==1) printf("Case %d:\nMy king, at most %d road can be built.\n\n",++Case,len); else printf("Case %d:\nMy king, at most %d roads can be built.\n\n",++Case,len); } } hdu 1058
#include<stdio.h> #include<string.h> int n, dp[5900]; int i, j, k, l; int min(int a,int b,int c,int d) { int m=a; if(b<m) m=b; if(c<m) m=c; if(d<m) m=d; if(a==m) i++; if(b==m) j++; if(c==m) k++; if(d==m) l++; return m; } int main() { i=j=k=l=1; dp[1] = 1; for(int t=2; t<=5842; t++) { dp[t] = min(2*dp[i],3*dp[j],5*dp[k],7*dp[l]); } while(scanf("%d",&n)!=EOF) { if(n==0) break; else { if(n%10==1&&n%100!=11) printf("The %dst humble number is %d.\n",n,dp[n]); else if(n%10==2&&n%100!=12) printf("The %dnd humble number is %d.\n",n,dp[n]); else if(n%10==3&&n%100!=13) printf("The %drd humble number is %d.\n",n,dp[n]); else printf("The %dth humble number is %d.\n",n,dp[n]); } } }
相关文章推荐
- Ajax入门(二)——乱码问题的解决
- 图论 匈牙利最大匹配
- Java--StringBuilder equals
- vim如何添加或删除多行注释
- ArcGIS三大文件格式解析
- 从oracle数据库迁移到mysql数据库
- HDU 1455 Sticks(DFS,剪枝,原来木棒的至少长度)
- sudt oj2118 数据结构实验之链表三:链表的逆置
- Java--String 和 char[]
- 在Winform程序中设置管理员权限及为用户组添加写入权限
- luigi学习8--使用中央调度器
- 初识MyBatis
- Ajax入门(与Java服务器交互)(一)
- Zookeeper 学习笔记
- tjut 2476
- Python使用Ckan API创建CKAN的package
- 在Terminal中命令行启动QtCreator
- Inno setup 简单打包教程
- 题目64 鸡兔同笼
- recover和restore的区别