[BZOJ4822] [CQOI2017] 老C的任务
题目链接
BZOJ:https://lydsy.com/JudgeOnline/problem.php?id=4822.
洛谷:https://www.luogu.org/problemnew/show/P3755.
Solution
直接上\(kd\_tree\)就好了。
为啥我觉得bzoj机子比洛谷快些
#include<bits/stdc++.h>
using namespace std;
void read(int &x) {
x=0;int f=1;char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=-f;
for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0';x*=f;
}
#define ll long long
void print(ll x) {
if(x<0) putchar('-'),x=-x;
if(!x) return ;print(x/10),putchar(x%10+48);
}
void write(ll x) {if(!x) putchar('0');else print(x);putchar('\n');}
#define lf double
#define FOR(i,a,b) for(int i=a;i<=b;i++)
const int maxn = 2e5+10;
const int inf = 1e9;
const lf eps = 1e-8;
int n,Q,rt,D;
struct data {ll sum;int ls,rs,mx[2],mn[2],p[2],val;}a[maxn],t;
void up(int x) {
int ls=a[x].ls,rs=a[x].rs;
if(ls) FOR(i,0,1) {
a[x].mn[i]=min(a[x].mn[i],a[ls].mn[i]);
a[x].mx[i]=max(a[x].mx[i],a[ls].mx[i]);
}
if(rs) FOR(i,0,1) {
a[x].mn[i]=min(a[x].mn[i],a[rs].mn[i]);
a[x].mx[i]=max(a[x].mx[i],a[rs].mx[i]);
}
a[x].sum=a[x].val+a[ls].sum+a[rs].sum;
}
int cmp(data x,data y) {return x.p[D]<y.p[D];}
int build(int d,int l,int r) {
int mid=(l+r)>>1;D=d;nth_element(a+l+1,a+mid+1,a+r+1,cmp);
FOR(i,0,1) a[mid].mn[i]=a[mid].mx[i]=a[mid].p[i];
if(l<mid) a[mid].ls=build(!d,l,mid-1);
if(r>mid) a[mid].rs=build(!d,mid+1,r);
up(mid);return mid;
}
int in(int x) {
FOR(i,0,1) if(a[x].mn[i]<t.mn[i]||a[x].mx[i]>t.mx[i]) return 0;
return 1;
}
int out(int x) {
FOR(i,0,1) if(a[x].mn[i]<t.mx[i]&&a[x].mx[i]>t.mn[i]) return 0;
return 1;
}
int cover(int x) {
FOR(i,0,1) if(a[x].p[i]>t.mx[i]||a[x].p[i]<t.mn[i]) return 0;
return 1;
}
ll query(int x) {
if(!x) return 0;
if(in(x)) return a[x].sum;
if(out(x)) return 0;
int res=0;
if(cover(x)) res+=a[x].val;
return res+query(a[x].ls)+query(a[x].rs);
}
int main() {
read(n),read(Q);FOR(i,1,n) read(a[i].p[0]),read(a[i].p[1]),read(a[i].val);
rt=build(0,1,n);
FOR(i,1,Q) {
read(t.mn[0]),read(t.mn[1]),read(t.mx[0]),read(t.mx[1]);
write(query(rt));
}
return 0;
}
[BZOJ4822] [CQOI2017] 老C的任务的更多相关文章
- [BZOJ4822][CQOI2017]老C的任务(扫描线+树状数组)
4822: [Cqoi2017]老C的任务 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 379 Solved: 203[Submit][Statu ...
- [bzoj4822][Cqoi2017]老C的任务&[bzoj1935][Shoi2007]Tree 园丁的烦恼
来自FallDream的博客,未经允许,请勿转载,谢谢. 老 C 是个程序员. 最近老 C 从老板那里接到了一个任务——给城市中的手机基站写个管理系统.作为经验丰富的程序员,老 C 轻松地完成 ...
- BZOJ4822[Cqoi2017]老C的任务——树状数组(二维数点)
题目描述 老 C 是个程序员. 最近老 C 从老板那里接到了一个任务——给城市中的手机基站写个管理系统.作为经验丰富的程序员,老 C 轻松 地完成了系统的大部分功能,并把其中一个功能交给你来实 ...
- bzoj4822: [Cqoi2017]老C的任务(扫描线+BIT/线段树)
裸题... 依旧是写了BIT和线段树两种(才不是写完线段树后才想起来可以写BIT呢 怎么卡常数都挺大...QAQ ccz和yy的写法好快哇%%% BIT: #include<iostream&g ...
- 【BZOJ4822】[CQOI2017]老C的任务(扫描线)
[BZOJ4822][CQOI2017]老C的任务(扫描线) 题面 BZOJ 洛谷 题解 没有修改操作,都不需要分治了... 直接排序之后扫描线算贡献就好了... 不知道为啥洛谷上过不了... #in ...
- bzoj 4822: [Cqoi2017]老C的任务
4822: [Cqoi2017]老C的任务 练手速... #include <iostream> #include <cstdio> #include <cstring& ...
- bzoj 4823: [Cqoi2017]老C的方块 [最小割]
4823: [Cqoi2017]老C的方块 题意: 鬼畜方块游戏不解释... 有些特殊边,有些四个方块组成的图形,方块有代价,删掉一些方块使得没有图形,最小化代价. 比较明显的最小割,一个图形中必须删 ...
- [CQOI2017]老C的键盘
[CQOI2017]老C的键盘 题目描述 额,网上题解好像都是用的一大堆组合数,然而我懒得推公式. 设\(f[i][j]\)表示以\(i\)为根,且\(i\)的权值为\(j\)的方案数. 转移: \[ ...
- [BZOJ4824][Cqoi2017]老C的键盘 树形dp+组合数
4824: [Cqoi2017]老C的键盘 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 218 Solved: 171[Submit][Statu ...
随机推荐
- 通过反编译看Java String及intern内幕--费元星站长
通过反编译看Java String及intern内幕 一.字符串问题 字符串在我们平时的编码工作中其实用的非常多,并且用起来也比较简单,所以很少有人对其做特别深入的研究.倒是面试或者笔试的时候,往 ...
- leetcode--笔记8 Fizz Buzz
题目要求: Write a program that outputs the string representation of numbers from 1 to n. But for multipl ...
- mac使用brew或者tomcat启动jenkins后配置文件路径
在mac下使用brew命令或tomcat安装jenkins,启动后要输入密码,密码不知道,又找不到config.xml,找了半天原来 config.xml在/Users/qiaojiafei/.jen ...
- javaweb(九)—— 通过Servlet生成验证码图片
一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:
- uvaoj455Periodic Strings(枚举)
A character string is said to have period k if it can be formed by concatenating one or more repetit ...
- hdu1848Fibonacci again and again(sg函数)
Fibonacci again and again Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav ...
- VIN码识别,车架号识别,OCR扫描工具
近年二手车交易市场火爆,对二手车估值需要了详细解二手车的历史状况,车架号(VIN码)是车辆唯一的身份标识,也是了解二手车车况的入口,车商和二手车平台会频繁的进行车况查询,VIN码扫描识别技术给车辆估值 ...
- 小程序开发中,纯css实现内容收起折叠功能
不多说,直接上代码: wxml页面: <!--收起折叠 begin--> <view style='width:100%;background:#fff;border-top:1px ...
- 从零开始的Python学习Episode 6——字符串操作
字符串操作 一.输出重复字符串 print('smile'*6) #输出6个smile 二.通过引索输出部分字符串 print('smile'[1:]) print('smile'[1:3]) #输出 ...
- visionpro9.0破解
visionpro9.0软件下载 提供一个visionpro9.0视频教程学习网站:点击下面链接进入. ------------------------Halcon,Visionpro高清视频教程,点 ...