Wunder Fund Round 2016 (Div. 1 + Div. 2 combined)-B. Guess the Permutation(模拟)
2016-02-02 13:09
513 查看
B. Guess the Permutation
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
Bob has a permutation of integers from 1 to n.
Denote this permutation as p. The i-th
element of p will be denoted as pi.
For all pairs of distinct integers i, j between 1 and n,
he wrote the number ai, j = min(pi, pj).
He writes ai, i = 0 for
all integer i from 1 to n.
Bob gave you all the values of ai, j that
he wrote down. Your job is to reconstruct any permutation that could have generated these values. The input will be formed so that it is guaranteed that there is at least one solution that is consistent with the information given.
Input
The first line of the input will contain a single integer n (2 ≤ n ≤ 50).
The next n lines will contain the values of ai, j.
The j-th number on the i-th
line will represent ai, j.
The i-th number on the i-th
line will be0. It's guaranteed that ai, j = aj, i and
there is at least one solution consistent with the information given.
Output
Print n space separated integers, which represents a permutation that could have generated these values. If there are multiple possible
solutions, print any of them.
Sample test(s)
input
output
input
output
Note
In the first case, the answer can be {1, 2} or {2, 1}.
In the second case, another possible answer is {2, 4, 5, 1, 3}.
思路:
这题其实只要将每列出现次数最多的数统计出来就是这个位置的数了,如果每个数都是出现一样多的话,那么就是可以随便填,所以将固定位置的数填好后,其他位置就随便找一个没填过的数放入就行了。
AC代码:
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
Bob has a permutation of integers from 1 to n.
Denote this permutation as p. The i-th
element of p will be denoted as pi.
For all pairs of distinct integers i, j between 1 and n,
he wrote the number ai, j = min(pi, pj).
He writes ai, i = 0 for
all integer i from 1 to n.
Bob gave you all the values of ai, j that
he wrote down. Your job is to reconstruct any permutation that could have generated these values. The input will be formed so that it is guaranteed that there is at least one solution that is consistent with the information given.
Input
The first line of the input will contain a single integer n (2 ≤ n ≤ 50).
The next n lines will contain the values of ai, j.
The j-th number on the i-th
line will represent ai, j.
The i-th number on the i-th
line will be0. It's guaranteed that ai, j = aj, i and
there is at least one solution consistent with the information given.
Output
Print n space separated integers, which represents a permutation that could have generated these values. If there are multiple possible
solutions, print any of them.
Sample test(s)
input
2 0 1 1 0
output
2 1
input
5 0 2 2 1 2 2 0 4 1 3 2 4 0 1 3 1 1 1 0 1 2 3 3 1 0
output
2 5 4 1 3
Note
In the first case, the answer can be {1, 2} or {2, 1}.
In the second case, another possible answer is {2, 4, 5, 1, 3}.
思路:
这题其实只要将每列出现次数最多的数统计出来就是这个位置的数了,如果每个数都是出现一样多的话,那么就是可以随便填,所以将固定位置的数填好后,其他位置就随便找一个没填过的数放入就行了。
AC代码:
#include<iostream> #include<algorithm> #include<cstring> #include<string> #include<cstdio> #include<cmath> #include<ctime> #include<cstdlib> #include<queue> #include<vector> #include<set> using namespace std; const int T=150; #define inf 0x3f3f3f3fL #define mod 1000000000 typedef long long ll; typedef unsigned long long LL; int main() { #ifdef zsc freopen("input.txt","r",stdin); #endif int n,m,i,j,k; bool vis[T]; int v[T][T],cnt[T][T]; while(~scanf("%d",&n)) { memset(vis,false,sizeof(vis)); memset(cnt,0,sizeof(cnt)); for(i=0;i<n;++i){ for(j=0;j<n;++j){ scanf("%d",&v[i][j]); cnt[i][v[i][j]]++; if(cnt[i][51]<cnt[i][v[i][j]]){ cnt[i][51] = cnt[i][v[i][j]]; cnt[i][52] = v[i][j]; } } } for(i=0;i<n;++i){ if(cnt[i][51]>1){ vis[cnt[i][52]]=true; } } for(i=0;i<n;++i){ if(cnt[i][51]>1){ printf("%d ",cnt[i][52]); } else { for(j=1;j<=n;++j){ if(!vis[j]){ printf("%d ",j); vis[j] = true; break; } } } } printf("\n"); } return 0; }
相关文章推荐
- Transformation 能将 Windows XP/Server 2003 操作系统,完美地模拟成 Windows Vista 的软件
- 用javascript和css模拟select的脚本
- PHP模拟asp.net的StringBuilder类实现方法
- C#使用ImitateLogin模拟登录百度
- javascript用层模拟可移动的小窗口
- 自编jQuery插件实现模拟alert和confirm
- JS模拟按钮点击功能的方法
- PHP模拟asp中response类实现方法
- 模拟Spring的简单实现
- javascript 模拟点击广告
- JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
- php实现模拟post请求用法实例
- JavaScript实现MIPS乘法模拟的方法
- 模拟xcopy的函数
- JS模拟实现Select效果代码
- php模拟服务器实现autoindex效果的方法
- C# SendInput 模拟鼠标操作的实现方法
- PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
- js实现模拟银行卡账号输入显示效果
- JS模拟并美化的表单控件完整实例