首先这题现在在BZOJ上是没数据的,你可以选择python2B获得AC,也可以去洛谷上交。
选择第一个选项的现在可以不用看了......

关于这题的题意,击破的一次攻击即使溢出也不双倍,否则你过不了样例。
然后考虑每个防御只会被击破一次,那么我们可以像HEOI2017相逢是问候那样用一个线段树去维护是否被击破。
然而那个题每次暴力push到底就行了,但这个题如果这样做,会发现在push时可能没有任何防御被击破,复杂度不对......
考虑用奇怪的办法保证存在防御被击破,我们维护区间的min,如果这个区间的min<=当前攻击值,则我们有必要在这个区间push到底。
然后就是实现的问题,自己YY一下就好了,我是用一个单独的函数去实现的push到底这个操作......
注意各种分类讨论......
别问我为什么刷这种水题......
今天好不容易不考试写神题也写不动啊......

我的代码:

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define debug cout
typedef long long int lli;
using namespace std;
const int maxn=1e5+1e2;
const int mod=1e9+;
const int inf=0x3f3f3f3f; int in[maxn<<];
int l[maxn<<],r[maxn<<],lson[maxn<<],rson[maxn<<],siz[maxn<<],full[maxn<<],cnt; // size means number needs to be doubled .
lli sum[maxn<<],miv[maxn<<],lazy[maxn<<]; // lazy means attack not pushsed ( not doubled ) . inline void build(int pos,int ll,int rr) {
l[pos] = ll , r[pos] = rr , full[pos] = rr - ll + ;
if( ll == rr ) {
miv[pos] = in[ll];
return;
} const int mid = ( ll + rr ) >> ;
build(lson[pos]=++cnt,ll,mid) , build(rson[pos]=++cnt,mid+,rr);
miv[pos] = min( miv[lson[pos]] , miv[rson[pos]] );
}
inline void apply(int pos,lli x) {
lazy[pos] += x , sum[pos] += ( full[pos] + siz[pos] ) * x;
if( miv[pos] != inf ) miv[pos] -= x;
}
inline void push(int pos) {
if( !lazy[pos] ) return;
apply(lson[pos],lazy[pos]) , apply(rson[pos],lazy[pos]) , lazy[pos] = ;
}
inline void maintain(int pos) {
siz[pos] = siz[lson[pos]] + siz[rson[pos]] ,
sum[pos] = sum[lson[pos]] + sum[rson[pos]] ,
miv[pos] = min( miv[lson[pos]] , miv[rson[pos]] );
}
inline void chain(int pos,lli x) {
if( x < miv[pos] ) { // nothing will be destoryed .
apply(pos,x);
return;
}
if( l[pos] == r[pos] ) { // assert x <= miv[pos] .
sum[pos] += x , siz[pos] = , miv[pos] = inf;
} else { // push lazy at the same time .
chain(lson[pos],x+lazy[pos]) , chain(rson[pos],x+lazy[pos]) , lazy[pos] = ;
maintain(pos);
}
}
inline void update(int pos,int ll,int rr,lli x) {
if( r[pos] < ll || rr < l[pos] ) return;
if( ll <= l[pos] && r[pos] <= rr ) return chain(pos,x);
push(pos);
update(lson[pos],ll,rr,x) , update(rson[pos],ll,rr,x);
maintain(pos);
}
inline lli query(int pos,int ll,int rr) {
if( r[pos] < ll || rr < l[pos] ) return ;
if( ll <= l[pos] && r[pos] <= rr ) return sum[pos];
push(pos);
return query(lson[pos],ll,rr) + query(rson[pos],ll,rr);
} int main() {
static int n,m;
static char o[];
static lli ans;
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++) scanf("%d",in+i);
build(cnt=,,n);
for(int i=,l,r,x;i<=m;i++) {
scanf("%s%d",o,&l);
if( *o == 'A' ) {
scanf("%d%d",&r,&x);
update(,l,r,x);
} else if( *o == 'Q' ) {
( ans += query(,l,l) % mod ) %= mod;
}
}
printf("%lld\n",ans);
return ;
}

最后给大家送上数据和对拍器,用lemon的格式打包的。

链接: https://pan.baidu.com/s/1n518YAQFYH02hi2ZNB41EQ 密码: ahym

Bzoj5209[Tjoi2012]防御:姿势题的更多相关文章

  1. [TJOI2012]防御

    https://www.zybuluo.com/ysner/note/1332539 题面 戳我 解析 一道挺棒棒的线段树. 显然一次伤害到来时我们要先看看区间内哪些点的护甲没了. 这个可以通过维护区 ...

  2. 浅谈XXE漏洞攻击与防御——本质上就是注入,盗取数据用

    浅谈XXE漏洞攻击与防御 from:https://thief.one/2017/06/20/1/ XML基础 在介绍xxe漏洞前,先学习温顾一下XML的基础知识.XML被设计为传输和存储数据,其焦点 ...

  3. ref:浅谈XXE漏洞攻击与防御

    ref:https://thief.one/2017/06/20/1/ 浅谈XXE漏洞攻击与防御 发表于 2017-06-20   |   分类于 web安全  |   热度 3189 ℃ 你会挽着我 ...

  4. 1.浅谈XXE漏洞攻击与防御

    XML基础 在介绍XXE漏洞前,先学习温顾一下XML的基础知识.XML被设计为传输和存储数据,其焦点是数据的内容,其把数据从HTML分离,是独立于软件和硬件的信息传输工具. XML是一种用于标记电子文 ...

  5. 【入门推荐】SQL注入进行WebShell渗透测试的基础概览

    作者:zero 本文为SQL基本注入的进阶文章,如有任何疑问请查看: SQL基本注入演示:https://www.cnblogs.com/anbus/p/10082452.html 导语: 利用SQL ...

  6. 2015ACM/ICPC Asia Regional Changchun Online /HDU 5438 图

    Ponds                                   Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 1310 ...

  7. MySQL 拿 WebShell

    两种常规方法利用 MySQL getshell 的方法: select … into outfile general_log 一.select … into outfile 介绍 利用需要满足以下条件 ...

  8. MySQL获取webshell的几种方式

    select ... into outfile 需要满足的条件 对web目录有写权限 GPC关闭(GPC:是否对单引号转义) 有绝对路径(读文件可以不用,写文件需要) 没有配置secure-file- ...

  9. Bypass 护卫神SQL注入防御(多姿势)

    0x00 前言 ​ 护卫神一直专注服务器安全领域, 其中有一款产品,护卫神·入侵防护系统 ,提供了一些网站安全防护的功能,在IIS加固模块中有一个SQL防注入功能. 这边主要分享一下几种思路,Bypa ...

随机推荐

  1. [Java] Servlet工作原理之二:Session与Cookie

    (未完成) 一.Cookie与Session的使用简介 1 Cookie Cookie 用于记录用户在一段时间内的行为,它有两个版本:Version 0 和 Version 1,分别对应两种响应头 S ...

  2. SQL记录-PLSQL条件控制

    PL/SQL条件控制   决策结构需要程序员指定一个或多个条件要计算,或由程序进行测试,如果条件被确定为真那么一条或多条语句被执行,如果要被执行的其它语句条件被确定为假,则选其它执行块. 以下是从在大 ...

  3. 《高性能MySQL》——第一章MySQL的架构与历史

    1.可以使用SHOW TABLE STATUS查询表的相关信息. 2.默认存储引擎是InnoDB,如果没有什么很特殊的要求,InnoDB引擎是我们最好的选择. 3.mysql的infobright引擎 ...

  4. 【整理】HTML5游戏开发学习笔记(5)- 猜谜游戏

    距上次学习笔记已有一个多月过去了,期间由于新项目赶进度,以致该学习计划给打断,十分惭愧.书本中的第六章的例子相对比较简单.所以很快就完成. 1.预备知识html5中video标签的熟悉 2.实现思路对 ...

  5. 20155204 2016-2017-2 《Java程序设计》第8周学习总结

    学号 2016-2017-2 <Java程序设计>第X周学习总结 教材学习内容总结 想要取得channel的操作对象,可以使用channels类,它定义了静态方法newChannel(). ...

  6. 关于 xcode5 的no matching provisioning profiles found

    CHENYILONG Blog 关于 xcode5 的no matching provisioning prof- about the question in xcode5 "no matc ...

  7. 第11月第18天 RACSequence

    1. RACSequence的内部存储结构就像一个单链表,有两个指针head和tail,head指针指向了当前链表的第一个元素,tail指向head指针下一个元素:根据RACSequence是否还有内 ...

  8. ZYNQ. GPIO

    GPIO General Purpose I/O ,网上能找到很多关于znyq gpio 的文章. 分类:EMIO .MIO .AXI_GPIO 硬件系统 MIO和EMIO是在zynq核中配置的,MI ...

  9. 使用Cobbler批量部署Linux和Windows:Cobbler服务端部署(一)

    本文记录了我使用Cobbler批量安装部署Linux和Windows系统的过程,文章主要分为三部分:Cobbler服务端的安装配置.Linux发行版CentOS和Ubuntu的自动安装部署.Windo ...

  10. 【坐在马桶上看算法】算法6:只有五行的Floyd最短路算法

            暑假,小哼准备去一些城市旅游.有些城市之间有公路,有些城市之间则没有,如下图.为了节省经费以及方便计划旅程,小哼希望在出发之前知道任意两个城市之前的最短路程.         上图中有 ...