正题

题目链接:https://www.luogu.com.cn/problem/CF297E


题目大意

2∗n2*n2∗n个点的圆,nnn条圆上不交的弦,选择三条使得每条弦对应的弧上的点数量相等。


解题思路


就这5种情况,其中满足条件的是222和555,我们用容斥去掉1,3,41,3,41,3,4即可。

对于每条弦,我们用树状数组维护出在它左边和右边且不与他相交的弦的数量x,yx,yx,y,然后与它相交的数量就是z=n−1−x−yz=n-1-x-yz=n−1−x−y。

第一种情况的个数就是x∗yx*yx∗y,第3,43,43,4种的和就是z∗(x+y)z*(x+y)z∗(x+y)


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
#define lowbit(x) (x&-x)
using namespace std;
const int N=2e5+10;
ll n,ans;
struct node{ll l,r;
}p[N];
struct Tree_Array{ll t[N];void Change(ll x,ll val){while(x<=2*n){t[x]+=val;x+=lowbit(x);}return;}ll Ask(ll x){ll ans=0;while(x){ans+=t[x];x-=lowbit(x);}return ans;}
}Ta,Tp;
bool cmp(node x,node y)
{return x.r<y.r;}
int main()
{scanf("%lld",&n);for(ll i=1;i<=n;i++){scanf("%lld%lld",&p[i].l,&p[i].r);if(p[i].r<p[i].l) swap(p[i].l,p[i].r);}sort(p+1,p+1+n,cmp);for(ll i=1;i<=n;i++)Ta.Change(p[i].l,1);ans=n*(n-1)*(n-2)/6ll;for(ll i=1;i<=n;i++){Ta.Change(p[i].l,-1);ll z=Tp.Ask(p[i].l)+Ta.Ask(p[i].r)-Ta.Ask(p[i].l);ll x=(p[i].r-1-p[i].l-z)/2,y=n-1-z-x;ans-=x*y+z*(x+y)/2;Tp.Change(p[i].l,1);Tp.Change(p[i].r,-1);}printf("%lld",ans);
}

CF297E-Mystic Carvings【树状数组】相关推荐

  1. 洛谷 P5057 [CQOI2006]简单题(树状数组)

    嗯... 题目链接:https://www.luogu.org/problem/P5057 首先发现这道题中只有0和1,所以肯定与二进制有关.然后发现这道题需要支持区间更改和单点查询操作,所以首先想到 ...

  2. Color the ball(HDU1556)树状数组

    每次对区间内气球进行一次染色,求n次操作后后所有气球染色次数. 树状数组,上下区间更新都可以,差别不大. 1.对于[x,y]区间,对第x-1位减1,第y位加1,之后向上统计 #include<b ...

  3. 【BZOJ2434】[NOI2011]阿狸的打字机 AC自动机+DFS序+树状数组

    [BZOJ2434][NOI2011]阿狸的打字机 Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P ...

  4. Codeforces 629D Babaei and Birthday Cake(树状数组优化dp)

    题意: 线段树做法 分析: 因为每次都是在当前位置的前缀区间查询最大值,所以可以直接用树状数组优化.比线段树快了12ms~ 代码: #include<cstdio> #include< ...

  5. poj_3067 树状数组

    题目大意 左右两个竖排,左边竖排有N个点,从上到下依次标记为1,2,...N; 右边竖排有M个点,从上到下依次标记为1,2....M.现在从K条直线分别连接左边一个点和右边一个点,求这K条直线的交点个 ...

  6. hdu 1166 敌兵布阵(树状数组)

    题意:区间和 思路:树状数组 #include<iostream> #include<stdio.h> #include<string.h> using names ...

  7. Equalizing Two Strings 冒泡排序or树状数组

    首先考虑排序后相等 如果排序后相等的话就只考虑reverse长度为2的,所以a或者b排序后存在相邻两个字母相等的话就puts YES,n>26也直接puts YES 不然的话就假设c为a,b排完 ...

  8. Hdu 6534 Chika and Friendly Pairs 莫队算法+树状数组

    题目链接 题意求给区间[L,R]中有少对(i,j)满足i<j且abs(a[i]-a[j])<=k. 首先来说暴力的方法就是离散化,然后用树状数组来维护,但是m次询问,m很大,所以说一定会t ...

  9. HDU - 5877 Weak Pair 2016 ACM/ICPC 大连网络赛 J题 dfs+树状数组+离散化

    题目链接 You are given a rootedrooted tree of NN nodes, labeled from 1 to NN. To the iith node a non-neg ...

最新文章

  1. tree类型题目需要用到的头文件tree.h
  2. java转换CSV文件生成xml格式数据
  3. X86汇编——简易通讯录
  4. 核密度估计python_非参数估计:核密度估计KDE
  5. CCIE-LAB-第二篇-端口聚合LACP+RSTP
  6. 系统设计面试的答题思维框架
  7. 将 nginx 安装成 windows 的方法
  8. android文件系统挂载过程,有线挂载Android4.2文件系统
  9. TensorFlow——Ubuntu系统上TensorFlow的安装教程
  10. vue-cli配置环境:
  11. ssm read time out的原因_为什么得肝病的男人越来越多?爱喝酒不是原因,或跟老婆有关系!...
  12. IplImage 加载图像
  13. 电路图精简版(web内置画图软件)
  14. 希尔排序--简单易懂图解
  15. 让人寒心,义工丛飞资助的是一群白眼狼?
  16. (E1)ENVI-met介绍及下载
  17. 《王者荣耀游戏服务器架构演进(完整版)》读后感
  18. cf大区服务器显示人数合区后,穿越火线:各大区终合并,跨区作战成现实,以后就只有4个大区了!...
  19. 测试工程师多年面试问题整理
  20. Rstudio的安装操作

热门文章

  1. php语言难点,PHP知识难点TOP3,挑战一下你
  2. php 面向对象 教程,PHP学习笔记之面向对象设计_PHP教程
  3. 得出来的视差图左边有黑色补上原图_掌握这10个抠图方法,帮你轻松应对大部分抠图工作!(动图演示...
  4. java socket send_java socket编程
  5. windows安全模式_鲁大师正式挂牌上市,使用鲁大师如何开启笔记本电脑全面节能模式...
  6. 循环遍历多层json_面试官:JSON.stringify() 实现深拷贝有什么问题
  7. leetcode617. 合并二叉树
  8. [mybatis]Mapper XML Files_获取自增主键的值
  9. [PAT乙级]1018 锤子剪刀布
  10. C++,Java编程中 标识符 常见命名约定