博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 3262: 陌上花开 (cdq分治,三维偏序)
阅读量:3897 次
发布时间:2019-05-23

本文共 1431 字,大约阅读时间需要 4 分钟。

#include 
#include
#include
using namespace std; const int maxn=1e5+10;const int maxk=2e5+10; int n,k; struct Triple {
int a,b,c,cnt,ans;}a[maxn],A[maxn]; bool cmp(const Triple &a,const Triple &b) {
if (a.a!=b.a) {
return a.a
0;i-=lowbit(i)) {
ans+=a[i]; } return ans; }}bit; void CDQ(Triple *l,Triple *r) {
if (l==r) {
l->ans+=l->cnt-1; return ; } Triple *mid=l+(r-l)/2; CDQ(l,mid); CDQ(mid+1,r); static Triple tmp[maxn]; for (Triple *p=tmp,*p1=l,*p2=mid+1;p<=tmp+(r-l);p++) {
if ((p1<=mid&&p1->b<=p2->b)||p2>r) {
*p=*p1++; bit.Update(p->c,p->cnt); } else {
*p=*p2++; p->ans+=bit.Query(p->c); } } for (Triple *p=tmp,*q=l;q<=r;p++,q++) {
bit.Clean(p->c); *q=*p; }} template
inline void read(T &x) {
int f=1; x=0; register char ch; ch=getchar(); while (ch>'9'||ch<'0') {
if (ch=='-') {
f=-f; } ch=getchar(); } while (ch>='0'&&ch<='9') {
x=x*10+ch-'0'; ch=getchar(); } x*=f;} inline void write(int x){
if (x<0) {
putchar('-'); } if (x>9) {
write(x/10); } putchar(x%10+'0');} int main(){
scanf("%d%d",&n,&k); for (int i=0;i

转载地址:http://truen.baihongyu.com/

你可能感兴趣的文章
visual studio 创建 C/C++静态库和动态库
查看>>
2021-05-26
查看>>
ubuntu中配置环境变量
查看>>
ubuntu安装weditor
查看>>
Ubuntu安装NVIDIA显卡驱动
查看>>
vue-cli中实现dolist
查看>>
sass的安装
查看>>
Vue-cli中路由配置
查看>>
豆瓣高分JAVA书籍,你都读过吗?
查看>>
java图书管理系统
查看>>
C#图书管理系统
查看>>
C#酒店管理系统
查看>>
你对ArrayList了解多少?
查看>>
《从Paxos到ZooKeeper分布式一致性原理与实践》学习知识导图
查看>>
Java基础面试题(一) (2020持续更新)
查看>>
JAVA人事管理系统
查看>>
Dubbo面试题(关注小R持续更新)
查看>>
JAVA仿微博系统(JAVA毕业设计含源码和运行教程)
查看>>
24BITBMP位图的文件结构及创建
查看>>
如何在自定义控件中获得width和height?
查看>>