【BZOJ1135】【POI2009】Lyz
【题目链接】
- 点击打开链接
【思路要点】
- 问题是“是否存在完美匹配”,考虑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相关推荐
- 【BZOJ1135】[POI2009]Lyz 线段树
[BZOJ1135][POI2009]Lyz Description 初始时滑冰俱乐部有1到n号的溜冰鞋各k双.已知x号脚的人可以穿x到x+d的溜冰鞋. 有m次操作,每次包含两个数ri,xi代表来了x ...
- 【快速上手mac必备】常用优质mac软件推荐(音视频、办公、软件开发、辅助工具、系统管理、云存储)
本文章的主要内容是我作为一名大四学生.准程序员.up主这三种身份来给大家推荐一下 mac 上好用的软件以及工具.本人也是从去年9月份开始从windows阵营转移到了mac阵营,刚开始使用的时候,也曾主 ...
- 【bzoj 1833】【codevs 1359】 [ZJOI2010]count 数字计数(数位dp)
1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec Memory Limit: 64 MB Submit: 2774 Solved: 1230 [Submit ...
- 【C++自我精讲】基础系列二 const
[C++自我精讲]基础系列二 const 0 前言 分三部分:const用法.const和#define比较.const作用. 1 const用法 const常量:const可以用来定义常量,不可改变 ...
- (四)Asp.net web api中的坑-【api的返回值】
(四)Asp.net web api中的坑-[api的返回值] 原文:(四)Asp.net web api中的坑-[api的返回值] void无返回值 IHttpActionResult HttpRe ...
- 【C++】【九】栈的应用
[C++][九]栈的应用 就近匹配原理及其步骤: 中缀转后缀:
- 【跃迁之路】【495天】程序员高效学习方法论探索系列(实验阶段252-2018.06.15)...
@(跃迁之路)专栏 实验说明 从2017.10.6起,开启这个系列,目标只有一个:探索新的学习方法,实现跃迁式成长 实验期2年(2017.10.06 - 2019.10.06) 我将以自己为实验对象. ...
- (10)Spring Boot修改端口号【从零开始学Spring Boot】
Spring boot 默认端口是8080,如果想要进行更改的话,只需要修改applicatoin.properties文件,在配置文件中加入: server.port=9090 常用配置: #### ...
- 【跃迁之路】【725天】程序员高效学习方法论探索系列(实验阶段482-2019.2.15)...
实验说明 从2017.10.6起,开启这个系列,目标只有一个:探索新的学习方法,实现跃迁式成长 实验期2年(2017.10.06 - 2019.10.06) 我将以自己为实验对象. 我将开源我的学习方 ...
- 【2018.12.15】【考试总结】【模拟+逆序对+树状数组+贪心+multiset】爆零之旅
这是我悲惨的接近爆零的一次考试,但是本蒟蒻不能放弃,还是要总结的QAQ 答题卡 [题目背景] 八月是个悲惨的月份.先不谈炎热的天气,对于新生来说,八月意味着军训: 而对于高二高三的同学来说,八月意味着 ...
最新文章
- 线性回归api初步使用
- mybatis 逆向工程使用姿势不对,把表清空了,心里慌的一比,于是写了个插件。
- wxWidgets:拖放样本
- python简笔画绘制 数据驱动绘图_python:绘制枫叶简笔画
- mysql在linux下配置_mysql数据库在Linux下安装与配置
- Spring Enable* 注解
- hibernate框架学习之数据模型-POJO
- 银行数据部门如何管理跟使用数据?来围观星球中老师的答案
- UVA 167 - The Sultan's Successors
- MOSEK Fusion Model
- 室外宽温1口千兆光纤收发器工业导轨式发送机接收机单模单纤单电口
- 亚马逊中国发布2018图书排行榜
- LA 6657 GCD XOR
- uTorrent设置,防止出现磁盘负荷100%
- java-基于Swing的图形界面设计(上)
- 数据分析案例-银行拉新活动分析
- 如何通过IP地址来访问网站
- NFT老炮CryptoPunks解析与实现
- JQuery 向下展开收起动画( slideDown(),slideUp() )
- 第五章 Kettle数据的清洗与检验
热门文章
- 马科维茨模型 matlab,马科维茨投资组合理论(均方模型)学习笔记——基于Matlab(四)...
- 【Pytorch实战6】一个完整的分类案例:迁移学习分类蚂蚁和蜜蜂(Res18,VGG16)
- 我们应该如何优雅的处理 React 中受控与非受控
- 2013 NMPD展示预览,第1部分
- 水下环境线结构光传感器的校正模型
- 【工程师笔记】第六期:一项Xeon E5-2600 v4测试数据的背后
- 谈谈市场上常用语音芯片方案选型,录音芯片方案选型
- 中国货币政策的动态有效性研究--基于 TVP-SV-FAVAR 模型的实证分析
- Web安全漏洞扫描神器-AWVS下载、安装及使用教程
- “金三银四” “阿里” 我去定了,谁也拦不住我,这份《Android面试宝典》说的