巨香蕉牛奶猪皮怪的坑人,刚开始想错了,我先建了一个结构体储存每个字母的价值和数量,然后全部情况列出来进行计算,就是一次挪动一个字符看总之的变化,但是我原来错在了每次挪动的是全部相同的那一个字符,后来只好把字符存在了另一个数组,想想都愚
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<cstdlib> #include<sstream> #include<set> #include<algorithm> #include<queue> #include<stack> #include<vector> #include<ctime> #include<fstream> #include<iomanip> #include<map> using namespace std; /*struct myclass{ string name; int value; };*/ struct mynote { int val; int num; }; int cmp(mynote a,mynote b) { return a.val<b.val; } int value[26*100+10]; int main() { int T; cin>>T; while(T--) { int n; cin>>n; mynote note[50]; int total_num=0; for(int i=0;i<n;i++) { cin>>note[i].val>>note[i].num; total_num+=note[i].num; } int coun=0; sort(note,note+n,cmp); for(int i=0;i<n;i++) { for(int j=0;j<note[i].num;j++) { value[coun++]=note[i].val; } } long long total=0; for(int q=0;q<total_num;q++) { int temp=1; long long sum=0; for(int i=q;i<total_num;i++) { sum+=temp*value[i]; temp++; } if(sum>total) { total=sum; } } cout<<total<<endl; } return 0; }