7 条题解

  • 7
    @ 2026-2-10 15:31:24
    #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
      @ 2026-2-10 21:21:15

      详细解释

      #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
        @ 2026-3-28 14:54:49

        宇宙总统,但是不使用高精度整数比较

        众所周知,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}")
        

        时间复杂度:O(nlogn)O(n log n)

        取最大值

        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}")
        

        时间复杂度:O(n)O(n)

        • 1
          @ 2026-2-13 10:10:46
          #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
            @ 2026-2-13 10:10:32
            #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;
            }
            
            
            
            • 0
              @ 2026-4-22 22:00:53
              #include<bits/stdc++.h>
              using namespace std;
              int main(){
              	int n,u=0;
              	string m,w="";
              	cin>>n;
              	for(int i=0;i<n;i++){
              		cin>>m;
              		if(m.length()>w.length()||m.length()==w.length()&&m>w){
              			w=m;
              			u=i+1;
              		}
              	} 	
              	cout<<u<<endl;
              	cout<<w;
              	return 0;
              }
              
              • -4
                @ 2026-2-10 15:41:57
                #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
                上传者