3 条题解

  • 1
    @ 2026-4-19 19:51:33

    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
      @ 2025-12-13 10:43:02
      #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
        @ 2023-11-12 18:27:42

        #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;
        

        }

        • @ 2025-12-9 18:55:14

          这不是笨小猴的题目吗???(这个题解)

      • 1

      信息

      ID
      716
      时间
      1000ms
      内存
      256MiB
      难度
      8
      标签
      递交数
      28
      已通过
      6
      上传者