2 条题解
-
0
#include <iostream> #include <algorithm> #include <vector> using namespace std; struct Player { int id; int score; int strength; }; // 比较函数:按分数降序,分数相同按编号升序 bool cmp(const Player &a, const Player &b) { if (a.score != b.score) { return a.score > b.score; } return a.id < b.id; } int main() { int N, R, Q; cin >> N >> R >> Q; int total = 2 * N; vector<Player> players(total); // 读入初始分数 for (int i = 0; i < total; i++) { players[i].id = i + 1; cin >> players[i].score; } // 读入实力值 for (int i = 0; i < total; i++) { cin >> players[i].strength; } // 初始排序 sort(players.begin(), players.end(), cmp); // 进行R轮比赛 for (int round = 0; round < R; round++) { vector<Player> winners, losers; // 每两人一组进行比赛 for (int i = 0; i < total; i += 2) { Player &p1 = players[i]; Player &p2 = players[i + 1]; if (p1.strength > p2.strength) { p1.score++; winners.push_back(p1); losers.push_back(p2); } else { p2.score++; winners.push_back(p2); losers.push_back(p1); } } // 合并胜者组和败者组 vector<Player> new_players; int i = 0, j = 0; while (i < winners.size() && j < losers.size()) { if (cmp(winners[i], losers[j])) { new_players.push_back(winners[i]); i++; } else { new_players.push_back(losers[j]); j++; } } // 处理剩余元素 while (i < winners.size()) { new_players.push_back(winners[i]); i++; } while (j < losers.size()) { new_players.push_back(losers[j]); j++; } players = new_players; } // 输出第Q名的选手编号 cout << players[Q - 1].id << endl; return 0; } -
-3
#include #include #include #include using namespace std; bool prime(int x){ if(x0||x1){ return false; } if(x2){ return true; } for(int i=3;i<sqrt(x);i++){ if(x%i0){ return false; } } return true; } int main(){ char s[1000]; cin>>s; int a[24]={0},maxn=-999,minn=999;
for(int i=0;i<strlen(s);i++){ a[s[i]-'a']++; } for(int i=0;i<24;i++){ if(a[i]>maxn){ maxn=a[i]; } if(a[i]<minn&&a[i]!=0){ minn=a[i]; } } int p=maxn-minn; if(prime(p)){ cout<<"Lucky Word"<<endl; cout<<p; }else{ cout<<"No Answer"<<endl; cout<<0; } return 0;}
- 1
信息
- ID
- 716
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 27
- 已通过
- 5
- 上传者