Source
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=122043#problem/A
My Solution
for for 枚举C(m, 2) 打好表, 然后然后找出最小的最大值 (。•_•。)
题目很简单, 人人过的题, 但觉得还是有点意思所以也整理到这里
#include
#include
#include
using namespace std;
typedef long long LL;
const int maxn = 100 + 8;
bool deg[maxn][maxn];
int ans[maxn][maxn];
int main()
{
#ifdef LOCAL
freopen("a.txt", "r", stdin);
//freopen("b.txt", "w", stdout);
int T = 1;
while(T--){
#endif // LOCAL
int n, m;
int s1, s2, s3, s4;
scanf("%d%d", &n, &m);
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
scanf("%d", °[i][j]);
//cout<<deg[i][j]<<" ";
}
//printf("n");
}
for(int i = 0; i < m; i++){
for(int j = i + 1; j < m; j++){
s1 = s2 = s3 = s4 = 0;
for(int k = 0; k < n; k++){
if(deg[k][i] && deg[k][j]) s1++;
else if(deg[k][i] && !deg[k][j]) s2++;
else if(!deg[k][i] && deg[k][j]) s3++;
else s4++;
}
ans[i][j] = max(s1, max(s2, max(s3, s4)));
}
}
int min_max = 1000000000;
for(int i = 0; i < m; i++){
for(int j = i + 1; j < m; j++)
min_max = min(min_max, ans[i][j]);
}
bool okay = false;
for(int i = 0; i < m; i++){
for(int j = i + 1; j < m; j++){
if(min_max == ans[i][j]){
printf("%dn%d %d", min_max, i + 1, j + 1);
okay = true; break;
}
}
if(okay) break;
}
#ifdef LOCAL
printf("n");
}
#endif // LOCAL
return 0;
}
非特殊说明,本博所有文章均为博主原创,未经许可不得转载。
https://www.prolightsfxjh.com/
Thank you!
------from ProLightsfx
非特殊说明,本博所有文章均为博主原创,未经许可不得转载。
如经许可后转载,请注明出处:https://prolightsfxjh.com/article/uestc-2016-summer-training-4-div-2-a/
共有 0 条评论