NowCoder小杰的签到题(模拟,思维)
链接:
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小杰的签到题(模拟,思维)的更多相关文章
- A 小石的签到题
题目链接:https://ac.nowcoder.com/acm/contest/949/A 思路: 这题明确的说了是个签到题,但是一直怀疑不是签到题,是唬我的,结果仔细想了想真是这么回事. 每个人必 ...
- 模拟+思维 HDOJ 5319 Painter
题目传送门 /* 题意:刷墙,斜45度刷红色或蓝色,相交的成绿色,每次刷的是连续的一段,知道最终结果,问最少刷几次 模拟+思维:模拟能做,网上有更巧妙地做法,只要前一个不是一样的必然要刷一次,保证是最 ...
- A 洛谷 P3601 签到题 [欧拉函数 质因子分解]
题目背景 这是一道签到题! 建议做题之前仔细阅读数据范围! 题目描述 我们定义一个函数:qiandao(x)为小于等于x的数中与x不互质的数的个数. 这题作为签到题,给出l和r,要求求. 输入输出格式 ...
- fjwc2019 D3T1 签到题 (贪心)
#184. 「2019冬令营提高组」签到题 每次询问接近O(1).......考虑贪心 怎么贪心呢? 对于相邻的两个数,我们要保证异或x后单调不降 我们找到两个数二进制上最高的相异位 当左边的数相异位 ...
- CTF-练习平台-WEB之 签到题
一.签到题 根据提示直接加群在群公告里就能找到~
- 洛谷P3601签到题(欧拉函数)
题目背景 这是一道签到题! 建议做题之前仔细阅读数据范围! 题目描述 我们定义一个函数:qiandao(x)为小于等于x的数中与x不互质的数的个数. 这题作为签到题,给出l和r,要求求. 输入输出格式 ...
- 【洛谷九月月赛T1】签到题(bsgs)(快速乘)
说好的签到题呢qwq....怎么我签到题都不会啊qwq 之后看了bsgs才发现貌似不是那么那么难fake!!什么东西... 先贴上部分分做法(也就是枚举1的个数,然后每一步都进行取模(这和最后取模结果 ...
- WEB新手之签到题
写一写web新手赛的题. 这是签到题,开始时需要耐心等待页面中字母全部出现. 字母全部出现后,会跳转到另一个界面,如上图所示.F12没什么特别的地方,这题应该有点难度. 按往常一样,先抓包. 按英文提 ...
- EOJ Monthly 2019.1 唐纳德先生与这真的是签到题吗 【数学+暴力+multiset】
传送门:https://acm.ecnu.edu.cn/contest/126/ C. 唐纳德先生与这真的是签到题吗 单测试点时限: 6.0 秒 内存限制: 1024 MB 唐纳德先生在出月赛的过程中 ...
随机推荐
- 【模板】RMQ问题的ST表实现
$RMQ$问题:给定一个长度为$N$的区间,$M$个询问,每次询问$[L_i,R_i]$这段区间元素的最大值/最小值. $RMQ$的高级写法一般有两种,即为线段树和$ST$表. 本文主要讲解一下$ST ...
- 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 ...
- linux常用的shell命令
1.shell介绍 shell(外壳)是linux系统的最外层,简单的说,它就是用户和操作系统之间的一个命令解释器. 2.shell命名的使用 ls :查看当前目录的信息,list . ...
- 生成HTML表格的后台模板代码
有时候,我们需要在后台拼接生成前端的html表格,一般的做法就是各种string.StringBuilder的拼接(例子省略...),这样的话如果表头不同就没法做到代码的重用,增加代码的冗余,下面我分 ...
- 享元模式及php实现
享元模式: 享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度对象的复用.系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用.由于享元模式要求 ...
- CSS预处理less基本使用
中文API http://lesscss.cn 变量 @变量名:变量值 @maincolor:#aeeeee; @acolor:#ffffff; @ht200:200px; @ht50:50p ...
- 全文索引Elasticsearch,Solr,Lucene
最近项目组安排了一个任务,项目中用到了全文搜索,基于全文搜索 Solr,但是该 Solr 搜索云项目不稳定,经常查询不出来数据,需要手动全量同步,而且是其他团队在维护,依赖性太强,导致 Solr 服务 ...
- AJAX中文乱码解决方案
通过AJAX获取数据中文乱码解决方案: @ResponseBody 作用: 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到 ...
- 10个顶级的CSS3代码生成器
新出来的在线工具和web应用允许开发人员快速创建网站,而无需手动一行一行地编写代码.当前,不断有新的框架和代码库涌现在前端开发这个领域里. 但是,这也让许多开发人员忘记了代码生成器以及它们在构建网站时 ...
- pagehelper 分页
分页jar包: <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pa ...