Codeforces Round #241 (Div. 2)
来源:互联网 发布:.wang域名 编辑:程序博客网 时间:2024/06/04 18:51
A.Guess a number!
设置一个左值,一个右值,每次进行更新。
最后根据左右值判断结果。
若ri>le,则输出"Impossible",否则输出区间内任意一个数。
代码如下:
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#define INF 1000000007int min(int a,int b){ return a>b?b:a;}int max(int a,int b){ return a>b?a:b;}int main(){ int n,i,j,k,l,le,ri,a,len1,len2; char s1[5],s2[5]; while(scanf("%d",&n)!=EOF) { for(i=1,le=-INF,ri=INF;i<=n;i++) { scanf("%s%d%s",s1,&a,s2); len1=strlen(s1); if(len1==1) { switch(s1[0]) { case '<':if(s2[0]=='Y') ri=min(ri,a-1); else le=max(le,a);break; case '>':if(s2[0]=='Y') le=max(le,a+1);else ri=min(ri,a);break; } } else { switch(s1[0]) { case '<':if(s2[0]=='Y') ri=min(ri,a); else le=max(le,a+1);break; case '>':if(s2[0]=='Y') le=max(le,a);else ri=min(ri,a-1);break; } } } if(ri<le) { printf("Impossible\n"); } else { printf("%d\n",le); } } return 0;}
B.Art Union
模拟。
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#define INF 200000000int t[50005][7],ti[50005];int max(int a,int b){ return a>b?a:b;}int main(){ int m,n,i,j,k,l; while(scanf("%d%d",&m,&n)!=EOF) { for(i=1;i<=m;i++) for(j=1;j<=n;j++) scanf("%d",&t[i][j]); memset(ti,0,sizeof(ti)); for(i=1;i<=n;i++) { for(j=1;j<=m;j++) ti[j]=max(ti[j],ti[j-1])+t[j][i]; } for(i=1;i<=m;i++) if(i==m) printf("%d\n",ti[i]); else printf("%d ",ti[i]); } return 0;}
C.Booking System
有n组旅客,每组旅客有人数和花费。
有k张桌子,每张桌子最多能坐ri人。
每组旅客必须坐在同一张桌子上,且一张桌子上只能坐同一组的人。
贪心,旅客按花费排序从大到小,桌子按人数从小到大。
对旅客寻找满足条件的最小的桌子。
从而求出最后的结果。
看代码。qsort写比较函数好麻烦。。。以后还是去学习一下sort吧。。。
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#define INF 200000000struct group{ int id; int c; int p;}gg[1005];struct table{ int id; int r;}tt[1005];int visit[1005],re[1005][2];int cmp1(const void *a,const void *b){ struct group *x=(struct group *)a; struct group *y=(struct group *)b; if((*x).p<(*y).p) return 1; else if((*x).p>(*y).p) return -1; else return 0;}int cmp2(const void *a,const void *b){ struct table *x=(struct table *)a; struct table *y=(struct table *)b; if((*x).r<(*y).r) return -1; else if((*x).r>(*y).r) return 1; else return 0;}int main(){ int n,kk,i,j,k,l,tot,sum; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) { scanf("%d%d",&gg[i].c,&gg[i].p); gg[i].id=i+1; } qsort(gg,n,sizeof(gg[0]),cmp1); scanf("%d",&kk); for(i=0;i<kk;i++) { scanf("%d",&tt[i].r); tt[i].id=i+1; } qsort(tt,kk,sizeof(tt[0]),cmp2); memset(visit,0,sizeof(visit)); for(i=0,sum=0,tot=0;i<n;i++) { for(j=0;j<kk;j++) { if(visit[j]==0&&tt[j].r>=gg[i].c) { sum+=gg[i].p; tot++; re[tot][0]=gg[i].id; re[tot][1]=tt[j].id; visit[j]=1; break; } } } printf("%d %d\n",tot,sum); for(i=1;i<=tot;i++) { printf("%d %d\n",re[i][0],re[i][1]); } /*for(i=0;i<n;i++) printf("%d %d %d\n",gg[i].id,gg[i].c,gg[i].p); for(i=0;i<kk;i++) printf("%d %d\n",tt[i].id,tt[i].r);*/ } return 0;}
0 0
- Codeforces Round #241 (Div. 2)
- Codeforces Round #241 (Div. 2)
- Codeforces Round #241 (Div. 2) A
- Codeforces Round #241 (Div. 2) B
- Codeforces Round #241 (Div. 2) C
- Codeforces Round #241 (Div. 2) D
- Codeforces Round #241 (Div. 2) A
- Codeforces Round #241 (Div. 2) A
- Codeforces Round #241 (Div. 2) B
- Codeforces Round #241 (Div. 2) A~C
- Codeforces Round #241 (Div. 2) A题
- Codeforces Round #241 (Div. 2) 解题报告
- Codeforces Round #102 (Div. 2)
- Codeforces Round #103 (Div. 2)
- Codeforces Round #103 (Div. 2)
- Codeforces Round #104 (Div. 2)
- Codeforces Round #105 (Div. 2)
- Codeforces Round #105 (Div. 2)
- C语言的编译环境 MinGW+Eclipse for C/C++
- 《拆掉人生的墙》
- Git学习笔记
- 王金平:有义务尽快使“立法院”恢复运作
- Eclipse上GIT插件EGIT使用手册
- Codeforces Round #241 (Div. 2)
- 垃圾外链对网站真的没有好处吗?
- MFC 实现图片的拖拽功能,代码很详细,贴过去就能用!
- 利用FutureTask进行线程并发操作
- 2014找工作----扎实的基础和开阔的视野是企业最看重的因素
- Codeforces Round #241 (Div. 2) A
- 插入排序的实现
- Linux 自旋锁
- 汇编语言关于mov al,[0]的有关问题