链接:

https://www.nowcoder.com/acm/contest/52/M

题意:

给定n个队伍的到场时间, 有3个报道位, 每个队伍报道需要b时间, 求所有报道完成的时间。

分析:

一开始写了一个模拟时间轴的, 虽然过了,但是在时间很大的时候行不通。

 #include<bits/stdc++.h>
using namespace std;
int main()
{
int a[], u[];
int n, b, time, ok, T;
scanf("%d", &T);
while(T--){
time = , ok = ;
a[] = a[] = a[] = ;
u[] = u[] = u[] = ;
priority_queue<int, vector<int>, greater<int> > q;
scanf("%d", &n);
for(int i = ; i < n; i++){
int t; scanf("%d", &t);
q.push(t);
}
scanf("%d", &b);
a[] = q.top() + b; q.pop();
u[] = ;
while(){ for(int i = ; i < ; i++){
if(u[i] && time >= a[i]) u[i] = ;
if(!q.empty() && time >= q.top() && !u[i]){
u[i] = ;
a[i] = time + b;
q.pop();
}
}
// printf("%d %d %d %d\n", time, a[0], a[1], a[2]);
if(u[] == && u[] == && u[] == && q.empty()) break;
time++;
}
printf("%d\n", time);
}
return ;
}

模拟时间轴

后来看了一下人家的代码, 发现可以用优先队列模拟报道。

就是一开始对报道时间排序,将3个报道位置加入优先队列, 然后每次都取最早完成报道的时间, 如果这个时间t小于队伍时间, 那么就将a[i] + b入队, 否则将t+b入队。

最后就能求出全部完成报道的时间了

 #include<bits/stdc++.h>
using namespace std;
int main()
{
// freopen("debug.txt","r", stdin);
int a[];
int n, b, T;
scanf("%d", &T);
while(T--){
scanf("%d", &n);
for(int i = ; i < n; i++){
scanf("%d", &a[i]);
}
scanf("%d", &b);
sort(a, a + n);
if( n <= ){
printf("%d\n", a[n-] + b);
continue;
}
priority_queue<int, vector<int>, greater<int> > q;
for(int i = ; i < ; i++) q.push(a[i] + b);
for(int i = ; i < n; i++){
int x = q.top();q.pop();
if(a[i] < x){
q.push(x + b);
}
else q.push(a[i] + b);
}
while(!q.empty()){
q.pop();
if(q.size() == ) printf("%d\n", q.top());
}
}
return ;
}

NowCoder小杰的签到题(模拟,思维)的更多相关文章

  1. A 小石的签到题

    题目链接:https://ac.nowcoder.com/acm/contest/949/A 思路: 这题明确的说了是个签到题,但是一直怀疑不是签到题,是唬我的,结果仔细想了想真是这么回事. 每个人必 ...

  2. 模拟+思维 HDOJ 5319 Painter

    题目传送门 /* 题意:刷墙,斜45度刷红色或蓝色,相交的成绿色,每次刷的是连续的一段,知道最终结果,问最少刷几次 模拟+思维:模拟能做,网上有更巧妙地做法,只要前一个不是一样的必然要刷一次,保证是最 ...

  3. A 洛谷 P3601 签到题 [欧拉函数 质因子分解]

    题目背景 这是一道签到题! 建议做题之前仔细阅读数据范围! 题目描述 我们定义一个函数:qiandao(x)为小于等于x的数中与x不互质的数的个数. 这题作为签到题,给出l和r,要求求. 输入输出格式 ...

  4. fjwc2019 D3T1 签到题 (贪心)

    #184. 「2019冬令营提高组」签到题 每次询问接近O(1).......考虑贪心 怎么贪心呢? 对于相邻的两个数,我们要保证异或x后单调不降 我们找到两个数二进制上最高的相异位 当左边的数相异位 ...

  5. CTF-练习平台-WEB之 签到题

    一.签到题 根据提示直接加群在群公告里就能找到~

  6. 洛谷P3601签到题(欧拉函数)

    题目背景 这是一道签到题! 建议做题之前仔细阅读数据范围! 题目描述 我们定义一个函数:qiandao(x)为小于等于x的数中与x不互质的数的个数. 这题作为签到题,给出l和r,要求求. 输入输出格式 ...

  7. 【洛谷九月月赛T1】签到题(bsgs)(快速乘)

    说好的签到题呢qwq....怎么我签到题都不会啊qwq 之后看了bsgs才发现貌似不是那么那么难fake!!什么东西... 先贴上部分分做法(也就是枚举1的个数,然后每一步都进行取模(这和最后取模结果 ...

  8. WEB新手之签到题

    写一写web新手赛的题. 这是签到题,开始时需要耐心等待页面中字母全部出现. 字母全部出现后,会跳转到另一个界面,如上图所示.F12没什么特别的地方,这题应该有点难度. 按往常一样,先抓包. 按英文提 ...

  9. EOJ Monthly 2019.1 唐纳德先生与这真的是签到题吗 【数学+暴力+multiset】

    传送门:https://acm.ecnu.edu.cn/contest/126/ C. 唐纳德先生与这真的是签到题吗 单测试点时限: 6.0 秒 内存限制: 1024 MB 唐纳德先生在出月赛的过程中 ...

随机推荐

  1. AtCoder Regular Contest 074 F - Lotus Leaves

    题目传送门:https://arc074.contest.atcoder.jp/tasks/arc074_d 题目大意: 给定一个\(H×W\)的网格图,o是可以踩踏的点,.是不可踩踏的点. 现有一人 ...

  2. Solutions to an Equation LightOJ - 1306

    Solutions to an Equation LightOJ - 1306 一个基础的扩展欧几里得算法的应用. 解方程ax+by=c时,基本就是先记录下a和b的符号fla和flb(a为正则fla为 ...

  3. Codeforces Round #323 (Div. 2)

    被进爷坑了,第二天的比赛改到了12点 水 A - Asphalting Roads /************************************************ * Author ...

  4. centOS 部署服务器(二)

    (1)安装nginx 1.下载地址: http://nginx.org/en/download.html ,并解压到目录下 2.安装依赖包 yum -y install pcre*  yum -y i ...

  5. TPS763xxDBV线性稳压器

    DC DC converter 是直流变换器,因为直流不能通过变压器改变电压,要将直流电压通过振荡变成交流电压,再通过变压器或斩波器将电压升高或降低,再经滤波变成所需的电压.而voltage regu ...

  6. CentOS 6.9:MySQL Daemon failed to start.

    [root@Server_1 12:02:58 ~ 25]#service mysqld start MySQL Daemon failed to start.Starting mysqld: [ro ...

  7. collection接口的实现:set,list,queue

    在java.util包中提供了一些集合类,常用的有List.Set和Map类,其中List类和Set类继承了Collection接口.这些集合类又称为容器,长度是可变的,数组用来存放基本数据类型的数据 ...

  8. archsummit_bj2014

    http://bj2014.archsummit.com/schedule.html 大会日程 时间 2014年12月19日 会议室 二号会议厅 7:45 入场注册 8:45 开场致辞 9:30 论高 ...

  9. java学习第二章

  10. sql server的一个字符串分割的表值函数方法

    ALTER function [dbo].[BOSplit](@SourceSql nvarchar(max),  --要分割的字段@StrSeprate varchar(10)      --分割符 ...