题目链接:海港

这一题怎么样呢?还好吧,也不是太难,没有用到什么特殊的算法,但写法还是很值得学习的。下面讲一下思路:

我们维护三个队列(这里我们采用自己手写的队列,因为这比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)的更多相关文章

  1. noip2016海港

    题目描述 Description 小K是一个海港的海关工作人员,每天都有许多船只到达海港,船上通常有很多来自不同国家的乘客. 小K对这些到达海港的船只非常感兴趣,他按照时间记录下了到达海港的每一艘船只 ...

  2. NOIP2016普及组解题报告

    概述 \(NOIP2016\)普及组的前三题都比较简单,第四题也有很多的暴力分,相信参加了的各位\(OIer\)在\(2016\)年都取得了很好的成绩. 那么,我将会分析\(NOIP2016\)普及组 ...

  3. NOIp2016 Day1&Day2 解题报告

    Day1 T1 toy 本题考查你会不会编程. //toy //by Cydiater //2016.11.19 #include <iostream> #include <cstd ...

  4. NOIp2016 游记

    DAY -2 不要问我为什么现在就开了一篇博客. 本来想起个NOIp2016爆零记或者NOIp2016退役记之类的,但是感觉现在不能乱立flag了.所以就叫游记算了. 前几场模拟赛崩了一场又一场,RP ...

  5. [Noip2016]蚯蚓 D2 T2 队列

    [Noip2016]蚯蚓 D2 T2 Description 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」=[3.9」=3.蛐蛐国最近蚯蚓成灾了!隔壁跳 蚤国的跳蚤也拿蚯 ...

  6. [NOIP2016]愤怒的小鸟 D2 T3 状压DP

    [NOIP2016]愤怒的小鸟 D2 T3 Description Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可 ...

  7. NOIP2016普及总结

    ---恢复内容开始--- 当时我说如果不出意外有385,结果就这么跪在了第二题,惨啊 本来以为发挥算正常,结果这发挥太不正常了 [T1] 水题啊[趴 注意下细节就好考你会不会写代码. [T2] 这题大 ...

  8. Noip2016

    <这篇是以前的,不开新的了,借版面来换了个标题> 高二了 开学一周,每天被文化课作业碾压... 但是仍然阻挡不了想刷题的心情... 对付noip2016的几块:(有点少,以后补) 高精度( ...

  9. [NOIP2016]换教室 D1 T3 Floyed+期望DP

    [NOIP2016]换教室 D1 T3 Description 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第 ...

随机推荐

  1. redis 4 集群重启与数据导入

    1.redis 4 平时启用aof db与每天的完整备份. 2.集群状态检查 cluster info 检查集群状态 cluster nodes 检查节点状态 redis-cli -c -p 7000 ...

  2. hdoj1005(循环,找规律)

    Problem Description A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1 ...

  3. AltiumDesigner 网络标号放置技巧

    我们在使用AD画图的过程中,灵活的使用一些小技巧可以使我们的工作事半功倍,今天给大家介绍一种在画原理图过程中的小技巧. 我们在画原理图过程中经常会放置网络标号,尤其是很多芯片管脚上,例如现在我需要在这 ...

  4. ES3之cookie

    一 cookie的作用域由文档源(domain)和文档路径(path)决定. 当前页面的脚本只能操作:当前源的当前路径的cookie.当前源的父路径的cookie. 向服务器发送请求时,请求头(Req ...

  5. 写了一个兼容IE9的图片放大器(基于vue)

    photoloupe 图片放大器 第一次写vue插件,本人比较喜欢用简单易懂的写法,不喜勿喷. 本插件支持IE9及以上版本,已经过验证. 本插件可根据需要设置放大倍数,最小支持1倍,支持小数 下载地址 ...

  6. postman接口测试实例

    牛刀小试项目 抽奖项目

  7. 错误:“Cannot load JDBC driver class 'com.mysql.jdbc.Driver”的解决方法

    “Cannot load JDBC driver class 'com.mysql.jdbc.Driver ” 表示没有JDBC连接MySql的驱动包,因此需要手动添加驱动包到WEB-INF目录下的l ...

  8. Django+Uwsgi+Nginx部署

    一 uwsgi介绍 uWSGI是一个Web服务器,它实现了WSGI协议,uwsgi, http等协议. Nginx中HttpUwsgiMoule的作用是与uWSGI服务器进行交换 1 WSGI是一种W ...

  9. stark组件开发之URL别名的设置

    from django.urls import re_path from stark.servers.start_v1 import site, StartHandler from django.ht ...

  10. OnActionExecuting验证用户登录

    代码 using Common; using Service; using Service.IService; using System; using System.Collections.Gener ...