【NOIP2014模拟】木马
题目
Input
第一行包括两个整数n,type,其中type=0或1。
接下来n行两个整数Up[i]与A[i],代表基站i直传基站以及上传速率。
接下来给出一个整数Q。
接下来Q组询问,每组有若干行。
第一行两个整数x,p,代表上传的基站x和发生变动的数目。
接下来p行两个整数Cx,Cy,代表发生变动节点的编号和权值。
若type=1,(Cy xor (abs(lastans) and 16383))为真正的Cy,lastans为上一次询问的波动值,(i=1时,lastans=0)。
每两组询问中有一行空行。
Output
输出共Q行,每行一个整数C为第i次询问时系统的波动值。
分析
首先,这题强制在线,其次这题求的背景是一棵树上的一条链上排过序的数列的特殊的和,我们可以发现对于一种数值,并且它在这条链上出现了x次,若x&1==0那么它对答案贡献为0,若x&1==1那么它对答案贡献值为它本身。
而我们发现这种数值最大也就只有16383个。而且我们可以基于离线的思想,先处理出本身的答案,然后再根据它给出的条件来更改。还有我们做到一个点,那么它儿子的答案可以从它本身传递得来。
所以我们对于题目所要求的答案所用的数据结构也就出来了——主席树。
我们在原本的主席树上再多维护一个c[i]表示第i棵主席树上的答案,那么c[i]=c[left[i]]+或-c[right[i]],是加是减,我们只用判断一下左边的节点数量即可。
到此便可以很好的解决这个问题了。
而插入和删除操作其实差不多的,一个加一一个减一
其他的照样维护就可以了。
varn,tpe,lastans,i,j,m,tot,num,w,k,bz:longint;sum,left,right,root,c:array[0..3200000] of longint;b,next,last,cx,cy,a:array[0..1000000] of longint;
procedure make(var x:longint;y,l,r,e,o:longint);
var mid:longint;
beginif (o=0)or(x=0) then begininc(tot);x:=tot;end else x:=y;left[x]:=left[y];right[x]:=right[y];sum[x]:=sum[y]+1;if l=r then beginif sum[x] mod 2<>0 then c[x]:=e else c[x]:=0;exit;end;mid:=(l+r)shr 1;if mid>=e then make(left[x],left[y],l,mid,e,o) else make(right[x],right[y],mid+1,r,e,o);sum[x]:=sum[left[x]]+sum[right[x]];if sum[left[x]] mod 2=0 then c[x]:=c[left[x]]+c[right[x]] else c[x]:=c[left[x]]-c[right[x]];
end;
procedure delt(var x:longint;y,l,r,e:longint);
var mid:longint;
beginif x=0 then begininc(tot);x:=tot;end else x:=y;left[x]:=left[y];right[x]:=right[y];sum[x]:=sum[y]-1;if l=r then beginif sum[x] mod 2<>0 then c[x]:=e else c[x]:=0;exit;end;mid:=(l+r)shr 1;if mid>=e then delt(left[x],left[y],l,mid,e) else delt(right[x],right[y],mid+1,r,e);sum[x]:=sum[left[x]]+sum[right[x]];if sum[left[x]] mod 2=0 then c[x]:=c[left[x]]+c[right[x]] else c[x]:=c[left[x]]-c[right[x]];
end;
procedure dfs(x,y:longint);
var p:longint;
beginmake(root[x],root[y],0,16383,a[x],0);p:=last[x];while p<>0 do begindfs(b[p],x);p:=next[p];end;
end;
procedure insert(x,y:longint);
begininc(num);b[num]:=y;next[num]:=last[x];last[x]:=num;
end;
beginreadln(n,tpe);readln(i,a[1]);for i:=2 to n do beginreadln(j,a[i]);insert(j,i);end;dfs(1,0);readln(m);for i:=1 to m do beginreadln(j,w);for k:=1 to w do beginreadln(cx[k],cy[k]);if tpe=1 then cy[k]:=(cy[k] xor(abs(lastans)and 16383));end;for k:=1 to w do beginmake(root[j],root[j],0,16383,cy[k],1);delt(root[j],root[j],0,16383,a[cx[k]]);end;lastans:=c[root[j]];writeln(lastans);for k:=1 to w do begindelt(root[j],root[j],0,16383,cy[k]);make(root[j],root[j],0,16383,a[cx[k]],1);end;end;
close(input);close(output);
end.
【NOIP2014模拟】木马相关推荐
- 攻击 | 神奇的木马(虚拟机模拟木马入侵)
攻击 | 神奇的木马(在虚拟机环境中模拟木马入侵) →木马渊源 →实验模拟 实验目的 实验设备 实验工具 →实验原理 →具体实验 1.在虚拟机中打开XP系统和2003系统,设置两者IP,保证两者在同一 ...
- jzoj2702. 探险jzoj3917. 【NOIP2014模拟11.2A组】福慧双修
Description 探险家小T好高兴!X国要举办一次溶洞探险比赛,获奖者将得到丰厚奖品哦!小T虽然对奖品不感兴趣,但是这个大振名声的机会当然不能错过! 比赛即将开始,工作人员说明了这次比赛的规则: ...
- Rootkit 之 adore-ng 模拟木马病毒
Rootkit是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件.进程和网络链接等信息,比较多见到的是Rootkit一般都和木马.后门等其他恶意程序结合使用. 在我们生活中,经常看的电视 ...
- JZOJ 3809. 【NOIP2014模拟8.25】设备塔
Description 为了封印辉之环,古代塞姆利亚大陆的人民在异空间中建造了一座设备塔. 简单的说,这座设备塔是一个漂浮在异空间中的圆柱体,圆柱体两头的圆是计算核心,而侧面则是 传输信息所用的数据通 ...
- 2016.7.15 NOIP2014模拟试题解题报告(又名:方克顺和他的正余弦朋友们(
我发现自从我开始写博客以后OI成绩上升很明显啊orzzz,继续保持继续保持(然而昨晚上开夜车到十二点,感觉这次没发挥好)(下次没考好就尴尬了)(所以一定要考好!),嗯这次考得还是很不错的,也深入思考了 ...
- 3917 【NOIP2014模拟11.2A组】福慧双修 (Standard IO)题解
目录 目录 原题 Description Input Output Sample Input Sample Output Data Constraint 题解 40分 100分 模型转换 做法 I I ...
- C语言做着做着会变成木马程序,[原创]C语言SDK模拟木马行为
1.程序运行后将自身复制到C:\\WINDOWS\\system32\\文件夹下,程序名为vrius.exe. 2.在注册表HKEY_LOCAL_MACHINE\\Software\\Microsof ...
- JZOJ 3815. 【NOIP2014模拟9.7】克卜勒
Description 一闪一闪亮晶晶/好像你的身体/藏在众多孤星之中/还是找得到你/挂在天上放光明/反射我的孤寂/提醒我/我也只是一颗寂寞的星星/oh~/浩瀚的世界里/更迭的人海里/和你互相辉映/而 ...
- JZOJ 3775. 【NOIP2014模拟8.15】因子的排列
Description 一天,小B学习了分解质因数的相关内容.他发现,一个数的质因子可以有许多不同的排列方式,例如20=2*2*5=2*5*2=5*2*2,那么小B认为20的质因子有3种不同的排列方式 ...
最新文章
- ThinkPHP学习笔记之Model操作
- 【转】 最新版chrome谷歌浏览器Ajax跨域调试问题
- openresty开发系列20--lua的时间操作
- 开源免费,zabbix服务器监控全面实现
- 标准模板库之双向循环链表的内部关系
- Emlog文章特色图生成插件分享
- 【英语学习】【Level 08】U05 Better option L2 Online shopping
- 【LeetCode】【HOT】20. 有效的括号(栈)
- 中国主流的大数据分析厂商
- lottie动画_极光小课堂 | 用 Lottie 实现超炫酷动画
- 省选专练之数学 BZOJ2820 YY的GCD
- arduino 中断 串口_【Arduino教程】第一讲:Arduino是什么?
- 51单片机8位流水灯左移实现(比较简短)
- 二代身份证读取 中控ID180 二三代身份证阅读器 Vue版本
- 《攻守道》笔记(3)
- Twincat3之C++
- php还款功能,智能还款的原理
- 微信小程序之左右布局
- 123道c++笔试题汇总
- 存储过程排版工具_文案创作者必备的7个写作辅助工具类网站,记得收藏