悲剧的codeforces 82
来源:互联网 发布:数据分析发展方向 编辑:程序博客网 时间:2024/06/08 14:35
http://codeforces.com/contest/106
昨天晚上白忙活了,哎
(codeforces的pretest的测试数据弱到不行啊,估计只有测试样例吧)
四题挂了三题
A:如此之水,也会挂,少写了一张牌 'A'
B:水题
C:题目看错,用贪心写,其实是裸多重背包
D:暴力超时,先预处理在每个格子往四个方向能走的最大距离,然后就是随便怎么搞都行
E:貌似是最小球覆盖,模拟退火(网上找的代码)
C:
#include<stdio.h>#include<string.h>int c[15],w[15],v[15];int f[1005];int main(){int n,m,p,q,a,b,i,j,k,amount;scanf("%d%d%d%d",&n,&m,&p,&q);c[1]=n/p;w[1]=p;v[1]=q;for(i=1;i<=m;i++){scanf("%d%d%d%d",&a,&b,&p,&q);c[i+1]=a/b;w[i+1]=p;v[i+1]=q;}for(i=1;i<=n;i++)f[i]=0;for(i=1;i<=m+1;i++){if(w[i]*c[i]>=n){for(j=w[i];j<=n;j++)if(f[j]<f[j-w[i]]+v[i])f[j]=f[j-w[i]]+v[i];}else{k=1;amount=c[i];while(k<amount){for(j=n;j>=k*w[i];j--)if(f[j]<f[j-k*w[i]]+k*v[i])f[j]=f[j-k*w[i]]+k*v[i];amount-=k;k*=2;}for(j=n;j>=amount*w[i];j--)if(f[j]<f[j-amount*w[i]]+amount*v[i])f[j]=f[j-amount*w[i]]+amount*v[i];}}printf("%d\n",f[n]);return 0;}
D:
#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>using namespace std;#define N 1001#define M 100001int n,m,q;char a[N][N];int dis[N][N][4];struct node{int dir;int len;}b[M];void dfs(){int i,j,k,r;for(i=1;i<n-1;i++){j=1;while(j<m-1){while(j<m-1&&a[i][j]=='#')j++;r=j;k=j;while(j<m-1&&a[i][j]!='#')j++;for(;r<j;r++){dis[i][r][0]=r-k;dis[i][r][1]=j-r-1;}}}for(j=1;j<m-1;j++){i=1;while(i<n-1){while(i<n-1&&a[i][j]=='#')i++;r=i;k=i;while(i<n-1&&a[i][j]!='#')i++;for(;r<i;r++){dis[r][j][2]=r-k;dis[r][j][3]=i-r-1;}}}}int d[4][2]={{0,-1},{0,1},{-1,0},{1,0}};int check(int i,int j){int r=0,len,dir;while(r<q){dir=b[r].dir;len=b[r].len;if(dis[i][j][dir]<len)return 0;i=i+len*d[dir][0];j=j+len*d[dir][1];r++;}return 1;}int ans[30];int main(){int i,j,k;char ch;scanf("%d%d",&n,&m);for(i=0;i<n;i++)scanf("%s",a[i]);scanf("%d",&q);for(i=0;i<q;i++){getchar();scanf("%c%d",&ch,&b[i].len);if(ch=='W') b[i].dir=0;else if(ch=='E') b[i].dir=1;else if(ch=='N') b[i].dir=2;else b[i].dir=3;}dfs();k=0;for(i=0;i<n;i++)for(j=0;j<m;j++)if(a[i][j]>='A'&&a[i][j]<='Z')if(check(i,j)){ans[k++]=a[i][j];}if(k>0){sort(ans,ans+k);printf("%c",ans[0]);for(i=1;i<k;i++)printf("%c",ans[i]);printf("\n");}elseprintf("no solution\n");return 0;}
E:
#include<iostream>#include<cmath>using namespace std;#define inf 1e20#define eps 1e-7#define N 120struct point{ double x,y,z;}ps[N],q;int n;double dist(point a,point b){ a.x-=b.x; a.y-=b.y; a.z-=b.z; return sqrt(a.x*a.x+a.y*a.y+a.z*a.z);}int maxdist(point p){ double res=0; int k=0,i; for(i=0;i<n;i++) { double tmp=dist(p,ps[i]); if(tmp>res) { k=i; res=dist(p,ps[i]); } } return k;}int main(){int i; scanf("%d",&n); for(i=0;i<n;i++) scanf("%lf%lf%lf",&ps[i].x,&ps[i].y,&ps[i].z);if(n==1){printf("%lf %lf %lf\n",ps[0].x,ps[0].y,ps[0].z);return 0;} double step=20001; double ans=inf; q.x=q.y=q.z=0; int k=1; while(step>eps) { int d=maxdist(q); double tmp=dist(ps[d],q); if(ans>tmp) ans=tmp; double dx=ps[d].x-q.x; double dy=ps[d].y-q.y; double dz=ps[d].z-q.z; dx=dx/tmp; dy=dy/tmp; dz=dz/tmp; q.x+=dx*step; q.y+=dy*step; q.z+=dz*step; step*=0.9985; } printf("%lf %lf %lf\n",q.x,q.y,q.z); return 0;}
- 悲剧的codeforces 82
- codeforces 2011 悲剧
- 所谓的悲剧
- 小鱼的悲剧
- V的悲剧
- 圣奥斯拉修道院的悲剧
- 公地的悲剧
- 智能鸟的悲剧
- 十分钟的悲剧
- 千里马的悲剧
- 尼采的悲剧
- 悲剧的澳大利亚
- 悲剧的JAVA环境变量
- 网络的悲剧啊
- 中国程序员的悲剧
- 关于iis的悲剧
- 悲剧的protues仿真
- 悲剧的一年
- 从今天开始,记录下在公司的点点滴滴。
- FreeMarker的常用指令(一)
- C++ Primer 第四版》笔记与勘误
- FreeMarker的常用指令(二)
- 电影《Java风云》预告片
- 悲剧的codeforces 82
- FreeMarker语法之表达式
- 性能测试设计能力解决方案-提纲征集篇
- 批量查找文档中的关键字符 Linux下批量修改替换文档内容
- VS2005 搭建三层架构
- 删除字符串中多余的*号
- OleDbType枚举与Microsoft Access数据类型
- jsp 的四个作用域 :page、request、session和application的区别
- 什么是P问题、NP问题和NPC问题