团体程序设计天梯赛 L1-049. 天梯赛座位分配(测试数据+不同方法)
Data:
/*
3
3 2 1
#1
1 4 7 10 13 16 19 22 25 28
31 33 35 37 39 41 43 45 47 49
51 53 55 57 59 61 63 65 67 69
#2
2 5 8 11 14 17 20 23 26 29
32 34 36 38 40 42 44 46 48 50
#3
3 6 9 12 15 18 21 24 27 30
2
1 2
#1
1 3 5 7 9 11 13 15 17 19
#2
2 4 6 8 10 12 14 16 18 20
22 24 26 28 30 32 34 36 38 40
1
3
#1
1 3 5 7 9 11 13 15 17 19
21 23 25 27 29 31 33 35 37 39
41 43 45 47 49 51 53 55 57 59
*/
Way1 数组:
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <stdbool.h>
#include <set>
#include <vector>
#include <map>
#include <algorithm>
using namespace std; long f[][],g[],a[]; int main()
{
long n,i,j,num,c,pos;
scanf("%ld",&n);
for (i=;i<=n;i++)
{
scanf("%ld",&a[i]);
a[i]*=;
g[i]=;
} c=n;
num=;
pos=;
while (c>)
{
for (i=;i<=n;i++)
if (g[i]!=a[i])
{
num++;
g[i]++;
f[i][g[i]]=num;
if (g[i]==a[i])
c--;
pos=i;
}
}
if (c==)
{
for (j=;j<=n;j++)
if (g[j]!=a[j])
break;
if (pos!=j)
num++;
else
num+=;
g[j]++;
f[j][g[j]]=num;
for (i=g[j]+;i<=a[j];i++)
{
num+=;
g[j]++;
f[j][g[j]]=num;
}
}
for (i=;i<=n;i++)
{
printf("#%ld\n",i);
for (j=;j<=a[i];j++)
{
printf("%ld",f[i][j]);
if (j%==)
printf("\n");
else
printf(" ");
}
}
return ;
}
Way2 链环:
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <stdbool.h>
#include <set>
#include <vector>
#include <map>
#include <algorithm>
using namespace std; //Á´»·
struct node
{
long a,b;
struct node *next,*pre;
}*q,*p,*r; long sch[][],g[]; int main()
{
long n,i,j,d,num=;
bool vis;
q=NULL;
scanf("%ld",&n);
for (i=;i<=n;i++)
{
scanf("%ld",&d);
p=(struct node *) malloc (sizeof(struct node));
p->a=i;
p->b=d*;
if (q==NULL)
q=p;
else
{
r->next=p;
p->pre=r;
}
r=p;
}
r->next=q;
q->pre=r; vis=false;
p=q;
while ()
{
if (p->a==p->next->a && vis)
num+=;
else
num++;
g[p->a]++;
sch[p->a][g[p->a]]=num;
p->b--;
vis=true;
if (p->b==)
{
if (p->a==p->next->a)
break;
else
{
p->pre->next=p->next;
p->next->pre=p->pre;
if (p->pre->a==p->next->a)
vis=false;
}
}
p=p->next;
}
for (i=;i<=n;i++)
{
printf("#%ld\n",i);
for (j=;j<=g[i];j++)
{
printf("%ld",sch[i][j]);
if (j%==)
printf("\n");
else
printf(" ");
}
}
return ;
}
Way3 vector:
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <stdbool.h>
#include <set>
#include <vector>
#include <map>
#include <algorithm>
using namespace std; vector<pair<int,int> > f;
vector<int> sch[]; int main()
{
long n,a,num,pre,i;
vector<pair<int,int> >::iterator j;
vector<int>::iterator k;
scanf("%ld",&n);
for (i=;i<=n;i++)
{
scanf("%ld",&a);
f.push_back(make_pair(a*,i));
}
num=;
pre=-;
while (!f.empty())
{ for (j=f.begin();j!=f.end();j++)
{
if (pre==j->second)
num+=;
else
num++;
sch[j->second].push_back(num);
pre=j->second;
j->first--;
if (j->first==)
{
f.erase(j);
j--;
}
}
}
for (i=;i<=n;i++)
{
printf("#%ld\n",i);
for (k=sch[i].begin(),a=;k!=sch[i].end();k++,a++)
{
printf("%ld",*k);
if (a%==)
printf("\n");
else
printf(" ");
}
}
return ;
}
团体程序设计天梯赛 L1-049. 天梯赛座位分配(测试数据+不同方法)的更多相关文章
- PAT L1 049 天梯赛座位分配
天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] 支队伍,每队 10 位 ...
- 团体程序设计天梯赛(CCCC) L3021 神坛 的一些错误做法(目前网上的方法没一个是对的) 和 一些想法
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3019 代码排版 方法与编译原理密切相关,只有一个测试点段错误
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3015 球队“食物链” 状态压缩
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code #include <cstdio> #include ...
- 团体程序设计天梯赛(CCCC) L3014 周游世界 BFS证明
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3013 非常弹的球 不同思路
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3012 水果忍者 上凸或下凹的证明
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code #include <cstdio> #include ...
- 团体程序设计天梯赛(CCCC) L3009 长城 方法证明
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 树状数组+二分答案查询第k大的数 (团体程序设计天梯赛 L3-002. 堆栈)
前提是数的范围较小 1 数据范围:O(n) 2 查第k大的数i:log(n)(树状数组查询小于等于i的数目)*log(n)(二分找到i) 3 添加:log(n) (树状数组) 4 删除:log(n) ...
随机推荐
- [机器学习]-K近邻-最简单的入门实战例子
本篇文章分为两个部分,前一部分主要简单介绍K近邻,后一部分是一个例子 第一部分--K近邻简介 从字面意思就可以容易看出,所谓的K近邻,就是找到某个样本距离(这里的距离可以是欧式距离,曼哈顿距离,切比雪 ...
- Vue 入门之组件化开发
Vue 入门之组件化开发 组件其实就是一个拥有样式.动画.js 逻辑.HTML 结构的综合块.前端组件化确实让大的前端团队更高效的开发前端项目.而作为前端比较流行的框架之一,Vue 的组件和也做的非常 ...
- 第35次Scrum会议(11/23)【欢迎来怼】
一.小组信息 队名:欢迎来怼小组成员队长:田继平成员:李圆圆,葛美义,王伟东,姜珊,邵朔,阚博文小组照片 二.开会信息 时间:2017/11/23 17:03~17:24,总计21min.地点:东北师 ...
- [2019BUAA软件工程]第0次个人作业
我 & 计算机 写在前面 撰写本博客时,笔者正就读北航计算机系大三下的软件工程课程.借由这次博客作业的机会,笔者从高考时与计算机专业结缘.大学对计算机的学习以及对未来的计划三方面进行了些许 ...
- 奔跑吧DKY——团队Scrum冲刺阶段博客汇总
第一周:团队展示 团队选题 需求规格说明书 第二周:完善需求规格说明书.制定团队编码规范.通过团队项目数据库设计 奔跑吧DKY--团队Scrum冲刺阶段-Day 1-领航 奔跑吧DKY--团队Scru ...
- css3学习笔记一
首先界面是二维的但也可以有三维的效果.先了解浏览器兼容性问题,火狐加前缀(-moz-)IE加(-MF-)谷歌加(-webkit),简单介绍css3的几个属性. 对于背景来说如果是单纯着一种颜色可以会单 ...
- 第二次作业利用java语言编写计算器进行四则运算
随着第一次作业的完成,助教 牛老师又布置了第二次作业:用java语言编写一个程序然后进行四则运算用户用键盘输入一个字符来结束程序显示统计结果.一开始看到这个题目我也着实吓了一跳 因为不知道如何下手而且 ...
- BNUOJ 52308 We don't wanna work! set模拟
题目链接: https://acm.bnu.edu.cn/v3/problem_show.php?pid=52308 We don't wanna work! Time Limit: 60000msM ...
- 【CS231N】2、多类SVM
一.疑问 1. assignments1 linear_svm.py文件的函数 svm_loss_naive中,使用循环的方式实现梯度计算 linear_svm.py文件的函数 svm_loss_ve ...
- eg_8
问题描述:比较两数组是否相等 Demo_1: import java.util.Arrays; public class TestArray { public static void main(Str ...