3 条题解
-
1
From:庄力
#include<bits/stdc++.h> #define ll long long const int N=1e6+10; const int INF=0x3f3f3f3f; const int MOD=1e9+7; using namespace std; int read(){int x=0,ans=1;char c=getchar();while(c>'9'||c<'0'){if(c=='-')ans=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+(c-'0');c=getchar();}return x*ans;} ll b,c,n,r,q,s[N],a[N],x[N],y[N],w[N]; bool cmp(int x,int y){ if(s[x]==s[y])return x<y; return s[x]>s[y]; } int main(){ cin.tie(0),cout.tie(0); cin>>n>>r>>q; n*=2; for(int i=1;i<=n;i++){ a[i]=i; cin>>s[i]; } for(int i=1;i<=n;i++)cin>>w[i]; sort(a+1,a+n+1,cmp); for(int i=1;i<=r;i++){ b=0; for(int j=1;j<=n;j+=2){ if(w[a[j]]>w[a[j+1]]){ s[a[j]]++; x[++b]=a[j]; y[b]=a[j+1]; } else{ s[a[j+1]]++; x[++b]=a[j+1]; y[b]=a[j]; } } ll l=1,j=1,k=1; while(l<=b && j<=b){ if(cmp(x[l],y[j]))a[k++]=x[l++]; else a[k++]=y[j++]; } while(l<=b)a[k++]=x[l++]; while(j<=b)a[k++]=y[j++]; } cout<<a[q]; } -
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
- 标签
- 递交数
- 28
- 已通过
- 6
- 上传者