CodeForces 644 A.Parliament of Berland(构造)
2017-04-28 14:05
211 查看
Description
一个a*b的会场,有n个人来开会,问如何安排座位能够使得任意两个奇偶性相同的客人不相邻
Input
三个整数n,a,b表示客人数和会场规模(1<=n<=1e4,1<=a,b<=100)
Output
如果存在合法方案则输出一个a*b矩阵表示每位客人的位置,某个位置为0表示该位置为空,否则输出-1
Sample Input
3 2 2
Sample Output
0 3
1 2
Solution
如果n > a*b显然无解,否则看b的奇偶性,如果b为奇数或者a=1,则把客人按编号从1到n一排排轮流放即可,这样首先左右相邻的人奇偶性不同,其次上下相邻的人差b个位置,即奇数个位置,奇偶性也不同,否则,把客人按编号从1到n按S型放入,左右相邻的人奇偶性依旧不同,而一个在第x列的客人与其下面相邻的客人差2*(b-x)+1个位置,同样是奇数个位置,奇偶性也不同,故按此构造是合法解
Code
一个a*b的会场,有n个人来开会,问如何安排座位能够使得任意两个奇偶性相同的客人不相邻
Input
三个整数n,a,b表示客人数和会场规模(1<=n<=1e4,1<=a,b<=100)
Output
如果存在合法方案则输出一个a*b矩阵表示每位客人的位置,某个位置为0表示该位置为空,否则输出-1
Sample Input
3 2 2
Sample Output
0 3
1 2
Solution
如果n > a*b显然无解,否则看b的奇偶性,如果b为奇数或者a=1,则把客人按编号从1到n一排排轮流放即可,这样首先左右相邻的人奇偶性不同,其次上下相邻的人差b个位置,即奇数个位置,奇偶性也不同,否则,把客人按编号从1到n按S型放入,左右相邻的人奇偶性依旧不同,而一个在第x列的客人与其下面相邻的客人差2*(b-x)+1个位置,同样是奇数个位置,奇偶性也不同,故按此构造是合法解
Code
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<vector> #include<queue> #include<map> #include<set> #include<ctime> using namespace std; typedef long long ll; #define INF 0x3f3f3f3f #define maxn 111 int n,a,b,m[maxn][maxn]; int main() { while(~scanf("%d%d%d",&n,&a,&b)) { if(n>a*b)printf("-1\n"); else { if(b%2||a==1) { int k=1; for(int i=1;i<=a;i++) for(int j=1;j<=b;j++) if(k<=n)m[i][j]=k++; else m[i][j]=0; } else { int k=1; for(int i=1;i<=a;i++) { if(i%2) { for(int j=1;j<=b;j++) if(k<=n)m[i][j]=k++; else m[i][j]=0; } else { for(int j=b;j>=1;j--) if(k<=n)m[i][j]=k++; else m[i][j]=0; } } } for(int i=1;i<=a;i++) for(int j=1;j<=b;j++) printf("%d%c",m[i][j],j==b?'\n':' '); } } return 0; }
相关文章推荐
- Codeforces 612E - Square Root of Permutation (置换+构造)
- Codeforces 808G. Anthem of Berland
- codeforces A. Parliament of Berland【水】
- CodeForces - 148C Terse princess (构造)
- CodeForces-329C(div1):Graph Reconstruction(随机&构造)
- 【Codeforces 600C. Make Palindrome】& 构造
- 【codeforces】gym 101137 K - Knights of the Old Republic【用最小生成树对图做集合dp】
- UVA 668 - Parliament(贪心构造)
- B. Maximum of Maximums of Minimums --codeforces
- codeforces 460D Little Victor and Set(构造、枚举)
- 【CodeForces】915 F. Imbalance Value of a Tree 并查集
- Codeforces 702E Analysis of Pathes in Functional Graph(倍增)
- CodeForces - 361B D - Levko and Permutation 构造
- CodeForces - 848A From Y to Y(构造)
- 【打CF,学算法——二星级】CodeForces 237B Young Table (构造)
- Codeforces 851 D. Arpa and a list of numbers(技巧)
- CodeForces 803A Maximal Binary Matrix-【思维+构造】
- UVa 769 Magic of David Copperfield(构造)
- CodeForces 732 B.Cormen — The Best Friend Of a Man(贪心)
- Codeforces-396A - On Number of Decompositions into Multipliers-组合计数