P1781 宇宙总统

P1781题库链接:https://www.luogu.org/problem/P1781

难度:普及-

算法标签:排序,高精,字符串

1.高精+排序 O(log(n)) 得分100

因为选票数可能会过长,所以用string型存储,使用结构体记录竞选者的编号(id)与选票(p),若想使用sort就要重写比较函数,先比较字符串的长度,若长度一样就比较字符串的内容,否则就比较长度,利用STL中的sort快排,排序后所求的选票数最高的人即为第一个人

 1 #include  
 2 #include 
 3 #include <string>
 4 #include 
 5 using namespace std;
 6 struct node
 7 {
 8     int id;
 9     string p;
10 } s[31];
11 bool cmp1(node a, node b)
12 {
13     if(a.p.size() == b.p.size()) return a.p > b.p;
14     return a.p.size() > b.p.size(); 
15 }
16 int main()
17 {
18     int n;
19     scanf("%d", &n);
20     for(int i = 1; i <= n; ++i)
21     {
22         s[i].id = i;
23         cin >> s[i].p;
24     }
25     sort(s + 1, s + n + 1, cmp1);
26     printf("%d\n%s\n", s[1].id, s[1].p.c_str());
27 }

你可能感兴趣的:(P1781 宇宙总统)