首页 > 代码库 > Best Coder Lotus and Characters

Best Coder Lotus and Characters

 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