Description

题库链接

初始时滑冰俱乐部有 \(1\) 到 \(n\) 号的溜冰鞋各 \(k\) 双。已知 \(x\) 号脚的人可以穿 \(x\) 到 \(x+d\) 的溜冰鞋。有 \(m\) 次操作,每次包含两个数 \(r_i\) , \(x_i\) 代表来了 \(x_i\) 个 \(r_i\) 号脚的人。 \(x_i\) 为负,则代表走了这么多人。 对于每次操作,输出溜冰鞋是否足够。

\(1\leq n\leq 200,000,1\leq m\leq 500,000\)

Solution

用 \(\text{Hall}\) 定理以及贪心的思想,容易得到 \(\forall l,r\in[1,n],l\leq r\)

\[\sum_{i=l}^rx_i\leq k(r+d-l+1)\]

移项,得到

\[\sum_{i=l}^r(x_i-k)\leq k\times d\]

显然只要有 \((x_i-k)\) 最大子段和 \(\leq k\times d\) 。线段树维护即可。

Code

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 200000+5; int n, m, k, d, x, r;
struct node {
ll mx, l, r, sum;
node (ll _mx = 0, ll _l = 0, ll _r = 0, ll _sum = 0) {
mx = _mx, l = _l, r = _r, sum = _sum;
}
node operator + (const node &b) const {
node ans;
ans.l = max(l, sum+b.l); ans.r = max(b.r, b.sum+r);
ans.sum = sum+b.sum; ans.mx = max(r+b.l, max(mx, b.mx));
return ans;
}
} ;
struct Segment_tree {
#define lr(o) (o<<1)
#define rr(o) (o<<1|1)
node key[N<<2];
void build(int o, int l, int r) {
if (l == r) {key[o] = node(-k, -k, -k, -k); return; }
int mid = (l+r)>>1;
build(lr(o), l, mid), build(rr(o), mid+1, r);
key[o] = key[lr(o)]+key[rr(o)];
}
void modify(int o, int l, int r, int loc, int val) {
if (l == r) {
ll t = key[o].sum+val;
key[o] = node(t, t, t, t);
return;
}
int mid = (l+r)>>1;
if (loc <= mid) modify(lr(o), l, mid, loc, val);
else modify(rr(o), mid+1, r, loc, val);
key[o] = key[lr(o)]+key[rr(o)];
}
} T; void work() {
scanf("%d%d%d%d", &n, &m, &k, &d);
T.build(1, 1, n);
while (m--) {
scanf("%d%d", &r, &x);
T.modify(1, 1, n, r, x);
puts(T.key[1].mx <= 1ll*k*d ? "TAK" : "NIE");
}
}
int main() {work(); return 0; }

[POI 2009]Lyz的更多相关文章

  1. 解题:POI 2009 Lyz

    题面 板板讲的霍尔定理 霍尔定理:一张二分图有完全匹配的充要条件是对于任$i$个左部点都有至少$i$个右部点与它们相邻.放在这个题里就是说显然最容易使得鞋不够的情况是一段连续的人,那就维护一下最大子段 ...

  2. 解题:POI 2009 Fire Extinguishers

    题面 洛谷数据非常水,建议去bzoj 我第一眼一看这不是那个POI2011的升级版吗(明明这个是2009年的,应该说那个是这个的弱化版,果然思想差不多. 因为$k$很小,可以考虑每个间隔距离来转移.我 ...

  3. 解题:POI 2009 Ticket Inspector

    题面 看起来很水,然而不会DP的蒟蒻并不会做,PoPoqqq orz 设$f[i][j]$表示当前在第$i$个点和第$i+1$个点之间查票,已经查了$j$次的最大收益.然后就是那种很常见的枚举前一个结 ...

  4. 解题:POI 2009 TAB

    题面 这也算是个套路题(算吗)?发现换来换去每行每列数的组成是不变的,那么就把每行每列拎出来哈希一下,复杂度$O(Tn^2log$ $n)$有点卡时=.=. 然而正解似乎不需要哈希,就像这样↓ ;i& ...

  5. 【BZOJ 1115】【POI 2009】石子游戏Kam

    http://www.lydsy.com/JudgeOnline/problem.php?id=1115 差分后变成阶梯博弈. #include<cstdio> #include<c ...

  6. 【Nim 游戏】 学习笔记

    前言 没脑子选手随便一道博弈论都不会 -- 正文 Nim 游戏引入 这里给出最简单的 \(Nim\) 游戏的题目描述: \(Nim\) 游戏 有两个顶尖聪明的人在玩游戏,游戏规则是这样的: 有\(n\ ...

  7. OAF_文件系列11_实现OAF读写Excel包JXL和POI的区别(概念)

    20150803 Created By BaoXinjian

  8. Java生成excel导出文件(使用poi+JXL)

    1.使用poi生成文件 package com.mi.entity; import java.util.Date; public class Student { private int id; pri ...

  9. Java POI 两种导出方式

    这里面包含了模板导出方法和自定义模板进行导出 package jp.co.syspro.poo.action.hibikoyou; import java.io.ByteArrayOutputStre ...

随机推荐

  1. django by example 第五章 No module named 'sorl-thumbnail'

    描述:按照原书在settings的installed apps中加入sorl-thumbnail后同步数据库显示No module named 'sorl-thumbnail' 解决方案: 根据官方文 ...

  2. 20155326刘美岑 Exp6 信息收集与漏洞扫描

    20155326刘美岑 Exp6 信息收集与漏洞扫描 实验后回答的问题 (1)哪些组织负责DNS,IP的管理. 全球根服务器均由美国政府授权的ICANN统一管理,负责全球的域名根服务器.DNS和IP地 ...

  3. 【python-HTMLTestRunner】生成HTMLTestRunner报告报错ERROR 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)

    [python-HTMLTestRunner]生成HTMLTestRunner报告报错:ERROR 'ascii' codec can't decode byte 0xe5 in position 0 ...

  4. IDEA运行android项目一直是同一个apk

    1.IDEA运行android项目时不像eclipse和android studio那样直接运行,IDEA需要设置Artifacts,这样每次运行的时候它才能重新编译,以下附上步骤! 这样就可以了.

  5. JS中多维数组的深拷贝的多种实现方式

    因为javascript分原始类型与引用类型(与java.c#类似).Array是引用类型,所以直接用=号赋值的话,只是把源数组的地址(或叫指针)赋值给目的数组,并没有实现数组的数据的拷贝.另外对一维 ...

  6. 736. Parse Lisp Expression

    You are given a string expression representing a Lisp-like expression to return the integer value of ...

  7. 你不知道的javascript读书笔记3

    概述 这是我看<你不知道的JavaScript(中卷)>中关于类型检查的笔记,供以后开发时参考,相信对其他人也有用. typeof 我们知道js中有七种内置类型:undefined, nu ...

  8. rabbitmq基础学习+springboot结合rabbitmq实现回调确认confirm

    rabbitmq集群docker快速搭建 https://blog.csdn.net/u011058700/article/details/78708767 rabbitmq原理博客 https:// ...

  9. Introduction to CELP Coding

    Speex is based on CELP, which stands for Code Excited Linear Prediction. This section attempts to in ...

  10. python中stack在实际中的简单应用之平衡符号

    很多书籍都在讲stack的概念和使用方法,等我们把概念熟悉后,发现不知道在什么场景下使用 该结构体,这里就列几个实用的例子,让大家了解一下stack在实际中的用处和厉害之处. 由于stack中的特点是 ...