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\)定理(其实还是没有懂),回来写这道题. 由于题目中保证"任意 ...
随机推荐
- [T-ARA][떠나지마][不要离开]
歌词来源:http://music.163.com/#/song?id=22704408 잊기엔 너무 사랑했나봐 [id-ggi-en neo-mu sa-lang-haen-na-bwa] 아직도 ...
- B. Interesting drink
链接 [http://codeforces.com/group/1EzrFFyOc0/contest/706/problem/B] 题意 给你n个数,q次查询,每次输入一个m,问n个数中有多少个数小于 ...
- B. Forgery
链接 [http://codeforces.com/contest/1059/problem/B] 题意 要伪造医生签名,先给你医生的签名nm的网格'.'表示空白',#'表示墨水,你的笔可以这么画以一 ...
- D. Vasya and Triangle
传送门 [http://codeforces.com/contest/1030/problem/D] 题意 在第一象限,x,y得坐标上限是n,m,再给你个k,让你找3个整数点,使得围成面积等于(n*m ...
- js格式化时间
转自:https://blog.csdn.net/u010964869/article/details/51095827 显示格式为:yyyy-mm-dd hh:mi:ss function form ...
- alpa开发阶段团队贡献分
这是我们团队之前决定的分配方式: 1.凡是认真完成自己任务的队员,都将有基础分30分(态度分). 2. 将整个项目细化为不同的任务,列出一个任务清单,在综合.协调完每名成员的意愿后,我会分配清单中的任 ...
- 2丶利用NABCD模型进行竞争性需求分析
确定项目:公交查询系统 分析小组:在路上 选择比努力更重要.一个项目成功自然离不开组员们的努力.但是,光努力是不够的.还需要用户有需求,能快速实现. 这些东西,看似很虚,却能让我们少走不少弯路.做项目 ...
- Golang 入门~~基础知识
变量声明 //通用形式,指定变量名,变量类型,变量值 var name int = 99 fmt.Println(name) //指定变量名,以及变量类型,未指定值的时候默认是类型零值 var age ...
- Windows 下类似于 grep 查找字符串的命令 [转帖]
https://www.cnblogs.com/zxy1992/p/4372717.html findstr的命令参数及其意义如下所示 在文件中寻找字符串. FINDSTR [/B] [/E] [/L ...
- hive数据导入load导入命令
LOCAL 指的是操作系统的文件路径,否则默认为HDFS的文件路径 1.向t2和t3的数据表中导入数据 2.导入操作系统的一下三个文件 执行导入命令 3.将HDFS文件中的数据导入到t3中 4.导入 ...