1 条题解
- 
  0
参考题解
主要考察数据结构的设计的运用。 本题使用一个二维数组分别以 行 记录每一个人的所有的投票的结果, 列 记录每一回合所有人的投票结果。 统计 每一个回合少数票投出人 记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; } 
信息
- ID
 - 5618
 - 时间
 - 1000ms
 - 内存
 - 256MiB
 - 难度
 - 9
 - 标签
 - 递交数
 - 34
 - 已通过
 - 3
 - 上传者