2012 #5 Gold miner
2015-08-30 19:42
483 查看
Gold miner
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1889 Accepted Submission(s): 740
Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Submit Status Practice HDU 4341
[align=left]Problem Description[/align]
Homelesser likes playing Gold miners in class. He has to pay much attention to the teacher to avoid being noticed. So he always lose the game. After losing many times, he wants your help.
#include <stdio.h> #include <string.h> #include <cmath> #include <algorithm> using namespace std; struct Node { int x; int y; int t; int v; }a[205]; bool cmp(Node pp,Node qq) { double px,py,qx,qy; px=(double)pp.x,py=(double)pp.y; qx=(double)qq.x,qy=(double)qq.y; if(fabs(atan2(px,py)-atan2(qx,qy))>(1e-8)) { return atan2(px,py)<atan2(qx,qy); } else { return (px*px+py*py)<(qx*qx+qy*qy); } } bool compare(Node pp,Node qq) { double px,py,qx,qy; px=(double)pp.x,py=(double)pp.y; qx=(double)qq.x,qy=(double)qq.y; if(fabs(atan2(px,py)-atan2(qx,qy))<=(1e-8)) return true; else return false; } int dp[205][40005],coc[205][40005]; int main() { int n,T,cas=1; int i,j,k; int b[205]; while(scanf("%d %d",&n,&T)!=EOF) { memset(b,0,sizeof(b)); for(i=1;i<=n;i++) scanf("%d %d %d %d",&a[i].x,&a[i].y,&a[i].t,&a[i].v); sort(a+1,a+n+1,cmp); for(i=1;i<n;i++) { for(j=i+1;j<=n;j++) { if(compare(a[i],a[j])) b[i]++; else break; } } for(i=0;i<=n;i++) { for(j=0;j<=T;j++) { dp[i][j]=0; coc[i][j]=0; } } for(i=1;i<=n;i++) { for(j=0;j<=T;j++) { dp[i][j]=coc[i][j]; } for(j=0;j+a[i].t<=T;j++) { dp[i][j+a[i].t]=max(dp[i][j+a[i].t],coc[i][j]+a[i].v); if(b[i]>0) { coc[i+1][j+a[i].t]=max(coc[i+1][j+a[i].t],coc[i][j]+a[i].v); } } for(j=0;j<=T;j++) { dp[i][j]=max(dp[i-1][j],dp[i][j]); coc[i+b[i]+1][j]=max(coc[i+b[i]+1][j],dp[i][j]); } } /*for(i=1;i<=n;i++) printf("%d ",a[i].v); printf("\n\n"); for(i=1;i<=n;i++) { for(j=1;j<=T;j++) { printf("%d ",coc[i][j]); } printf("\n"); } printf("\n"); for(i=1;i<=n;i++) { for(j=1;j<=T;j++) { printf("%d ",dp[i][j]); } printf("\n"); } printf("\n");*/ int ans=0; for(j=0;j<=T;j++) if(dp [j]>ans) ans=dp [j]; printf("Case %d: %d\n",cas++,ans); } return 0; }
View Code
相关文章推荐
- uva11292 - Dragon of Loowater
- django unicode问题导致500 error
- mongo两级数组嵌套数据更新问题
- golang闭包里的坑
- golang闭包里的坑
- django 1.8 官方文档翻译: 5-1-1 使用表单
- Google 开源技术protobuf
- django 1.8 官方文档翻译: 13-9-1 如何使用会话
- django 1.8 官方文档翻译: 2-3-1 模型实例参考
- Go异常处理
- Go内置函数cap
- Goods:修改密码功能及退出功能实现
- django 1.8 官方文档翻译: 3-2-3 TemplateResponse 和 SimpleTemplateResponse
- win8企业版插入Windows To Go驱动器不显示怎么办?
- 6886 - Golf Bot
- 【英语】Bingo口语笔记(61) - mind系列
- 【英语】Bingo口语笔记(60) - 口语中的浊化发音
- 360 搜索到底拐走了 Google 多少流量?
- Google学术指数2015版
- django 1.8 官方文档翻译: 14-4-1 重定向应用