L1-049. 天梯赛座位分配
天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情。为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] 支队伍,每队 10 位参赛选手。令每校选手排成一列纵队,第 i+1 队的选手排在第 i 队选手之后。从第 1 所学校开始,各校的第 1 位队员顺次入座,然后是各校的第 2 位队员…… 以此类推。如果最后只剩下 1 所学校的队伍还没有分配座位,则需要安排他们的队员隔位就坐。本题就要求你编写程序,自动为各校生成队员的座位号,从 1 开始编号。
输入格式:
输入在一行中给出参赛的高校数 N (不超过100的正整数);第二行给出 N 个不超过10的正整数,其中第 i 个数对应第 i 所高校的参赛队伍数,数字间以空格分隔。
输出格式:
从第 1 所高校的第 1 支队伍开始,顺次输出队员的座位号。每队占一行,座位号间以 1 个空格分隔,行首尾不得有多余空格。另外,每所高校的第一行按“#X”输出该校的编号X,从 1 开始。
输入样例:
- 3
- 3 4 2
输出样例:
- #1
- 1 4 7 10 13 16 19 22 25 28
- 31 34 37 40 43 46 49 52 55 58
- 61 63 65 67 69 71 73 75 77 79
- #2
- 2 5 8 11 14 17 20 23 26 29
- 32 35 38 41 44 47 50 53 56 59
- 62 64 66 68 70 72 74 76 78 80
- 82 84 86 88 90 92 94 96 98 100
- #3
- 3 6 9 12 15 18 21 24 27 30
- 33 36 39 42 45 48 51 54 57 60
2018年天梯赛的第一题,比赛的时候题目没看懂,可惜了。
今天来补题也是不知道自己错在哪,一直有组数据过不了,后面参考了https://blog.csdn.net/moonlighttlj/article/details/79777016才AC。
如果有什么数据欢迎指教~
题目思路的话,其实就是按照题目的意思模拟,多注意写细节吧!
20分代码:
- //Asimple
- #include <bits/stdc++.h>
- #define CLS(a, v) memset(a, v, sizeof(a))
- using namespace std;
- typedef long long ll;
- const ll maxn = 100 + 5;
- int n, m, res, ans, len, T, k, num, sum, t, cnt;
- vector<int> a[maxn];
- int b[maxn];
- bool vis[maxn];
- void input() {
- ios_base::sync_with_stdio(false);
- cin >> n;
- for(int i=0; i<n; i++) {
- cin >> b[i];
- sum += b[i]*10;
- }
- CLS(vis, false);
- int cas = 1, man = 0;
- while( sum -- ) {
- for(int i=0; i<n; i++) {
- if( a[i].size() < b[i]*10 ) {
- a[i].push_back(cas);
- if( man+1 == n ) cas += 2;
- else cas += 1;
- }
- if ( vis[i]==false && a[i].size()>=b[i]*10 ) {
- man ++;
- vis[i] = true;
- }
- }
- }
- for(int i=0; i<n; i++) {
- cout << "#" << i + 1 << endl;
- for(int j=0; j<a[i].size(); j++) {
- cout << a[i][j];
- if( j%10 == 9 ) cout << "\n";
- else cout << " ";
- }
- }
- }
- int main(){
- input();
- return 0;
- }
16分代码:
感谢浙江中医药大学的同学提出的数据:
3 1 1
4
3 3 4 3
- //Asimple
- #include <bits/stdc++.h>
- #define CLS(a, v) memset(a, v, sizeof(a))
- using namespace std;
- typedef long long ll;
- const ll maxn = 100 + 5;
- int n, m, res, ans, len, T, k, num, sum, t, cnt;
- vector<int> a[maxn];
- int b[maxn];
- void input() {
- ios_base::sync_with_stdio(false);
- cin >> n;
- for(int i=0; i<n; i++) {
- cin >> b[i];
- sum += b[i]*10;
- }
- int cas = 1, man = 0;
- while( sum -- ) {
- for(int i=0; i<n; i++) {
- if( a[i].size() < b[i]*10 ) {
- a[i].push_back(cas);
- if( man+1 == n ) cas += 1;
- else cas ++;
- }
- }
- man = 0;
- for(int i=0; i<n; i++) {
- if( a[i].size() >= b[i]*10 ) man ++;
- }
- if( man +1 >= n ) cas += 1;
- }
- for(int i=0; i<n; i++) {
- cout << "#" << i + 1 << endl;
- for(int j=0; j<a[i].size(); j++) {
- cout << a[i][j];
- if( j%10 == 9 ) cout << "\n";
- else cout << " ";
- }
- }
- }
- int main(){
- input();
- return 0;
- }
2018年4月4日改:
20分AC,emmmm,感觉AC了终于知道题目的一些意思了。包括一些数据为什么是那个样子。
每次分配人之后,先按之前的编号把下一个编号确定,然后再判断是不是只有最后一个队。真的有点坑。
- //Asimple
- #include <bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- const ll maxn = + ;
- int n, m, res, ans, len, T, k, num, sum, t, cnt;
- vector<int> a[maxn];
- int b[maxn];
- void input() {
- ios_base::sync_with_stdio(false);
- cin >> n;
- for(int i=; i<n; i++) {
- cin >> b[i];
- sum += b[i]*;
- }
- int cas = , man = ;
- while( sum -- ) {
- for(int i=; i<n; i++) {
- if( a[i].size() < b[i]* ) {
- a[i].push_back(cas);
- if( man+ >= n ) cas += ;
- else cas ++;
- man = ;
- for(int i=; i<n; i++) {
- if( a[i].size() >= b[i]* )
- man ++;
- }
- }
- }
- }
- for(int i=; i<n; i++) {
- cout << "#" << i + << endl;
- for(int j=; j<a[i].size(); j++) {
- cout << a[i][j];
- if( j% == ) cout << "\n";
- else cout << " ";
- }
- }
- }
- int main(){
- input();
- return ;
- }
L1-049. 天梯赛座位分配的更多相关文章
- PAT L1 049 天梯赛座位分配
天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] 支队伍,每队 10 位 ...
- L1-049 天梯赛座位分配
L1-049 天梯赛座位分配 (20 分) 天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i ...
- L1-049 天梯赛座位分配 (20 分)
L1-049 天梯赛座位分配 (20 分)(Java解法) 天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所 ...
- L1-1 天梯赛座位分配
天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] 支队伍,每队 10 位 ...
- PAT天梯赛 L1-049 天梯赛座位分配
题目链接:点击打开链接 天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] ...
- L1-049 天梯赛座位分配 (20 分)
天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] 支队伍,每队 10 位 ...
- pta l1-49(天梯赛座位分配)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805081289900032 题意:给定n个高校,每个高校m[i ...
- PAT 天梯赛 L1-049. 天梯赛座位分配 【循环】
题目链接 https://www.patest.cn/contests/gplt/L1-049 思路 用一个二维数组来保存一个学校每个队员的座位号 然后需要判断一下 目前的座位号 与该学校当前状态下最 ...
- 团体程序设计天梯赛 L1-049. 天梯赛座位分配(测试数据+不同方法)
Data: /*33 2 1#11 4 7 10 13 16 19 22 25 2831 33 35 37 39 41 43 45 47 4951 53 55 57 59 61 63 65 67 69 ...
随机推荐
- How to do sparse input text classification(dnn) using tensorflow
You can get complete example code from https://github.com/chenghuige/hasky/tree/master/applications ...
- post数据过多时,有可能会丢失数据
开奖时,post时请求的user_id过多,导致活动id丢失
- mybatis04--Mapper动态代理实现
通过之前的操作,我们发现dao的实现类其实并没有做什么实质性的工作,仅仅是通过sqlSession的相关API定位到StudentMapper映射文件 中的ID中的sql语句,其实真正操作DB的是ma ...
- Vs code常用插件
Vs code常用插件 1.View In Browser 由于 VSCode 没有提供直接在浏览器中打开文件的内置界面,所以此插件在快捷菜单中添加了在默认浏览器查看文件选项,以及在客户端(Firef ...
- Ubuntu下安装LNMP
1.安装mysql sudo apt-get install mysql-server mysql-client 2.安装nginx sudo apt-get install nginx 安装完后重启 ...
- 批量数据的Excel导入
public void importIndexHistoryByCsv(String fileName) { logger.info("开始获取Csv文件导入到数据库,csv文件名为:&qu ...
- 谁考了第k名
题目描述: 在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第k名学生的学号和成绩. 输入: 第一行有两个整数,分别是学生的人数n(1≤n≤100),和求第k名学生的k(1≤k ...
- HDU 1010生成树
求起点到终点的最短权值和
- Brocade SAN交换机常用命令
Brocade SAN交换机常用命令 使用电脑连接Brocade SAN交换机常用命令 使用电脑连接管理网口,默认IP地址为:10.77.77.77,掩码:255.255.255.0 默认用户名:ad ...
- Codeforces 570 - A/B/C/D/E - (Done)
链接:https://codeforces.com/contest/570 A - Elections - [水] AC代码: #include<bits/stdc++.h> using ...