海港(NOIP2016)
题目链接:海港
这一题怎么样呢?还好吧,也不是太难,没有用到什么特殊的算法,但写法还是很值得学习的。下面讲一下思路:
我们维护三个队列(这里我们采用自己手写的队列,因为这比STL的要快,不过这一题,STL也够了),分别存储时间,人数,国籍。
然后模拟就行了,先看代码,我在细说:
#include<cstdio>
#include<queue>
#define H 86400
using namespace std;
struct que{ //1
int num[300005];
int first=0,tail=0;
void push(int x){
num[tail]=x;
tail++;
}
int front(){
return num[first];
}
void pop(){
first++;
}
};
int n,ans,vis[100005]; //n船数,ans当前答案,vis记录每种国籍人数
que num; //每只船的人数
que t; //每只船的到达时间
que nat; //每个人的国籍
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
int m,c;
scanf("%d%d",&c,&m);
num.push(m);
t.push(c);
for(int j=1;j<=m;j++)
{
int peo;
scanf("%d",&peo);
nat.push(peo);
if(vis[peo]==0) ans++; //2
vis[peo]++; //3
}
while(c-H>=t.front()) //4
{
int p=num.front();
t.pop();
num.pop();
for(int k=1;k<=p;k++)
{
vis[nat.front()]--;
if(vis[nat.front()]==0) ans--;//5
nat.pop();
}
}
printf("%d\n",ans);
}
return 0;
}
讲5点:
1处:手写队列,非常简单,只要实现三个函数就够了,因为我们也只能用到这三个,在本题中。
2处:如果这个国籍人数从0变成1了,就说明又多了一种国籍,所以答案+1
3处:把vis对应的国籍人数加1
4处:循环判断是否有超过24小时的,有就不断让它们出队列
5处:如果一个国籍的人数从1变成0,那么就说明国籍数减少一,所以答案减一。
海港(NOIP2016)的更多相关文章
- noip2016海港
题目描述 Description 小K是一个海港的海关工作人员,每天都有许多船只到达海港,船上通常有很多来自不同国家的乘客. 小K对这些到达海港的船只非常感兴趣,他按照时间记录下了到达海港的每一艘船只 ...
- NOIP2016普及组解题报告
概述 \(NOIP2016\)普及组的前三题都比较简单,第四题也有很多的暴力分,相信参加了的各位\(OIer\)在\(2016\)年都取得了很好的成绩. 那么,我将会分析\(NOIP2016\)普及组 ...
- NOIp2016 Day1&Day2 解题报告
Day1 T1 toy 本题考查你会不会编程. //toy //by Cydiater //2016.11.19 #include <iostream> #include <cstd ...
- NOIp2016 游记
DAY -2 不要问我为什么现在就开了一篇博客. 本来想起个NOIp2016爆零记或者NOIp2016退役记之类的,但是感觉现在不能乱立flag了.所以就叫游记算了. 前几场模拟赛崩了一场又一场,RP ...
- [Noip2016]蚯蚓 D2 T2 队列
[Noip2016]蚯蚓 D2 T2 Description 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」=[3.9」=3.蛐蛐国最近蚯蚓成灾了!隔壁跳 蚤国的跳蚤也拿蚯 ...
- [NOIP2016]愤怒的小鸟 D2 T3 状压DP
[NOIP2016]愤怒的小鸟 D2 T3 Description Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可 ...
- NOIP2016普及总结
---恢复内容开始--- 当时我说如果不出意外有385,结果就这么跪在了第二题,惨啊 本来以为发挥算正常,结果这发挥太不正常了 [T1] 水题啊[趴 注意下细节就好考你会不会写代码. [T2] 这题大 ...
- Noip2016
<这篇是以前的,不开新的了,借版面来换了个标题> 高二了 开学一周,每天被文化课作业碾压... 但是仍然阻挡不了想刷题的心情... 对付noip2016的几块:(有点少,以后补) 高精度( ...
- [NOIP2016]换教室 D1 T3 Floyed+期望DP
[NOIP2016]换教室 D1 T3 Description 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第 ...
随机推荐
- jQuery 设置/获取样式
参考 http://www.w3school.com.cn/jquery/jquery_css.asp $("#a").css("height"); $(&qu ...
- C# sqlserver ExecuteNonQuery()方法详解
关于ExecuteNonQuery() 方法以前对这个一直都没在意,基本上都没有用其返回值,查了一下MSDN,如下:SqlCommand.ExecuteNonQuery 方法对连接执行 Transac ...
- SpringBoot配置logback
1.在SpringBoot中已经集成了logback.在pom.xml中加入以下spring-boot-starter依赖,使用默认版本即可: <dependency> <group ...
- Python3 round() 函数
Python3 round() 函数 Python3 数字 描述 round() 方法返回浮点数x的四舍五入值. 语法 以下是 round() 方法的语法: round( x [, n] ) 参数 ...
- 江西财经大学第一届程序设计竞赛 F题 解方程
链接:https://www.nowcoder.com/acm/contest/115/F来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...
- python 最简单的爬虫
import urllib.request file=urllib.request.urlopen("http://www.qq.com") data=file.read() da ...
- 94. Binary Tree Inorder Traversal(Tree, stack)
Given a binary tree, return the inorder traversal of its nodes' values. For example:Given binary tre ...
- 《学习OpenCV(中文版)》
<模式识别中文版(希)西奥多里蒂斯> <学习OpenCV(中文版)> 矩阵计算 英文版 第四版 Matrix Computations OpenCV 3.x with Pyth ...
- 不要62(数位DP)
不要62 http://acm.hdu.edu.cn/showproblem.php?pid=2089 Time Limit: 1000/1000 MS (Java/Others) Memory ...
- vue-webpack项目自动打包压缩成zip文件批处理
为什么需要这个? 使用vue框架开发项目,npm run build这个命令会一直用到,如果需要给后端发包,那你还要打包成zip格式的压缩包,特别是项目提测的时候,一天可能要执行重复好几次,所以才有了 ...