The 12th UESTC Programming Contest Warmup #1
来源:互联网 发布:定义学生数组java 编辑:程序博客网 时间:2024/06/14 22:25
The 12th UESTC Programming Contest Warmup #1
链接:点击打开链接
题目来源:2013 ACM ICPC South Central USA RegionalProgramming Contest
B - Effective Infection Time
模拟题(水),主要是正确理解题意。
D – Multikill
题意:给定平面上点的个数(0<=N<=25),和半径R.求用半径为R的圆最多能覆盖的点的个数。
思路:一定有两个点在圆周上,所以可以根据此条件确定圆,从而求得答案。
E – Virology
题意:给定14个数字,(1..9),每个相同的数字不超过3个。判断是否能满足题目的条件。
条件:1.必须含有一个对子(pair),即两个相等的数字,如[11].
2.(1)三个连续的(straight)( [1 2 3],[2 3 4]等),(2)三个相同的(triples)([1 1 1],[3 3 3]等)
这两种情况加起来有4个.
并且注意到给出的数字的顺序不重要,即可以自己任意变换顺序.
解法:我们注意到数字只有1..9,并且每个不超过三个,于是我们可以用sum[i]来记录数字i总共出现了多少次。然后注意到给出的顺序并不重要。
由于一定有一个是两个相同的,我们可以先枚举这个条件,
然后再进行搜索。
条件2可由下面的情况构成:
(1)4 straight, 0 triples
(2) 3 straight, 1 triples
(3) 2 straight, 2triples
(4) 1 straight, 3triples
(5) 0 straight, 4triples
根据条件进行搜索即可。
F - WorstCase Scenario
根据题意进行模拟。
H – Zombdar
字符串处理题。
我的代码:
B:
#include<cstdio>#include<iostream>#define rep(i,n) for(int i=0;i<n;i++)using namespace std;int sm,sy,em,ey,n;int main(){scanf("%d",&n);rep(i,n){scanf("%d%d",&sm,&sy);scanf("%d%d",&em,&ey);float ans=0;if(sy==ey){ans=(0.5/(12-sm+1))*(em-sm);printf("%.4f\n",ans);continue;}ans=0.5+(ey-sy-1);ans+=(float)(em-1)/12;printf("%.4f\n",ans);}return 0;}
D:
#include<cstdio>#include<iostream>#include<cmath>#define rrep(i,n) for(int i=1;i<=n;i++)using namespace std;double aa,bb,cc,xx,yy;double x[30],y[30];double k,b,r;int fans,n;double calc(){return (bb*bb-4*aa*cc);}void worka(double x1,double y1,double x2,double y2){if(y1==y2){xx=(x1+x2)/2;aa=1;bb=-2*y1;cc=y1*y1+xx*xx+x1*x1-2*xx*x1-r*r;double deta=calc();yy=(-bb+sqrt(deta))/(2*aa);return;}k=-(x1-x2)/(y1-y2);double x0=(x1+x2)/2,y0=(y1+y2)/2;b=-k*x0+y0;aa=(1+k*k);bb=(2*k*b-2*k*y1-2*x1);cc=-2*b*y1+y1*y1+b*b+x1*x1-r*r;double deta=calc();xx=(-bb+sqrt(deta))/(2*aa);yy=k*xx+b;}void workb(double x1,double y1,double x2,double y2){if(y1==y2){xx=(x1+x2)/2;aa=1;bb=-2*y1;cc=y1*y1+xx*xx+x1*x1-2*xx*x1-r*r;double deta=calc();yy=(-bb-sqrt(deta))/(2*aa);return;}k=-(x1-x2)/(y1-y2);double x0=(x1+x2)/2,y0=(y1+y2)/2;b=-k*x0+y0;aa=(1+k*k);bb=(2*k*b-2*k*y1-2*x1);cc=-2*b*y1+y1*y1+b*b+x1*x1-r*r;double deta=calc();xx=(-bb-sqrt(deta))/(2*aa);yy=k*xx+b;}bool pd(){int ans=0;rrep(i,n){double dis=(x[i]-xx)*(x[i]-xx)+(y[i]-yy)*(y[i]-yy);if(dis<=r*r+1e-5)ans++;}if(ans>fans)fans=ans;}int main(){int T;scanf("%d",&T);while(T--){scanf("%lf%d",&r,&n); if(n==1){scanf("%lf%lf",&x[1],&y[1]);printf("%d\n",1);continue;}if(n==0){printf("%d\n",0);continue;}fans=1;rrep(i,n){scanf("%lf%lf",&x[i],&y[i]);}rrep(i,n)for(int j=i+1;j<=n;j++){worka(x[i],y[i],x[j],y[j]);pd();workb(x[i],y[i],x[j],y[j]);pd();}printf("%d\n",fans);}return 0;}
#include<cstdio>#include<iostream>#include<string>#include<cstring>#define rep(i,n) for(int i=0;i<n;i++)#define rrep(i,n) for(int i=1;i<=n;i++)using namespace std;int sum[10],ssum[10];int maxt,maxs;bool flag;void searchs(int t){ if(t>maxs){flag=1;return;} rrep(i,7) if((sum[i]>=1)&&(sum[i+1]>=1)&&(sum[i+2]>=1)) { sum[i]--;sum[i+1]--;sum[i+2]--; searchs(t+1); sum[i]++;sum[i+1]++;sum[i+2]++; }}void searchtr(int t){ if(t>maxt){searchs(1);return;} rrep(i,9) if((sum[i]==3)) { sum[i]=0; searchtr(t+1); sum[i]=3; }}bool search(){ rrep(i,9)sum[i]=ssum[i];// case 1: 4 triples and 0 straights flag=0;maxt=4;maxs=0; searchtr(1); if(flag)return 1; // case 2: 3 triples and 1 straights flag=0;maxt=3;maxs=1; searchtr(1); if(flag)return 1; // case 3: 2 triples and 2 straights flag=0;maxt=2;maxs=2; searchtr(1); if(flag)return 1; // case 4: 1 triples and 3 straights flag=0;maxt=1;maxs=3; searchtr(1); if(flag)return 1; // case 5: 0 triples and 4 straights flag=0;maxt=0;maxs=4; searchtr(1); if(flag)return 1; return 0;}bool pd(){rrep(i,9){if(ssum[i]>=2){ssum[i]-=2;if(search())return 1;ssum[i]+=2;}}return 0;}int main(){int T;scanf("%d",&T);while(T--){memset(ssum,0,sizeof(ssum));rep(i,14){ int x;scanf("%d",&x);ssum[x]++;}if(pd())printf("Vulnerable\n");else printf("Immune\n");}return 0;}
#include<cstdio>#include<iostream>#include<cstring>#include<string>#define rep(i,n) for(int i=0;i<n;i++)#define rrep(i,n) for(int i=1;i<=n;i++)using namespace std;const int dx[4]={0,1,-1,0};const int dy[4]={1,0,0,-1};char map[110][110];bool exist[110][110];int n,m,x,y;void work(int x,int y){ if(map[x][y]!='D'){switch (map[x][y]){case 'A':map[x][y]='B';break;case 'B':map[x][y]='C';break;case 'C':map[x][y]='D';break;}return; }if(!exist[x][y])return ;exist[x][y]=0;rep(i,4){int xx=x+dx[i],yy=y+dy[i];if((xx<0)||(xx>=n)||(yy<0)||(yy>=m))continue;if(map[xx][yy]!='X')work(xx,yy);}}int main(){int T;scanf("%d",&T);while(T--){scanf("%d%d",&m,&n);memset(exist,1,sizeof(exist));rep(i,n){ scanf("%s",&map[i]);}int tt;scanf("%d",&tt);rep(i,tt){scanf("%d%d",&y,&x);if(map[x][y]!='X'){ memset(exist,1,sizeof(exist));work(x,y);}}rep(i,n){printf("%s\n",map[i]);}}return 0;}
G:
#include<cstdio>#include<iostream>#define rrep(i,n) for(int i=1;i<=n;i++)using namespace std;int map[55];int n;int main(){scanf("%d",&n);while(n--){rrep(i,20)scanf("%d",&map[i]);for(int i=20;i>1;i--){map[i-1]+=map[i]/2;if(map[i]&1==1)map[i]=1;else map[i]=0;}rrep(i,19)printf("%d ",map[i]);printf("%d",map[20]);if(n!=0)printf("\n");}return 0;}
- The 12th UESTC Programming Contest Warmup #1
- The 14th UESTC Programming Contest Final Warmup D - Cube
- The 9th UESTC Programming Contest Warmup 1 A B D E
- The 11th UESTC Programming Contest Final J题
- The 13th UESTC Programming Contest Preliminary 后 记
- The 15th UESTC Programming Contest Final 总结
- the 12th UESTC Programming Contest Final Justice is Given by Light (几何+ 二分)
- The 12th Zhejiang University Programming Contest
- The 13th UESTC Programming Contest Preliminary——Hug the princess
- The 13th UESTC Programming Contest Preliminary——AC Milan VS Juventus
- The 13th UESTC Programming Contest Preliminary—— L - Lovely princess
- The 13th UESTC Programming Contest Preliminary—— F - Fabricate equation
- The 9th UESTC Programming Contest Final——Easy Problem
- The 14th UESTC Programming Contest Final B - Banana Watch 预处理、前缀和
- The 14th UESTC Programming Contest Final I - Intersection 计算几何、积分、精度
- 115 - The 12th Zhejiang University Programming Contest - C
- The 12th Zhejiang Provincial Collegiate Programming Contest
- The 12th Zhejiang Provincial Collegiate Programming Contest - A
- 做好用户体验不得不说的那些事
- ACM组队训练ubuntu环境配置
- 有价值的内容,哪些才能真正吸引用户呢?
- 关卡开启方式以及封闭性
- 第三周作业
- The 12th UESTC Programming Contest Warmup #1
- (beginer) UVA 最小费用流 1349Optimal Bus Route Design
- spring事务处理
- GCC与的编译标准与Visual Studio 6.0的不同之处漫谈
- C++ STL中Map的按Key排序和按Value排序
- qiyi视频解析
- 在C/C++语言中使用正则表达式
- Spinner简介
- Saiku没有数据产出,原来是Schema问题,解决步骤分享