bzoj3716/4251 [PA2014]Muzeum
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3716
http://www.lydsy.com/JudgeOnline/problem.php?id=4251
【题解】
非常妙的网络流转化
首先可以把警卫和宝藏看成最大权闭合子图,用最小割的那种建模方法,即一开始加进来所有宝藏的价值
然后S连宝藏,警卫连T,有覆盖关系的连inf
那么就是一个最小割,复杂度是$O(maxflow(n+m, nm)$,显然承受不了。
由于最小割和最大流等价,所以转化最大流考虑。
问题变为
那么按x从大到小排序,每次2种操作:加入一个物品;有一个警卫可以喷水给所有y小于它物品。
显然按照y从大到小喷最优,因为小的限制条件小。
用个set维护即可,注意set的时候lower_bound只能s.lower_bound(...),不能lower_bound(s.begin(), s.end(), ..)!!!
# include <set>
# include <stdio.h>
# include <string.h>
# include <iostream>
# include <algorithm>
// # include <bits/stdc++.h> using namespace std; typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
const int N = 2e5 + ;
const int mod = 1e9+;
const ll inf = 5e18; inline int getint() {
int x = , f = ; char ch = getchar();
while(!isdigit(ch)) {
if(ch == '-') f = ;
ch = getchar();
}
while(isdigit(ch)) {
x = (x<<) + (x<<) + ch - '';
ch = getchar();
}
return f ? x : -x;
} int n, m, W, H;
struct pa {
ll x, y; int v;
pa () {}
pa (ll x, ll y, int v) : x(x), y(y), v(v) {}
inline friend bool operator < (pa a, pa b) {
return a.y < b.y || (a.y == b.y && a.x < b.x);
}
}a[N], b[N]; struct option {
ll x, y; int v, op;
option() {}
option(int op, ll x, ll y, int v) : op(op), x(x), y(y), v(v) {}
inline friend bool operator < (option a, option b) {
return a.x < b.x || (a.x == b.x && a.op > b.op);
}
}p[N + N]; set<pa> s;
set<pa>::iterator it; int main() {
ll ans = ;
cin >> n >> m >> W >> H;
for (int i=; i<=n; ++i) {
a[i].x = 1ll * H * getint(), a[i].y = 1ll * W * getint(), a[i].v = getint();
p[i] = option(, a[i].x - a[i].y, a[i].x + a[i].y, a[i].v); ans += a[i].v;
}
for (int i=; i<=m; ++i) {
b[i].x = 1ll * H * getint(), b[i].y = 1ll * W * getint(), b[i].v = getint();
p[n + i] = option(, b[i].x - b[i].y, b[i].x + b[i].y, b[i].v);
} // maxflow
int pn = n + m;
sort(p+, p+pn+); s.clear(); for (int i=pn; i; --i) {
if(p[i].op == ) s.insert(pa(p[i].x, p[i].y, p[i].v));
else {
int cv = p[i].v;
pa r = pa(inf, p[i].y, cv), t;
while(cv && s.size()) {
it = s.upper_bound(r);
if(it == s.begin()) break;
--it; t = *it; s.erase(it);
int tmp = min(t.v, cv);
cv -= tmp, t.v -= tmp; ans -= tmp;
if(t.v > ) s.insert(t);
}
}
} cout << ans; return ;
}
bzoj3716/4251 [PA2014]Muzeum的更多相关文章
- 【BZOJ3716】[PA2014]Muzeum(贪心,网络流)
[BZOJ3716][PA2014]Muzeum(贪心,网络流) 题面 BZOJ 题解 很明显可以写最大权闭合子图,然后会\(TLE\)成傻逼. 为了方便,就把一个警卫能够看到的范围处理一下(把坐标系 ...
- 【BZOJ3716】[PA2014]Muzeum(贪心+网络流)
BZOJ 题意: 在二维网格图中有\(n\)个物品,每个物品有价值:但有\(m\)个警卫看管这些物品,每个警卫面朝\(y\)轴负方向,能看到一定角度(假定能够看到无穷远). 现在每个敬畏有一个贿赂价钱 ...
- [PA2014]Muzeum
[PA2014]Muzeum 题目大意: 有\(n\)件展品和\(m\)个警卫,每件展品有一个坐标\((x_i,y_i)\)和价值\(v_i\),每个警卫的坐标为\((x_i,y_i)\).每个警卫面 ...
- bzoj 3716: [PA2014]Muzeum
Description 吉丽的漫展有n件手办和m名警卫.建立平面直角坐标系,每个手办和警卫都可以看做一个点.警卫们的目光都朝着y轴负方向,且都有相同大小的视角.警卫可以看见自己视角内(包括边界上的点) ...
- BZOJ 3716 [PA2014]Muzeum 贪心SET最大闭合子图
看上去像是一个最大权闭合子图裸题但是数据太大 我们可以先把守卫的视野转换到第二象限(每个守卫可以看到横坐标比他小 纵坐标比他大的宝物) 然后按X从小到大 再按Y从大到小排 这样我们就可以按SORT序遍 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- [暑假的bzoj刷水记录]
(这篇我就不信有网站来扣) 这个暑假打算刷刷题啥的 但是写博客好累啊 堆一起算了 隔一段更新一下. 7月27号之前刷的的就不写了 , 写的累 代码不贴了,可以找我要啊.. 2017.8.27upd ...
- 退役前的最后的做题记录upd:2019.04.04
考试考到自闭,每天被吊打. 还有几天可能就要AFO了呢... Luogu3602:Koishi Loves Segments 从左向右,每次删除右端点最大的即可. [HEOI2014]南园满地堆轻絮 ...
- BZOJ 3721: PA2014 Final Bazarek
3721: PA2014 Final Bazarek Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 645 Solved: 261[Submit][ ...
随机推荐
- Ubuntu下FileZilla的安装
FileZilla是一个免费而且开源的FTP客户端软件,共有两种版本:客户端版本.服务器版本.FileZilla有条理的界面和管理多站点的简化方式使得FileZilla Client成为一个方便高效的 ...
- 相机上的P,S,A,M分别是什么单词的缩写?
程序曝光 Programmed Auto快门优先 Shutter Priority光圈优先 aperture-priority 全手动模式 Manual Mode
- iOS-学习UIKIt框架的重要性
前言: 众所周知,我们的移动设备的屏幕上可以展示很多图形界面,作为用户的我们可以通过屏幕上的图形界面浏览信息,也可以通过与图形界面的简单交互,在移动设备上实现各种各样的功能操作.....可以说,没 ...
- 【BZOJ1031】字符加密(后缀数组)
[BZOJ1031]字符加密(后缀数组) 题面 BZOJ 洛谷 题解 把字符串倍长 然后直接求后缀数组, 拍好序之后直接输出就行了. (我只是复习一下\(SA\)而已) #include<ios ...
- HDOJ(HDU).1864 最大报销额 (贪心)
HDOJ(HDU).1864 最大报销额 题意分析 题目有点问题,原题中说的 单项物品的价值不得超过600元 应该是单类物品的价值不能超过600元. 一开始以为是01背包,后来按贪心写过了. 一张一张 ...
- Poco::URI
#include<iostream> #include<typeinfo> #include<Poco/Path.h> #include <Poco/Dire ...
- phalcon安装
参考网站:https://docs.phalconphp.com/zh/latest/reference/tools.html (中文版)cento6.5环境安装:cd ~mkdir phalconc ...
- ImageNet: what is top-1 and top-5 error rate?
https://stats.stackexchange.com/questions/156471/imagenet-what-is-top-1-and-top-5-error-rate Your cl ...
- bzoj 1189 [HNOI2007]紧急疏散evacuate 二分+网络流
[HNOI2007]紧急疏散evacuate Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3626 Solved: 1059[Submit][St ...
- FreeRTOS - configASSERT(断言)的使用
原文地址:http://www.cnblogs.com/god-of-death/p/6891400.html FreeRTOS中的断言函数configASSERT()和标准C中的断言函数asser ...