P1781 宇宙总统

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

难度:普及-

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

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

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

 1 #include <cstdio> 
 2 #include <iostream>
 3 #include <string>
 4 #include <algorithm>
 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 }
posted @ 2019-08-08 07:52  ZRQ666  阅读(193)  评论(0编辑  收藏  举报