题目大意:给出的字符串,每个字符建立一种与0-25的对应关系。然后每个字符串看成是一个26进制的数。问能获得的数的总和的最大值。(最后对1e9+7取模)。
题目思考:把每个字符的贡献值看做一个26进制数字,贪心排序后,确保没有前导零。写的要规范点,卡时间。
#include#include #include #include #include #include #define INF 0x3f3f3f3fusing namespace std;const long long mod = 1000000000+7;const int MAXSIZE = 100001;string s[MAXSIZE];long long var[MAXSIZE];long long k[MAXSIZE];struct node{ int op,id; int var[MAXSIZE]; bool operator < (const node &a)const { for(int i=MAXSIZE-1;i>=0;i--) { if(var[i] != a.var[i]) return var[i] > a.var[i]; } return 0; }}p[30];int main(){ int n,cns=1; while(scanf("%d",&n)!=EOF) { for(int i=0;i<26;i++) { p[i].id = i; p[i].op = 0; for(int j=0;j >s[i]; int len = s[i].size(); if(len > 1) p[s[i][0]-'a'].op = 1; for(int j=0;j