CF815D Karen and Cards
固定一维c,然后(a,b)看成坐标,矩形区域求交
1.Segment tree Beats!
2.改成不合法的区域就是求并,c反向枚举,区域只增不减且完全包含之前的
单调栈预处理找到轮廓线,然后两个指针维护顶头位置即可
#include<bits/stdc++.h>
#define reg register int
#define il inline
#define int long long
#define numb (ch^'0')
using namespace std;
typedef long long ll;
il void rd(int &x){
char ch;x=;bool fl=false;
while(!isdigit(ch=getchar()))(ch=='-')&&(fl=true);
for(x=numb;isdigit(ch=getchar());x=x*+numb);
(fl==true)&&(x=-x);
}
namespace Miracle{
const int N=+;
int n,A,B,C;
ll ans,sum;
struct node{
int a,b,c;
}p[N];
bool cmpa(node a,node b){
return a.a<b.a;
}
bool cmpc(node a,node b){
return a.c>b.c;
}
int sta[N],top;
int x[N],y[N];
int main(){
rd(n);rd(A);rd(B);rd(C);
for(reg i=;i<=n;++i) rd(p[i].a),rd(p[i].b),rd(p[i].c);
sort(p+,p+n+,cmpa);
for(reg i=;i<=n;++i){
while(top&&p[sta[top]].b<p[i].b) --top;
sta[++top]=i;
}
sum=(ll)A*B;
sta[top+]=;
for(reg i=;i<=top;++i){
//cout<<" ii "<<i<<" "<<p[sta[i]].b<<endl;
sum-=(ll)((ll)p[sta[i]].a-p[sta[i-]].a)*p[sta[i]].b;
for(reg j=p[sta[i-]].a+;j<=p[sta[i]].a;++j) x[j]=p[sta[i]].b;
for(reg j=p[sta[i]].b;j>p[sta[i+]].b;--j) y[j]=p[sta[i]].a;
}
// for(reg i=1;i<=A;++i){
// cout<<x[i]<<" ";
// }cout<<endl;
// for(reg i=1;i<=B;++i){
// cout<<y[i]<<" ";
// }cout<<endl;
// cout<<" sum "<<sum<<endl;
sort(p+,p+n+,cmpc);
for(reg tx=,ty=,j=,i=C;i>=;--i){
// cout<<" i "<<i<<" tx "<<tx<<" ty "<<ty<<endl;
while(j<=n&&p[j].c>=i){
// cout<<" p[j] "<<j<<" "<<p[j].c<<endl;
for(;tx<=p[j].a;++tx) sum-=B-max(ty-,x[tx]);
// cout<<" sum1 "<<sum<<endl;
for(;ty<=p[j].b;++ty) sum-=A-max(tx-,y[ty]);
// cout<<" sum2 "<<sum<<endl;
++j;
}
ans+=sum;
}
printf("%lld",ans);
return ;
} }
signed main(){
Miracle::main();
return ;
} /*
Author: *Miracle*
Date: 2019/3/3 15:45:41
*/
很套路了
排序,然后偏序想到坐标矩形求面积
交和并的转化,容斥。或者大力吉司机线段树
CF815D Karen and Cards的更多相关文章
- CF815D Karen and Cards 官方题解翻译
看到这道题,网上没有中文版的官方题解,于是就自己翻译了一遍. 不是机器翻译,是一个字一个字纯手翻译的,如果有错误欢迎指正. 比如我们有一张卡片,三个参数分别是 a1 = 4, b1 = 2, c1 = ...
- 【CF815D】Karen and Cards 单调栈+扫描线
[CF815D]Karen and Cards 题意:一张卡片有三个属性a,b,c,其上限分别为A,B,C,现在有n张卡片,定义一张卡片能打败另一张卡片当且仅当它的至少两项属性要严格大于另一张的对应属 ...
- Codeforces Round #460 D. Karen and Cards
Description Karen just got home from the supermarket, and is getting ready to go to sleep. After tak ...
- [学习笔记]Segment Tree Beats!九老师线段树
对于这样一类问题: 区间取min,区间求和. N<=100000 要求O(nlogn)级别的算法 直观体会一下,区间取min,还要维护区间和 增加的长度很不好求.... 然鹅, 从前有一个来自杭 ...
- Petrozavodsk Summer Training Camp 2017 Day 9
Petrozavodsk Summer Training Camp 2017 Day 9 Problem A. Building 题目描述:给出一棵树,在树上取出一条简单路径,使得该路径的最长上升子序 ...
- Codeforces Round #419 (Div. 1) 补题 CF 815 A-E
A-C传送门 D Karen and Cards 技巧性很强的一道二分优化题 题意很简单 给定n个三元组,和三个维度的上限,问存在多少三元组,使得对于给定的n个三元组中的每一个,必有两个维度严格小于. ...
- Codeforces Round #419
A Karen and Morning 找最近的回文时间 模拟 往后推 判判就行 //By SiriusRen #include <bits/stdc++.h> using namesp ...
- Codeforces Round #419 (Div. 1) (ABCD)
1. 815A Karen and Game 大意: 给定$nm$矩阵, 每次选择一行或一列全部减$1$, 求最少次数使得矩阵全$0$ 贪心, $n>m$时每次取一列, 否则取一行 #inclu ...
- BZOJ 1004 【HNOI2008】 Cards
题目链接:Cards 听说这道题是染色问题的入门题,于是就去学了一下\(Bunside\)引理和\(P\acute{o}lya\)定理(其实还是没有懂),回来写这道题. 由于题目中保证"任意 ...
随机推荐
- springboot 中事件监听模型的一种实现
目录 定义事件本身 定义事件源 定义监听者 一.需要实现 ApplicationListener 二.使用 @EventListener 注解 测试 项目结构 前言: 事件监听模型是一种常用的设计模式 ...
- Nginx负载均衡中后端节点服务器健康检查的操作梳理
正常情况下,nginx做反向代理,如果后端节点服务器宕掉的话,nginx默认是不能把这台realserver踢出upstream负载集群的,所以还会有请求转发到后端的这台realserver上面,这样 ...
- python2.6升级到3.3.0 以及依赖库在迁移时的处理
线上服务器python版本默认是2.6,由于业务程序要求,需要将python升级到3.3.0, 操作记录如下: Cenots6.8默认安装的是2.6版本,要更新升级需安装下gcc: [root@ope ...
- Fedora 19关闭防火墙
关闭防火墙systemctl stop firewalld.service 关闭开机启动防火墙systemctl disable firewalld.service
- Web系统页面打印技术实现与分析
1 Web页面打印概述应用WEB化,不论对开发商,还是对用户来说,实在是一种很经济的选择,因为基于WEB的应用,客户端的规则很简单,容易学习,容易维护,容易发布.在WEB系统中,打印的确是个烦人的问题 ...
- 生产者消费者模式 php 【转】
在工作中常常听到某某大牛之间的交谈会涉及到,xx消费者啊啥的,到底什么大牛之间讲的是什么? 这篇文章主要解决三个问题: 1.到底什么是生产者和消费者,以及它们之间的故事 2.它们之间靠什么交流 3.应 ...
- JS进阶系列之执行上下文
function test(){ console.log(a);//undefined; var a = 1; } test(); 也许你会遇到过上面这样的面试题,你只知道它考的是变量提升,但是具体的 ...
- C. Multi-Subject Competition
链接 [https://codeforces.com/contest/1082/problem/C] 题意 有n个人,m个科目,每个人都有选的科目si,以及他的能力值ri, 规则是每个科目要么选要么不 ...
- PairProject——结对编程
成员:12061162 王骜 12061225 钟毅恒 一.合作过程中的照片 . 二.结对编程的优缺点 优点: 1)在编程过程中,任何一段代码都不断地复审,同时避免了将写代码的责任抛给一个人的问题 ...
- BugPhobia发布篇章:学霸在线系统测试报告
0x00 :测试报告版本管理 版本号 具体细节 修订时间 V 1.0 整理第一轮迭代用户管理和登陆注册的功能性验证测试,预计将继续网页对浏览器版本的兼容性测试 2015/11/12 V1.0.1 整理 ...