1 条题解

  • 0
    @ 2025-9-16 14:21:43

    参考题解

    主要考察数据结构的设计的运用。 本题使用一个二维数组分别以 记录每一个人的所有的投票的结果, 记录每一回合所有人的投票结果。 统计 每一个回合少数票投出人 记1分即可,计算累和。

    
    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <queue>
    #include <deque>
    #include <unordered_map>
    #include <map>
    #include <cstring>
    #include <cmath>
    #include <unordered_set>
    #include <set>
    #include <utility>
    #include <climits>
    #include <iomanip>
    #include <stack>
    #include <bitset>
    
    #define int long long
    #define PII pair<int, int> 
    #define TLLL tuple<int , int , int>
    #define INF 0x3f3f3f3f3f3f3f3f
    #define inf 0x3f
    #define all(v) v.begin() + 1 , v.end()
    #define ALL(v) v.begin() , v.end()
    #define endl "\n"
    using namespace std;
    
    void solve()
    {
        int n , m;
        cin >> n >> m;
        vector<vector<int> > vec(n + 1 , vector<int>(m + 1 , 0));
    
        for (int i = 1 ; i <= n ; i ++ )
        {
            string s;
            cin >> s;
            s = " " + s;
    
            for (int j = 1 ; j <= m ; j ++ )
                vec[i][j] = s[j] - '0';
        }
    
        vector<int> man(n + 1 , 0);
        vector<int> res(m + 1 , 0);
    
        for (int i = 1 ; i <= m ; i ++ )
        {
            int total = 0;
            for (int j = 1 ; j <= n ; j ++ )
                total += vec[j][i];
            
            if (total == 0 || total == n) continue;
            else if (total >= (n + 1) >> 1) res[i] = 0;
            else res[i] = 1;
        }
    
        int maxn = 0;
        for (int i = 1 ; i <= n ; i ++ )
        {
            for (int j = 1 ; j <= m ; j ++ )
            {
                if (res[j] == vec[i][j]) man[i] ++;
            }
    
            maxn = max(maxn , man[i]);
        }
    
        for (int i = 1 ; i <= n ; i ++ ) if (maxn == man[i]) cout << i << " ";
        return ;
    }
    
    signed main() 
    {
        ios::sync_with_stdio(false);
        cin.tie(nullptr), cout.tie(nullptr);
        int T = 1;
        // cin >> T;
        while (T -- ) solve();
        return 0;
    }
    
    
    
    
    • 1

    信息

    ID
    5618
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    递交数
    32
    已通过
    3
    上传者