7 条题解
-
7
#include<bits/stdc++.h> using namespace std; struct zt { int n; string vot; }; bool cmp(zt a,zt b) { int as=a.vot.size(),bs=b.vot.size(); if(as!=bs) return as>bs; else { for(int i=0;i<as;i++) { int av=a.vot[i]-'1'+1,bv=b.vot[i]-'1'+1; if(av!=bv) return av>bv; } } return false; } int main() { int n; cin>>n; zt l[n+2]; for(int i=1;i<=n;i++) { string tmp; cin>>tmp; l[i].n=i; l[i].vot=tmp; } sort(l,l+n+1,cmp); cout<<l[0].n<<endl<<l[0].vot; return 0; } -
2
详细解释
#include <iostream> #include <string> using namespace std; int main() { int n; cin >> n; string tickets[25]; //票数可能很大,所以不能用普通的整型来存储,需要用字符串来存 for (int i = 0; i < n; i++) { cin >> tickets[i];//输入 } int winner = 0; //用于记录当选人编号 string max = tickets[0]; for (int i = 1; i < n; i++) { if (tickets[i].size() > max.size()) {//比较长度 max = tickets[i]; winner = i; } else if (tickets[i].size() == max.size()) {//如果长度相等 if (tickets[i] > max) {//字典序比较 max = tickets[i]; winner = i; } } } cout << winner + 1 << endl;//输出编号(+1是因为题目编号从1开始) cout << max << endl; return 0; } -
1
宇宙总统,但是不使用高精度整数比较
众所周知,Python的整形可以支持任意精度,所以可以直接排序/比大小
当然,有很多比赛要求必须C++,所以这种方法几乎不可能拿去实战能用Python的直接用!代码
排序
class President: # 因为要输出ID所以用类 def __init__(self,id,num): self.id=id self.num=num n=int(input()) l=[] for i in range(n): num=int(input()) id=i l.append(President(id,num)) # 众所周知,Python的int可以存任何精度的整数,所以... l.sort(key=lambda president: president.num, reverse=True) # ⚡直接排序!⚡ (开reverse是因为要升序) print(f"{l[0].id+1}\n{l[0].num}")时间复杂度:
取最大值
class President: # 因为要输出ID所以用类 def __init__(self,id,num): self.id=id self.num=num n=int(input()) l=[] for i in range(n): num=int(input()) id=i l.append(President(id,num)) # 众所周知,Python的int可以存任何精度的整数,所以... out=max(l,key=lambda president: president.num) # ⚡直接取最大值!⚡ print(f"{out.id+1}\n{out.num}")时间复杂度:
-
1
#include <bits/stdc++.h> using namespace std; // a < b ? bool cmp(const string &a, const string &b) { if (a.size() != b.size()) return a.size() < b.size(); return a < b; } int main() { int n; cin >> n; vector<string> v(n); for (int i = 0; i < n; i++) { cin >> v[i]; } auto it = max_element(v.begin(), v.end(), cmp); int winner = it - v.begin() + 1; string maxVotes = *it; cout << winner << "\n"; cout << maxVotes << "\n"; return 0; } -
1
#include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; string s; string maxVotes = ""; int winner = 0; for (int i = 1; i <= n; i++) { cin >> s; // 手动比较大整数 if (maxVotes == "" || s.size() > maxVotes.size() || (s.size() == maxVotes.size() && s > maxVotes)) { maxVotes = s; winner = i; } } cout << winner << "\n"; cout << maxVotes << "\n"; return 0; } -
-4
#include<bits/stdc++.h> using namespace std; int n , a[105]; int main(){ cin>>n; for(int i=1 ; i<=n ; i++){ cin>>a[i]; } sort(a+1 , a+n+1 ); int l=a[1] , s=1; for(int i=2 ; i<=n ; i++){ if(a[i]==l){ a[i]=0; } else{ s++; l=a[i]; } } cout<<s<<'\n'; for(int i=1 ; i<=n ; i++){ if(a[i]!=0){ cout<<a[i]<<' '; } } return 0; } ```依旧把别的题的题解放这
- 1
信息
- ID
- 82
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 131
- 已通过
- 29
- 上传者