算法竞赛入门经典训练指南-做题详细记录(更新中)
Posted greenaway07
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法竞赛入门经典训练指南-做题详细记录(更新中)相关的知识,希望对你有一定的参考价值。
第一章
1 #include <iostream> 2 #include <algorithm> 3 #include <cstdio> 4 using namespace std; 5 typedef long long ll; 6 //吐槽:WA一次。原因是不会输出 Loowater is doomed。由于原代码没有判断骑士是否已经杀了一个头。鉴于题目里提到n>=1.所以一旦有骑士杀了龙,那么就让骑士 b[i]=-1,这样他就相当于被标记过了。本来还想开个bool vis数组记录一下。 7 bool dragon(int x,int y) 8 9 return x>y; 10 11 bool ability(int x,int y) 12 13 return x<y; 14 15 16 int main() 17 18 int n,m,a[20000+5],b[20000+5],cnt; ll x; 19 while(scanf("%d%d",&n,&m)==2) 20 21 if(m==n&&n==0) 22 break; 23 x=cnt=0; 24 bool flag=false; 25 for(int i=0;i<n;++i) 26 scanf("%d",&a[i]); 27 for(int i=0;i<m;++i) 28 scanf("%d",&b[i]); 29 sort(a,a+n,dragon); 30 sort(b,b+m,ability); 31 for(int i=0;i<n;++i)//head 32 33 int t=cnt; 34 for(int j=0;j<m;j++)//person 35 36 if(a[i]<=b[j]) 37 38 cnt++; 39 x+=b[j]; 40 b[j]=-1; 41 break; 42 43 44 45 if(cnt!=t+1) 46 flag=true;break; 47 48 if(flag||cnt!=n) 49 printf("Loowater is doomed!\n"); 50 else 51 printf("%lld\n",x); 52 53 54
1 #include <iostream> 2 #include <algorithm> 3 #include <cstdio> 4 using namespace std; 5 typedef long long ll; 6 7 struct per 8 int b; 9 int j; 10 bool operator < (const per& x) constreturn j>x.j;//第一次尝试不用cmp函数 11 p[1000+7]; 12 // 13 //bool cmp(per x,per y) 14 // 15 // return x.j>y.j; 16 // 17 int main() 18 19 int n,cas=0,s,ans; 20 while(scanf("%d",&n)==1&&n) 21 22 ans=s=0; 23 cas++; 24 for(int i=0;i<n;++i) 25 scanf("%d%d",&p[i].b,&p[i].j); 26 sort(p,p+n); // sort(p,p+n,cmp); 27 for(int i=0;i<n;++i) 28 s+=p[i].b; 29 ans=max(ans,s+p[i].j); 30 31 printf("Case %d: %d\n",cas,ans); 32 33 return 0; 34
。
以上是关于算法竞赛入门经典训练指南-做题详细记录(更新中)的主要内容,如果未能解决你的问题,请参考以下文章