hdu 6011 Lotus and Characters
Posted 可是我不配
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu 6011 Lotus and Characters相关的知识,希望对你有一定的参考价值。
BC的A题 不过被疯狂hack
因为有的人一开始认为只需要计算所有正权值 包括我也是
不过写一下就知道了 就算有负权 仍然可能对ans有贡献
比赛时候的代码可能是改的太匆忙了 到底还是被hack了……
还好B题留到最后了了 要不BC就血崩了……
1 #include<bits/stdc++.h> 2 #define cl(a,b) memset(a,b,sizeof(a)) 3 #define debug(x) cerr<<#x<<"=="<<(x)<<endl 4 using namespace std; 5 typedef long long ll; 6 7 const int maxn=3e3+10; 8 9 int letter[maxn]; 10 11 int main() 12 { 13 int T; 14 scanf("%d",&T); 15 while(T--) 16 { 17 cl(letter,0); 18 int n,cnt=0; 19 scanf("%d",&n); 20 for(int i=0;i<n;i++) 21 { 22 int x,val; 23 scanf("%d%d",&x,&val); 24 while(val--) letter[cnt++]=x; 25 } 26 sort(letter,letter+cnt); 27 int ans=0,num=cnt; 28 while(cnt--) 29 { 30 int last=ans; 31 for(int i=cnt+1;i<num;i++) 32 ans+=letter[i]; 33 if(ans+letter[cnt]<last) 34 { //计算每个权值对ans是否有贡献 35 ans=last; 36 break; //没有贡献的话ans就是上一次的ans 37 } 38 else ans+=letter[cnt]; //有贡献继续计算 39 } 40 if(ans<0) printf("0\n"); 41 else printf("%d\n",ans); 42 } 43 return 0; 44 } 45 /* 46 47 2 48 2 49 5 1 50 6 2 51 3 52 -5 3 53 2 1 54 1 1 55 56 */
以上是关于hdu 6011 Lotus and Characters的主要内容,如果未能解决你的问题,请参考以下文章
Lotus and Horticulture HDU - 6012
HDU 6012 Lotus and Horticulture