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

Best Coder Lotus and Characters

时间:2017-01-21 20:25:17      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:stream   code   operator   mit   ems   pre   algorithm   人生   memset   

 Lotus and Characters 
 Time Limit: 2000/1000 MS (Java/Others)   Memory Limit: 262144/131072 K (Java/Others)
问题描述
Lotus有nn种字母,给出每种字母的价值以及每种字母的个数限制,她想构造一个任意长度的串。
定义串的价值为:第1位字母的价值*1+第2位字母的价值*2+第3位字母的价值*3……
求Lotus能构造出的串的最大价值。(可以构造空串,因此答案肯定\geq 0≥0)
输入描述
第一行是数据组数T(0 \leq T \leq 1000)T(0≤T≤1000)。
对于每组数据,第一行一个整数n(1 \leq n \leq 26)n(1≤n≤26),接下来nn行,每行2个整数val_i,cnt_i(|val_i|,cnt_i\leq 100)val
i
?? ,cnt
?i
?? (∣val
?i
?? ∣,cnt
?i
?? ≤100),分别表示第ii种字母的价值和个数限制。
输出描述
对于每组数据,输出一行一个整数,表示答案。
输入样例
2
2
5 1
6 2
3
-5 3
2 1
1 1
输出样例
35
 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<algorithm>
 5 using namespace std;
 6 struct node{
 7     int v,w;
 8     bool operator < (const node &a) const{
 9         return v<a.v;
10     }
11 }e[29];
12 int T,n;
13 int main()
14 {
15     cin>>T;
16     while(T--){
17         memset(e,0,sizeof(e));
18         scanf("%d",&n);
19         for(int i=1;i<=n;i++)
20           scanf("%d%d",&e[i].v,&e[i].w);
21         sort(e+1,e+n+1);
22         long long ans=0;
23         int k=1,p=1;
24         while(e[k].v<=0) k++;
25         for(int i=k;i<=n;i++)
26           for(int j=1;j<=e[i].w;j++){
27               ans+=e[i].v*p;p++;
28           }
29         printf("%lld\n",ans);
30     }
31     return 0;
32 }

人生第一次在BestCoder打比赛。。15分钟AC

Best Coder Lotus and Characters

标签:stream   code   operator   mit   ems   pre   algorithm   人生   memset   

原文地址:http://www.cnblogs.com/suishiguang/p/6337564.html

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