codeforces A. Parliament of Berland【水】
来源:互联网 发布:有什么听书软件 编辑:程序博客网 时间:2024/06/06 12:47
网址:
http://codeforces.com/contest/644/problem/A
There are n parliamentarians in Berland. They are numbered with integers from 1 to n. It happened that all parliamentarians with odd indices are Democrats and all parliamentarians with even indices are Republicans.
New parliament assembly hall is a rectangle consisting of a × b chairs — a rows of b chairs each. Two chairs are considered neighbouring if they share as side. For example, chair number 5 in row number 2 is neighbouring to chairs number 4 and 6 in this row and chairs with number 5 in rows 1 and 3. Thus, chairs have four neighbours in general, except for the chairs on the border of the hall
We know that if two parliamentarians from one political party (that is two Democrats or two Republicans) seat nearby they spent all time discussing internal party issues.
Write the program that given the number of parliamentarians and the sizes of the hall determine if there is a way to find a seat for any parliamentarian, such that no two members of the same party share neighbouring seats.
The first line of the input contains three integers n, a and b (1 ≤ n ≤ 10 000, 1 ≤ a, b ≤ 100) — the number of parliamentarians, the number of rows in the assembly hall and the number of seats in each row, respectively.
If there is no way to assigns seats to parliamentarians in a proper way print -1.
Otherwise print the solution in a lines, each containing b integers. The j-th integer of the i-th line should be equal to the index of parliamentarian occupying this seat, or 0 if this seat should remain empty. If there are multiple possible solution, you may print any of them.
3 2 2
0 31 2
8 4 3
7 8 30 1 46 0 50 2 0
10 2 2
-1
In the first sample there are many other possible solutions. For example,
3 20 1
and
2 13 0
The following assignment
3 21 0
is incorrect, because parliamentarians 1 and 3 are both from Democrats party but will occupy neighbouring seats.
题意:
给出编号为 1-n 的 n 个人,和a*b 规格的矩形会场,问能否安排一种次序,使得任意两个奇偶性相同的数字都不相邻,如果可以输出符合条件的任何一种方案,否则输出-1
题解:
不难发现,只要能所有人都可以坐下,就肯定能找到符合条件的方案,然后是找出一种方案:
假设:
n=9 a=3 b=3
1 2 3
4 5 6
7 8 9
符合要求
如果数据是 n=8 a=2 b=4
那么
1 2 3 4
8 7 6 5
符合要求
然后规律就这样出来了....直接循环打表吧........
规律总结如下:
所有的如果列数是偶数,那么任何相邻的两行的数字的增减性(从左到右)相反,否则相同....
#include<stdio.h>#include<string.h>int n,a,b,map[105][105];void slove(){memset(map,0,sizeof(map));if(n>a*b){printf("-1\n");return;}int cnt=0;for(int i=0;i<a&&cnt<n;i+=2){for(int j=0;j<b&&cnt<n;++j){map[i][j]=++cnt;}if(i+1>=a) {break;}if(b&1){for(int j=0;j<b&&cnt<n;++j){map[i+1][j]=++cnt;}}else{for(int j=b-1;j>=0&&cnt<n;--j){map[i+1][j]=++cnt;}}}for(int i=0;i<a;++i){for(int j=0;j<b-1;++j){printf("%d ",map[i][j]);}printf("%d\n",map[i][b-1]);}}int main(){while(~scanf("%d%d%d",&n,&a,&b)){slove();}return 0;}
- codeforces A. Parliament of Berland【水】
- Codeforces 644A Parliament of Berland 【水题】
- CodeForces 644 A.Parliament of Berland(构造)
- Code Forces 644A Parliament of Berland
- codeforces 837B Flag of Berland
- 【模拟】Codeforces 691A Fashion in Berland
- codeforces(567A)--A. Lineland Mail--B. Berland National Library
- Codeforces 808G Anthem of Berland[dp][kmp]
- Educational Codeforces Round 26:B. Flag of Berland
- Educational Codeforces Round 26 B. Flag of Berland
- Codeforces 691A. Fashion in Berland (模拟)
- CF Flag of Berland
- CodeForces 638 B.Making Genome in Berland(水~)
- CodeForces 370B. Berland Bingo
- codeforces C. Ancient Berland Circus
- CodeForces 567- Berland National Library
- Codeforces B - Berland National Library
- Codeforces 370B Berland Bingog
- plsql和android和jsp的关联
- linq和ssh和windows的关联
- maven实战常见错误与解决方法
- tomcat和tomcat和mangodb的关联
- 【VB.NET视频总结(一)】
- codeforces A. Parliament of Berland【水】
- samba和ruby和sybase的关联
- jQuery.Autocomplete实现自动完成功能(详解)
- 邻接表/邻接矩阵
- plsql和jetty和word的关联
- dos和groovy和linq的关联
- 基类析构函数为virtual的好处
- 提高工作效率
- MySQL 数据库设计初步规范