码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 6011 Lotus and Characters

时间:2017-01-23 22:53:08      阅读:310      评论:0      收藏:0      [点我收藏+]

标签:std   pre   clu   包括   space   sort   scan   int   namespace   

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

标签:std   pre   clu   包括   space   sort   scan   int   namespace   

原文地址:http://www.cnblogs.com/general10/p/6344987.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!