天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情。为此我们制定如下策略:假设某赛场有 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 开始。

输入样例:

  1. 3
  2. 3 4 2

输出样例:

  1. #1
  2. 1 4 7 10 13 16 19 22 25 28
  3. 31 34 37 40 43 46 49 52 55 58
  4. 61 63 65 67 69 71 73 75 77 79
  5. #2
  6. 2 5 8 11 14 17 20 23 26 29
  7. 32 35 38 41 44 47 50 53 56 59
  8. 62 64 66 68 70 72 74 76 78 80
  9. 82 84 86 88 90 92 94 96 98 100
  10. #3
  11. 3 6 9 12 15 18 21 24 27 30
  12. 33 36 39 42 45 48 51 54 57 60

2018年天梯赛的第一题,比赛的时候题目没看懂,可惜了。

今天来补题也是不知道自己错在哪,一直有组数据过不了,后面参考了https://blog.csdn.net/moonlighttlj/article/details/79777016才AC。

如果有什么数据欢迎指教~

题目思路的话,其实就是按照题目的意思模拟,多注意写细节吧!

20分代码:

  1. //Asimple
  2. #include <bits/stdc++.h>
  3. #define CLS(a, v) memset(a, v, sizeof(a))
  4. using namespace std;
  5. typedef long long ll;
  6. const ll maxn = 100 + 5;
  7. int n, m, res, ans, len, T, k, num, sum, t, cnt;
  8. vector<int> a[maxn];
  9. int b[maxn];
  10. bool vis[maxn];
  11.  
  12. void input() {
  13. ios_base::sync_with_stdio(false);
  14. cin >> n;
  15. for(int i=0; i<n; i++) {
  16. cin >> b[i];
  17. sum += b[i]*10;
  18. }
  19. CLS(vis, false);
  20. int cas = 1, man = 0;
  21. while( sum -- ) {
  22. for(int i=0; i<n; i++) {
  23. if( a[i].size() < b[i]*10 ) {
  24. a[i].push_back(cas);
  25. if( man+1 == n ) cas += 2;
  26. else cas += 1;
  27. }
  28. if ( vis[i]==false && a[i].size()>=b[i]*10 ) {
  29. man ++;
  30. vis[i] = true;
  31. }
  32. }
  33. }
  34. for(int i=0; i<n; i++) {
  35. cout << "#" << i + 1 << endl;
  36. for(int j=0; j<a[i].size(); j++) {
  37. cout << a[i][j];
  38. if( j%10 == 9 ) cout << "\n";
  39. else cout << " ";
  40. }
  41. }
  42. }
  43.  
  44. int main(){
  45. input();
  46. return 0;
  47. }

  16分代码:

感谢浙江中医药大学的同学提出的数据:

3
3 1 1

4
3 3 4 3

 
代码还在改。。。。
  1. //Asimple
  2. #include <bits/stdc++.h>
  3. #define CLS(a, v) memset(a, v, sizeof(a))
  4. using namespace std;
  5. typedef long long ll;
  6. const ll maxn = 100 + 5;
  7. int n, m, res, ans, len, T, k, num, sum, t, cnt;
  8. vector<int> a[maxn];
  9. int b[maxn];
  10.  
  11. void input() {
  12. ios_base::sync_with_stdio(false);
  13. cin >> n;
  14. for(int i=0; i<n; i++) {
  15. cin >> b[i];
  16. sum += b[i]*10;
  17. }
  18. int cas = 1, man = 0;
  19. while( sum -- ) {
  20. for(int i=0; i<n; i++) {
  21. if( a[i].size() < b[i]*10 ) {
  22. a[i].push_back(cas);
  23. if( man+1 == n ) cas += 1;
  24. else cas ++;
  25. }
  26. }
  27. man = 0;
  28. for(int i=0; i<n; i++) {
  29. if( a[i].size() >= b[i]*10 ) man ++;
  30. }
  31. if( man +1 >= n ) cas += 1;
  32. }
  33. for(int i=0; i<n; i++) {
  34. cout << "#" << i + 1 << endl;
  35. for(int j=0; j<a[i].size(); j++) {
  36. cout << a[i][j];
  37. if( j%10 == 9 ) cout << "\n";
  38. else cout << " ";
  39. }
  40. }
  41. }
  42.  
  43. int main(){
  44. input();
  45. return 0;
  46. }

  2018年4月4日改:

    20分AC,emmmm,感觉AC了终于知道题目的一些意思了。包括一些数据为什么是那个样子。

  每次分配人之后,先按之前的编号把下一个编号确定,然后再判断是不是只有最后一个队。真的有点坑。

  1. //Asimple
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4. typedef long long ll;
  5. const ll maxn = + ;
  6. int n, m, res, ans, len, T, k, num, sum, t, cnt;
  7. vector<int> a[maxn];
  8. int b[maxn];
  9.  
  10. void input() {
  11. ios_base::sync_with_stdio(false);
  12. cin >> n;
  13. for(int i=; i<n; i++) {
  14. cin >> b[i];
  15. sum += b[i]*;
  16. }
  17. int cas = , man = ;
  18. while( sum -- ) {
  19. for(int i=; i<n; i++) {
  20. if( a[i].size() < b[i]* ) {
  21. a[i].push_back(cas);
  22. if( man+ >= n ) cas += ;
  23. else cas ++;
  24. man = ;
  25. for(int i=; i<n; i++) {
  26. if( a[i].size() >= b[i]* )
  27. man ++;
  28. }
  29. }
  30. }
  31. }
  32. for(int i=; i<n; i++) {
  33. cout << "#" << i + << endl;
  34. for(int j=; j<a[i].size(); j++) {
  35. cout << a[i][j];
  36. if( j% == ) cout << "\n";
  37. else cout << " ";
  38. }
  39. }
  40. }
  41.  
  42. int main(){
  43. input();
  44. return ;
  45. }

L1-049. 天梯赛座位分配的更多相关文章

  1. PAT L1 049 天梯赛座位分配

    天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] 支队伍,每队 10 位 ...

  2. L1-049 天梯赛座位分配​​​​​​​

    L1-049 天梯赛座位分配 (20 分) 天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i ...

  3. L1-049 天梯赛座位分配 (20 分)

    L1-049 天梯赛座位分配 (20 分)(Java解法) 天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所 ...

  4. L1-1 天梯赛座位分配

    天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] 支队伍,每队 10 位 ...

  5. PAT天梯赛 L1-049 天梯赛座位分配

    题目链接:点击打开链接 天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] ...

  6. L1-049 天梯赛座位分配 (20 分)

    天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] 支队伍,每队 10 位 ...

  7. pta l1-49(天梯赛座位分配)

    题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805081289900032 题意:给定n个高校,每个高校m[i ...

  8. PAT 天梯赛 L1-049. 天梯赛座位分配 【循环】

    题目链接 https://www.patest.cn/contests/gplt/L1-049 思路 用一个二维数组来保存一个学校每个队员的座位号 然后需要判断一下 目前的座位号 与该学校当前状态下最 ...

  9. 团体程序设计天梯赛 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 ...

随机推荐

  1. 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 ...

  2. post数据过多时,有可能会丢失数据

    开奖时,post时请求的user_id过多,导致活动id丢失

  3. mybatis04--Mapper动态代理实现

    通过之前的操作,我们发现dao的实现类其实并没有做什么实质性的工作,仅仅是通过sqlSession的相关API定位到StudentMapper映射文件 中的ID中的sql语句,其实真正操作DB的是ma ...

  4. Vs code常用插件

    Vs code常用插件 1.View In Browser 由于 VSCode 没有提供直接在浏览器中打开文件的内置界面,所以此插件在快捷菜单中添加了在默认浏览器查看文件选项,以及在客户端(Firef ...

  5. Ubuntu下安装LNMP

    1.安装mysql sudo apt-get install mysql-server mysql-client 2.安装nginx sudo apt-get install nginx 安装完后重启 ...

  6. 批量数据的Excel导入

    public void importIndexHistoryByCsv(String fileName) { logger.info("开始获取Csv文件导入到数据库,csv文件名为:&qu ...

  7. 谁考了第k名

    题目描述: 在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第k名学生的学号和成绩. 输入: 第一行有两个整数,分别是学生的人数n(1≤n≤100),和求第k名学生的k(1≤k ...

  8. HDU 1010生成树

    求起点到终点的最短权值和

  9. Brocade SAN交换机常用命令

    Brocade SAN交换机常用命令 使用电脑连接Brocade SAN交换机常用命令 使用电脑连接管理网口,默认IP地址为:10.77.77.77,掩码:255.255.255.0 默认用户名:ad ...

  10. Codeforces 570 - A/B/C/D/E - (Done)

    链接:https://codeforces.com/contest/570 A - Elections - [水] AC代码: #include<bits/stdc++.h> using ...