poj 1718 River Crossing
来源:互联网 发布:micropython 单片机 编辑:程序博客网 时间:2024/05/16 10:58
题目链接:http://poj.org/problem?id=1718
题目思路:表示自己是通过提交试出的上界,不知道标准做法是什么,求最小公位数那个方法我无法证明其正确性,哎,不管了,AC才是王道。
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<string>#include<queue>#include<algorithm>#include<vector>#include<stack>#include<list>#include<iostream>#include<map>using namespace std;#define inf 0x3f3f3f3f#define Max 110int max(int a,int b){return a>b?a:b;}int min(int a,int b){return a<b?a:b;}int dp[2][1010],t,a[1010],b[1010];int main(){ int i,j,k,tmp,rec,n; scanf("%d",&t); while(t--) { scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d%d",&a[i],&b[i]); tmp=0; // memset(dp[tmp],0,sizeof(dp[tmp])); for(i=0;i<=n+1;i++) dp[0][i]=0; dp[0][0]=1; rec=inf; for(i=0;i<=n;i++) { // memset(dp[1-tmp],0,sizeof(dp[1-tmp])); for(j=0;j<=n+1;j++) dp[1-tmp][j]=0; for(j=0;j<=n+1;j++) { if(j==0||j>n||(i%(a[j]+b[j])>=1&&i%(a[j]+b[j])<=a[j])) { for(k=j-1;j-k<=5&&k>=0;k--) { if(dp[tmp][k]) { dp[1-tmp][j]=1; break; } } if(dp[1-tmp][j]) continue; for(k=j;k<=n+1&&k-j<=5;k++) { if(dp[tmp][k]) { dp[1-tmp][j]=1; break; } } } } if(dp[1-tmp][n+1]) { rec=i; break; } tmp=1-tmp; } if(rec!=inf) printf("%d\n",rec); else printf("NO\n"); }}
- poj 1718 River Crossing
- poj 1700 Crossing River
- Poj 1700 Crossing River
- POJ 1700 Crossing River
- [poj] 1700 Crossing River
- POJ 1700 Crossing River
- poj 1700 Crossing River
- POJ-1700-Crossing River
- poj-1700 Crossing River
- POJ 1700 Crossing River
- POJ 1700 Crossing River
- poj 1700 Crossing River
- poj 1700 Crossing River
- POJ 1700 Crossing River
- poj 1700 Crossing River
- POJ 1700:Crossing River
- poj 1700 Crossing River
- POJ 1700 Crossing River
- UIImagePickerController及iphone的触摸判断
- 关于listView
- js 返回顶部效果代码
- Path的使用
- 工作没有主动性。。。
- poj 1718 River Crossing
- Fail2ban配置
- jQuery Ajax 实例 全解析
- Sqlite数据库sqlite3命令
- 同一的连接多,pop请求被拦截了怎么解决
- jsMath: A Method of Including Mathematics in Web Pages
- HTML、CSS、JavaScript学习总结
- 提高班改革有感
- C 语言中的const 解析