Codevs2018 反病毒软件
2018 反病毒软件
时间限制: 1 s
其实这个“反病毒软件”(Anti-Virus SOFTware),是相关部门应对H9N7人流感研发的。
相关部门的监控范围里只有N个城市,从1到N编号。初始时,这些城市都没有任何病例出现。由于在某一个城市出现过多的病例不太好,相关部门需要随时知道,从X到Y(含X和Y)这些城市当中,病例最多的城市与病例第二多的城市的病例数之差为多少。
一共会有Q个事件发生,具体见【输入】。
第一行为两个整数N,Q,以空格隔开。
接下来Q行,每行代表一个事件。第i+1行代表第i个事件,这一行有三个整数Ci,Xi,Yi,其中Ci为1或2。如果Ci为1,表示在城市Xi又新发现了Yi个病例;如果Ci为2,表示询问从Xi到Yi,病例最多的城市与病例第二多的城市的病例数之差为多少。
对于输入中的每一个Ci=2的事件,输出一行,即询问的结果。
4
2 1 4
1 2 3
2 2 4
1 3 2
2 1 3
1 2 2
2 1 4
0
3
1
3
【样例说明】
初始时各个城市的病例数为{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 反病毒软件的更多相关文章
- XP停服务,卡巴当后盾——卡巴斯基反病毒软件2014(一年版)
领取地址:http://xp.kaba365.com/3180000.asp 活动说明活动时间:2014年4月9日零时起赠送产品:卡巴斯基反病毒软件2014(一年版)激活码.赠送对象:中国大陆所有XP ...
- hMailserver设置外部反病毒扫描程序
刚在5dmail上发现有人提出一个问题,他在hmailserver的外部病毒扫描程序中使用了瑞星那个娱乐货,结果呢,说瑞星太勇猛了,所有附件都认为病毒了,这是怎么个情况呢? 先从hmailadmin里 ...
- 【解决办法】糟糕,我的电脑只有IE64位浏览器能上网,其他软件都上不了网
最近两周在三班四班有5位同学电脑7次出现网络故障,表现为能连上锐捷.DNS正常却不能上网,其中在我自己的计算机上就发生了2次.上网搜集并整理了以下资料,供大家参考.请直接参见[解决办法]. [网上 ...
- ------- 软件调试——注销 QQ 过滤驱动设置的事件通知 CallBack (完)-------
---------------------------------------------------------------------------------- 本系列的最后一篇演示如何通过调试手 ...
- 安全预警-防范新型勒索软件“BlackRouter”
近期,出现一种新型勒索软件“BlackRouter”,开发者将其与正常软件恶意捆绑在一起,借助正常软件的下载和安装实现病毒传播,并以此躲避安全软件的查杀.目前,已知的被利用软件有AnyDesk工具(一 ...
- Windows系统下三十款优秀开源软件
Windows系统下三十款优秀开源软件 1.Firefox 官方网站:http://www.getfirefox.com/ 可替换Internet Explorer 功能特点:如果你还没有使用Fire ...
- 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 ...
- 杀毒软件导致YourSQLDba备份失败
有一朋友咨询我,他配置的YourSQLDba 备份作业经常出现备份失败的情况,我帮忙查看了一下,首先从告警邮件中查看出错的具体信息,执行了下面SQL语句(来自于告警邮件) Exec YourSQLDb ...
- sql server 对象资源管理器(二)
SQL会缓存大量的数据页面,他还会缓存很多其他信息,包括存储过程的执行计划 ,特定用户的安全上下文等 如果这些信息没有在数据库中缓存,SQL都要重新计算一遍,花额外的时间,所以SQLSERVER对内存 ...
随机推荐
- Android中支持的距离单位
px(像素):每个px对应屏幕上的一个点 dip或dp(device independent pixels,设备独立像素):一种基于屏幕密度的抽象单位.在每英寸160点的显示器上,1dip=1px.但 ...
- jQuery克隆DOM节点
jQuery克隆DOM节点 <%@ page language="java" import="java.util.*" pageEncoding=&quo ...
- Lazy.js : 让 JavaScript 变懒
Lazy.js : 让 JavaScript 变懒 http://segmentfault.com/a/1190000000358463
- 计算数据库中30天以内,30-60天,60-90天,90天以外的数据的个数(用sql实现)
30天以内:select count(*) from TB where datediff(day,字段名,getdate()) between 0 and 3030-60天:select count( ...
- CAGradientLayer颜色渐变器
使用CAGradientLayer可以实现颜色的渐变, 我们先看下头文件 @interface CAGradientLayer : CALayer @property(nullable, copy) ...
- 使用SpringMvc调用POI jar导出excel的源码
@RequestMapping(value = "/result/export") public String export(ResultIn in,HttpServletRequ ...
- PLSQL语法深入浅出
一:PLSQL概览:PLSQL 是Oracle公司在SQL基础上进行扩展而成的一种过程语言.PLSQL提供了典型的高级语言特 性,包括封装,例外处理机制,信息隐藏,面向对象等:并把新的编程思想带到了数 ...
- iOS之网络数据下载和JSON解析
iOS之网络数据下载和JSON解析 简介 在本文中笔者将要给大家介绍IOS中如何利用NSURLconnection从网络上下载数据以及如何解析下载下来的JSON数据格式,以及如何显示数据和托图片的异步 ...
- Hbase数据库安装
一.环境准备 1.Ubuntu14.04-server 2.ssh 3.jdk1.6 4.hbase-0.98.19-hadoop2-bin.tar.gz(下载地址http://www.apache. ...
- java学习阶段三:运算符和结构学习
import java.util.Scanner;/* * JAVA中运算符的学习: * 算术运算符:+.-.*./ 和 %,两个整数相除,结果还是整数. * 赋值运算符:=.+=.-=.*=./=. ...