2018 反病毒软件

时间限制: 1 s

 空间限制: 128000 KB
 题目等级 : 钻石 Diamond
 查看运行结果
 

题目描述 Description

其实这个“反病毒软件”(Anti-Virus SOFTware),是相关部门应对H9N7人流感研发的。

相关部门的监控范围里只有N个城市,从1到N编号。初始时,这些城市都没有任何病例出现。由于在某一个城市出现过多的病例不太好,相关部门需要随时知道,从X到Y(含X和Y)这些城市当中,病例最多的城市与病例第二多的城市的病例数之差为多少。

一共会有Q个事件发生,具体见【输入】。

输入描述 Input Description

第一行为两个整数N,Q,以空格隔开。

接下来Q行,每行代表一个事件。第i+1行代表第i个事件,这一行有三个整数Ci,Xi,Yi,其中Ci为1或2。如果Ci为1,表示在城市Xi又新发现了Yi个病例;如果Ci为2,表示询问从Xi到Yi,病例最多的城市与病例第二多的城市的病例数之差为多少。

输出描述 Output Description

对于输入中的每一个Ci=2的事件,输出一行,即询问的结果。

样例输入 Sample Input

4

2 1 4

1 2 3

2 2 4

1 3 2

2 1 3

1 2 2

2 1 4

样例输出 Sample Output

0

3

1

3

数据范围及提示 Data Size & Hint

【样例说明】

初始时各个城市的病例数为{0,0,0,0}。

从1到4最多的病例数为0,第二多的病例数为0,差值为0,输出0。

城市2发现了3个新病例,病例数变为{0,3,0,0}。

从2到4最多的病例数为3,第二多的病例数为0,差值为3,输出3。

城市3发现了2个新病例,病例数变为{0,3,2,0}。

从1到3最多的病例数为3,第二多的病例数为2,差值为1,输出1。

城市2发现了2个新病例,病例数变为{0,5,2,0}。

从1到4最多的病例数为5,第二多的病例数为2,差值为3,输出3。

【数据规模与约定】

对于40%的数据,N,Q≤1000。

对于100%的数据,2≤N,Q≤100000,且对于每一个Ci=2,满足Xi<Yi。

分类标签 Tags 点此展开

题解:首先对这个出题人表示严重吐槽——假如存在两个并列第一多的城市,那么不是不应该第一第二都取这个值么?我这么做结果WA得很惨,然后我再加了个等号让第一第二可以取一样的值,然后就AC了!?!?对这题的题目表述表示不解。。。汗

不难搞的线段树,点修改的话该怎么干怎么干,然后区间的话主要就是个核心运算——merge操作,别的没了

 type vet=record
a1,a0:longint;
end;
var
i,j,k,l,m,n:longint;
a2:vet;
a:array[..] of vet;
d:array[..] of longint;
c:array[..] of longint;
procedure swap(var x,y:longint);inline;
var z:longint;
begin
z:=x;x:=y;y:=z;
end;
function max(x,y:longint):longint;inline;
begin
if x>y then max:=x else max:=y;
end;
function min(x,y:longint):longint;inline;
begin
if x<y then min:=x else min:=y;
end; function merge(a2,a3:vet):vet;inline;
var i,j,k,l:longint;a4:vet;
begin
c[]:=a2.a0;c[]:=a2.a1;
c[]:=a3.a0;c[]:=a3.a1;
a4.a0:=;a4.a1:=;
for i:= to do
begin
if c[i]>=a4.a0 then
begin
a4.a1:=a4.a0;
a4.a0:=c[i];
end
else
begin
if (c[i]>a4.a1) and (c[i]<a4.a0) then a4.a1:=c[i];
end;
end;
exit(a4);
end;
procedure built(z,x,y:longint);inline;
begin
if x=y then
d[x]:=z
else
begin
built(z*,x,(x+y) div );
built(z*+,(x+y) div +,y);
end;
a[z].a0:=;a[z].a1:=;
end;
procedure doit(x,y:longint);
begin
x:=d[x];
a[x].a0:=a[x].a0+y;a[x].a1:=;
while x> do
begin
a[x div ]:=merge(a[x],a[x+-*(x mod )]);
x:=x div ;
end;
end;
function cal(z,x,y,l,r:longint):vet;
var a3,a2:vet;
begin
if l>r then
begin
a2.a0:=;
a2.a1:=;
exit(a2);
end;
if (x=l) and (y=r) then exit(a[z]);
exit(merge(cal(z*,x,(x+y) div ,l,min(r,(x+y) div )),cal(z*+,(x+y) div +,y,max(l,(x+y) div +),r)));
end;
begin
readln(n);
built(,,n);
while not(eof) do
begin
readln(j,k,l);
case j of
:doit(k,l);
:begin
a2:=cal(,,n,k,l);
writeln(a2.a0-a2.a1);
end;
end;
end;
readln;
end.

Codevs2018 反病毒软件的更多相关文章

  1. XP停服务,卡巴当后盾——卡巴斯基反病毒软件2014(一年版)

    领取地址:http://xp.kaba365.com/3180000.asp 活动说明活动时间:2014年4月9日零时起赠送产品:卡巴斯基反病毒软件2014(一年版)激活码.赠送对象:中国大陆所有XP ...

  2. hMailserver设置外部反病毒扫描程序

    刚在5dmail上发现有人提出一个问题,他在hmailserver的外部病毒扫描程序中使用了瑞星那个娱乐货,结果呢,说瑞星太勇猛了,所有附件都认为病毒了,这是怎么个情况呢? 先从hmailadmin里 ...

  3. 【解决办法】糟糕,我的电脑只有IE64位浏览器能上网,其他软件都上不了网

      最近两周在三班四班有5位同学电脑7次出现网络故障,表现为能连上锐捷.DNS正常却不能上网,其中在我自己的计算机上就发生了2次.上网搜集并整理了以下资料,供大家参考.请直接参见[解决办法]. [网上 ...

  4. ------- 软件调试——注销 QQ 过滤驱动设置的事件通知 CallBack (完)-------

    ---------------------------------------------------------------------------------- 本系列的最后一篇演示如何通过调试手 ...

  5. 安全预警-防范新型勒索软件“BlackRouter”

    近期,出现一种新型勒索软件“BlackRouter”,开发者将其与正常软件恶意捆绑在一起,借助正常软件的下载和安装实现病毒传播,并以此躲避安全软件的查杀.目前,已知的被利用软件有AnyDesk工具(一 ...

  6. Windows系统下三十款优秀开源软件

    Windows系统下三十款优秀开源软件 1.Firefox 官方网站:http://www.getfirefox.com/ 可替换Internet Explorer 功能特点:如果你还没有使用Fire ...

  7. Android Studio 导入项目 出现安装Error:Cause: failed to find target with hash string 'android-23' 等错误

    今天   在导入 一个新项目时 : 出现了这个错 Error:Cause: failed to find target with hash string 'android-23' in: C:\Use ...

  8. 杀毒软件导致YourSQLDba备份失败

    有一朋友咨询我,他配置的YourSQLDba 备份作业经常出现备份失败的情况,我帮忙查看了一下,首先从告警邮件中查看出错的具体信息,执行了下面SQL语句(来自于告警邮件) Exec YourSQLDb ...

  9. sql server 对象资源管理器(二)

    SQL会缓存大量的数据页面,他还会缓存很多其他信息,包括存储过程的执行计划 ,特定用户的安全上下文等 如果这些信息没有在数据库中缓存,SQL都要重新计算一遍,花额外的时间,所以SQLSERVER对内存 ...

随机推荐

  1. Raphael的set使用

    Raphael的set使用 $(function() { initRaphael(); }); function initRaphael(e) { var paper = Raphael(0, 0, ...

  2. JS插件库

    http://www.cnblogs.com/xiaoyao2011/category/327551.html

  3. CCNA网络工程师学习进程(9)GNS3的安装与配置

        本节将简单介绍一下网络设备模拟软件GNS3的配置和使用方法.     (1)GNS3概述: GNS3是一款具有图形化界面可以运行在多平台(包括Windows, Linux, and MacOS ...

  4. Java自然语言处理NLP工具包

    1. Java自然语言处理 LingPipe LingPipe是一个自然语言处理的Java开源工具包.LingPipe目前已有很丰富的功能,包括主题分类(Top Classification).命名实 ...

  5. MVC无刷新查询,PagedList分页控件使用,导出Excel

    使用MVC开发也有一段时间了,总结下无刷新部分视图的使用.PagedList分页控件的使用. @using PagedList @model StaticPagedList<T> < ...

  6. mysql学习之权限管理

    数据库权限的意义: 为了保证数据库中的业务数据不被非授权的用户非法窃取,需要对数据库的访问者进行各种限制,而数据库安全性控制措施主要有这三种,第一种用户身份鉴别,手段可以是口令,磁卡,指纹等技术,只有 ...

  7. oracle 11G RAC会话故障转移测试

    目前接手的几个项目中,默认使用的oracle RAC数据库服务,均不能实现自动的会话转移,尤其是对于应用的长连接,一旦发生数据库故障,需要重启应用.实际11G具备会话迁移机制,为此做了如下配置测试,供 ...

  8. 关于下载SAE日志签名认证的方法——PHP版

    之前需要下载SAE上的日志存入数据库,因此研究了下SAE的签名认证和日志下载.这个链接是SAE官方给出的API文档.https://www.sinacloud.com/doc/api.html#qia ...

  9. [UWP]附加属性1:概述

    1. 什么是附加属性(attached property ) 附加属性依赖属性的一种特殊形式,常见的Grid.Row,Canvas.Left都是附加属性. /// <summary> // ...

  10. 前端开发面试题总结之——CSS3

    ____________________________________________________________________________________________ 相关知识点 布 ...