链接:

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. 【模板】RMQ问题的ST表实现

    $RMQ$问题:给定一个长度为$N$的区间,$M$个询问,每次询问$[L_i,R_i]$这段区间元素的最大值/最小值. $RMQ$的高级写法一般有两种,即为线段树和$ST$表. 本文主要讲解一下$ST ...

  2. Educational Codeforces Round 24 D

    Alice and Bob got very bored during a long car trip so they decided to play a game. From the window ...

  3. linux常用的shell命令

    1.shell介绍 shell(外壳)是linux系统的最外层,简单的说,它就是用户和操作系统之间的一个命令解释器. 2.shell命名的使用 ls :查看当前目录的信息,list .        ...

  4. 生成HTML表格的后台模板代码

    有时候,我们需要在后台拼接生成前端的html表格,一般的做法就是各种string.StringBuilder的拼接(例子省略...),这样的话如果表头不同就没法做到代码的重用,增加代码的冗余,下面我分 ...

  5. 享元模式及php实现

    享元模式: 享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度对象的复用.系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用.由于享元模式要求 ...

  6. CSS预处理less基本使用

    中文API http://lesscss.cn   变量 @变量名:变量值   @maincolor:#aeeeee; @acolor:#ffffff; @ht200:200px; @ht50:50p ...

  7. 全文索引Elasticsearch,Solr,Lucene

    最近项目组安排了一个任务,项目中用到了全文搜索,基于全文搜索 Solr,但是该 Solr 搜索云项目不稳定,经常查询不出来数据,需要手动全量同步,而且是其他团队在维护,依赖性太强,导致 Solr 服务 ...

  8. AJAX中文乱码解决方案

    通过AJAX获取数据中文乱码解决方案: @ResponseBody 作用: 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到 ...

  9. 10个顶级的CSS3代码生成器

    新出来的在线工具和web应用允许开发人员快速创建网站,而无需手动一行一行地编写代码.当前,不断有新的框架和代码库涌现在前端开发这个领域里. 但是,这也让许多开发人员忘记了代码生成器以及它们在构建网站时 ...

  10. pagehelper 分页

    分页jar包: <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pa ...