【题目链接】

  • 点击打开链接

【思路要点】

  • 问题是“是否存在完美匹配”,考虑Hall定理。
  • 根据Hall定理,如果我们能找到一系列人,使得它们的总数大于它们对应的区间并的长度(即鞋的总数),那么二分图不存在完美匹配,反之则一定存在。显然,这样的区间的并一定要也是一个连续的区间(否则没有意义)。
  • 本题中,如果一系列(人对应的)区间的并是一个连续的区间,那么它们编号同样是一个连续的区间。
  • 根据我们之前的推理,答案为NIE,当且仅当存在一个(对人的)编号区间,使得\(该区间对应的人数-(该区间的长度+d)*k>0\),否则,答案为TAK。
  • 因此,我们开一棵线段树,维护全局的最大子段和来判断答案。
  • 时间复杂度\(O(MLogN)\)。

【代码】

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 200005;
template <typename T> void read(T &x) {x = 0; int f = 1;char c = getchar();for (; !isdigit(c); c = getchar()) if (c == '-') f = -f;for (; isdigit(c); c = getchar()) x = x * 10 + c - '0';x *= f;
}
template <typename T> void write(T x) {if (x < 0) x = -x, putchar('-');if (x > 9) write(x / 10);putchar(x % 10 + '0');
}
template <typename T> void writeln(T x) {write(x);puts("");
}
struct info {long long lmax, rmax, midmax, sum; };
info operator + (info a, info b) {info ans;ans.sum = a.sum + b.sum;ans.lmax = max(a.lmax, a.sum + b.lmax);ans.rmax = max(b.rmax, b.sum + a.rmax);ans.midmax = max(max(a.midmax, b.midmax), a.rmax + b.lmax);return ans;
}
struct SegmentTree {struct Node {int lc, rc;info ans;} a[MAXN * 2];int root, size, n;long long k, d;void update(int root) {a[root].ans = a[a[root].lc].ans + a[a[root].rc].ans;}void build(int &root, int l, int r) {root = ++size;if (l == r) {a[root].ans = (info) {-k, -k, -k, -k};return;}int mid = (l + r) / 2;build(a[root].lc, l, mid);build(a[root].rc, mid + 1, r);update(root);}void init(int x, int y, int z) {n = x - z;k = y; d = z;root = size = 0;build(root, 1, n);}void modify(int root, int l, int r, int pos, int d) {if (l == r) {a[root].ans.sum += d;a[root].ans.lmax += d;a[root].ans.rmax += d;a[root].ans.midmax += d;return;}int mid = (l + r) / 2;if (mid >= pos) modify(a[root].lc, l, mid, pos, d);else modify(a[root].rc, mid + 1, r, pos, d);update(root);}void modify(int pos, int d) {modify(root, 1, n, pos, d);}bool match() {info tmp = a[root].ans;if (tmp.midmax - d * k > 0) return false;else return true;}
} ST;
int main() {int n, m, k, d;read(n), read(m), read(k), read(d);ST.init(n, k, d);for (int i = 1; i <= m; i++) {int pos, d; read(pos), read(d);ST.modify(pos, d);if (ST.match()) printf("TAK\n");else printf("NIE\n");}return 0;
}

【BZOJ1135】【POI2009】Lyz相关推荐

  1. 【BZOJ1135】[POI2009]Lyz 线段树

    [BZOJ1135][POI2009]Lyz Description 初始时滑冰俱乐部有1到n号的溜冰鞋各k双.已知x号脚的人可以穿x到x+d的溜冰鞋. 有m次操作,每次包含两个数ri,xi代表来了x ...

  2. 【快速上手mac必备】常用优质mac软件推荐(音视频、办公、软件开发、辅助工具、系统管理、云存储)

    本文章的主要内容是我作为一名大四学生.准程序员.up主这三种身份来给大家推荐一下 mac 上好用的软件以及工具.本人也是从去年9月份开始从windows阵营转移到了mac阵营,刚开始使用的时候,也曾主 ...

  3. 【bzoj 1833】【codevs 1359】 [ZJOI2010]count 数字计数(数位dp)

    1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec  Memory Limit: 64 MB Submit: 2774  Solved: 1230 [Submit ...

  4. 【C++自我精讲】基础系列二 const

    [C++自我精讲]基础系列二 const 0 前言 分三部分:const用法.const和#define比较.const作用. 1 const用法 const常量:const可以用来定义常量,不可改变 ...

  5. (四)Asp.net web api中的坑-【api的返回值】

    (四)Asp.net web api中的坑-[api的返回值] 原文:(四)Asp.net web api中的坑-[api的返回值] void无返回值 IHttpActionResult HttpRe ...

  6. 【C++】【九】栈的应用

    [C++][九]栈的应用 就近匹配原理及其步骤: 中缀转后缀:

  7. 【跃迁之路】【495天】程序员高效学习方法论探索系列(实验阶段252-2018.06.15)...

    @(跃迁之路)专栏 实验说明 从2017.10.6起,开启这个系列,目标只有一个:探索新的学习方法,实现跃迁式成长 实验期2年(2017.10.06 - 2019.10.06) 我将以自己为实验对象. ...

  8. (10)Spring Boot修改端口号【从零开始学Spring Boot】

    Spring boot 默认端口是8080,如果想要进行更改的话,只需要修改applicatoin.properties文件,在配置文件中加入: server.port=9090 常用配置: #### ...

  9. 【跃迁之路】【725天】程序员高效学习方法论探索系列(实验阶段482-2019.2.15)...

    实验说明 从2017.10.6起,开启这个系列,目标只有一个:探索新的学习方法,实现跃迁式成长 实验期2年(2017.10.06 - 2019.10.06) 我将以自己为实验对象. 我将开源我的学习方 ...

  10. 【2018.12.15】【考试总结】【模拟+逆序对+树状数组+贪心+multiset】爆零之旅

    这是我悲惨的接近爆零的一次考试,但是本蒟蒻不能放弃,还是要总结的QAQ 答题卡 [题目背景] 八月是个悲惨的月份.先不谈炎热的天气,对于新生来说,八月意味着军训: 而对于高二高三的同学来说,八月意味着 ...

最新文章

  1. 线性回归api初步使用
  2. mybatis 逆向工程使用姿势不对,把表清空了,心里慌的一比,于是写了个插件。
  3. wxWidgets:拖放样本
  4. python简笔画绘制 数据驱动绘图_python:绘制枫叶简笔画
  5. mysql在linux下配置_mysql数据库在Linux下安装与配置
  6. Spring Enable* 注解
  7. hibernate框架学习之数据模型-POJO
  8. 银行数据部门如何管理跟使用数据?来围观星球中老师的答案
  9. UVA 167 - The Sultan's Successors
  10. MOSEK Fusion Model
  11. 室外宽温1口千兆光纤收发器工业导轨式发送机接收机单模单纤单电口
  12. 亚马逊中国发布2018图书排行榜
  13. LA 6657 GCD XOR
  14. uTorrent设置,防止出现磁盘负荷100%
  15. java-基于Swing的图形界面设计(上)
  16. 数据分析案例-银行拉新活动分析
  17. 如何通过IP地址来访问网站
  18. NFT老炮CryptoPunks解析与实现
  19. JQuery 向下展开收起动画( slideDown(),slideUp() )
  20. 第五章 Kettle数据的清洗与检验

热门文章

  1. 马科维茨模型 matlab,马科维茨投资组合理论(均方模型)学习笔记——基于Matlab(四)...
  2. 【Pytorch实战6】一个完整的分类案例:迁移学习分类蚂蚁和蜜蜂(Res18,VGG16)
  3. 我们应该如何优雅的处理 React 中受控与非受控
  4. 2013 NMPD展示预览,第1部分
  5. 水下环境线结构光传感器的校正模型
  6. 【工程师笔记】第六期:一项Xeon E5-2600 v4测试数据的背后
  7. 谈谈市场上常用语音芯片方案选型,录音芯片方案选型
  8. 中国货币政策的动态有效性研究--基于 TVP-SV-FAVAR 模型的实证分析
  9. Web安全漏洞扫描神器-AWVS下载、安装及使用教程
  10. “金三银四” “阿里” 我去定了,谁也拦不住我,这份《Android面试宝典》说的