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
- 标签
- 递交数
- 32
- 已通过
- 3
- 上传者