hdu6011 Lotus and Characters

来源:互联网 发布:拳皇13se出招优化补丁 编辑:程序博客网 时间:2024/04/29 21:23


Lotus and Characters

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/131072 K (Java/Others)
Total Submission(s): 284    Accepted Submission(s): 102


Problem Description
Lotus has n kinds of characters,each kind of characters has a value and a amount.She wants to construct a string using some of these characters.Define the value of a string is:its first character's value*1+its second character's value *2+...She wants to calculate the maximum value of string she can construct.
Since it's valid to construct an empty string,the answer is always 0
 

Input
First line is T(0T1000) denoting the number of test cases.
For each test case,first line is an integer n(1n26),followed by n lines each containing 2 integers vali,cnti(|vali|,cnti100),denoting the value and the amount of the ith character.
 

Output
For each test case.output one line containing a single integer,denoting the answer.
 

Sample Input
225 16 23-5 32 11 1
 

Sample Output
355
 

Source
BestCoder Round #91

为蛇么自己是个智障呢。。

#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>using namespace std;const int maxn = 260010;int p,n,ans,now;int save[maxn];bool compare(int a,int b){    return a>b;}int main(){    int t,i,j,a,b,tot;    scanf("%d",&t);    while(t--){        scanf("%d",&n);        p = 0;        for(i=1;i<=n;i++){            scanf("%d%d",&a,&b);            for(j=1;j<=b;j++){                save[++p] = a;            }        }        sort(save+1, save+1+p,compare);        tot = p;        int last;        ans = 0;        p = 0;        while(1){            last = ans;            ans += save[++p];            for(i=1;i<p;i++){                ans += save[i];            }            if(ans<last){                ans = last;                break;            }            if(p==tot){                break;            }        }        printf("%d\n",ans);    }        return 0;}







0 0
原创粉丝点击