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. C# 枚举的使用

    /// <summary>    /// 枚举的使用    /// 主要功能:使用枚举的值DataTypeId.Money,获取对应的Money字符串.    /// </summa ...

  2. 关于Visual Studio未能加载各种Package包的解决

    参考微软社区的一个答复解决了VS2013的问题: 进入VS对应的用户缓存文件夹,删掉那个Microsoft.VisualStudio.Default.cache缓存文件,就可以了. 这个错误估计是我们 ...

  3. js之date()对象

    var date = new Date(); var year = date.getFullYear(); ; var day = date.getDate(); var week = date.ge ...

  4. oracle_用户与概要文件

    Oracle 用户与概要文件 2012-09-01 15:05:47| 分类: Oracle | 标签:用户与概要文件 |举报 |字号大中小 订阅     用户管理看上去简单其实也是最常出现问题的一个 ...

  5. git命令实战之血泪记录

    注意: 本文章所写所有命令均在Git命令行窗口执行!非cmd窗口! 打开git命令行窗口步骤为:到项目根目录下执行bash命令行操作:右键点击Git Bash Here菜单,打开git命令窗口,不是c ...

  6. 面向UI编程:ui.js 1.0 粗糙版本发布,分布式开发+容器化+组件化+配置化框架,从无到有的艰难创造

    时隔第一次被UI思路激励,到现在1.0的粗糙版本发布,掐指一算整整半年了.半年之间,有些细节不断推翻重做,再推翻再重做.时隔今日,终于能先出来个东西了,这个版本很粗糙,主体功能大概能实现了,但是还是有 ...

  7. android Android性能优化之如何避免Overdraw

    什么是Overdraw? Overdraw就是过度绘制   怎么来消灭overdraw呢?总的原则就是:尽量避免重叠不可见元素的绘制,基于这个原则,我们大概可以想出以下几招: 第一招:合理选择控件容器 ...

  8. SwingBench---ORACLE压力测试工具

    SwingBench---ORACLE压力测试工具 ◆描述SwingBench是Oracle UK的一个员工在一个被抛弃的项目的基础上开发的.目前稳定版本2.5,基于JDK.该工具是免费的,可以在作者 ...

  9. .NET 十五岁,谈谈我眼中的.NET

    2002年2月13日,第一个版本随着visual studio.net的发布,今天已经走过15年, .net团队写了一篇文章,里面有一个视频,Anders Hejlsberg已是白发苍苍的老人,我也从 ...

  10. 微信公众号平台接口开发:基础支持,获取access_token

    新建Asp.net MVC 4.0项目 WeChatSubscript是项目UI层 WeChatTools是封装操作访问公众号接口的一些方法类库 获取AccssToken 我们要的得到AccessTo ...