将纵向固定,每次在横向找两个点,计算其中间墓地的贡献答案,离散化后同一行的预处理个数,

树状数组内存储C[up[i]][k] * C[down[i][k] 的值,每次更新时 down[横坐标]++;

c[up[i]][k]*C[down[i]][k] - C[up[i]+1][k]*C[down[i]-1][k] 加入这个值即可

左右答案利用 lf(左侧点数)计算

详见代码

#include<bits/stdc++.h>
#define int long long
#define rep(i,x,y) for(register int i=x;i<=y;i++)
#define dec(i,x,y) for(register int i=x;i>=y;i--)
#define mod 2147483648LL
using namespace std;
const int W=;
inline int read(){
int x=,f=;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-;ch=getchar();}
while(isdigit(ch)){x=(x<<)+(x<<)+(ch^);ch=getchar();}
return x*f;}int n,m,w,k,h[*W],allheng[*W],allshu[*W],down[*W],c[*W],C[W][],ans;
inline void change(int x,int d){for(int i=x;i<=*w;i+=i&(-i)) c[i]=(c[i]+d)%mod;return;}
inline int query(int x){int res=;for(int i=x;i;i-=i&(-i)) res=(res+c[i])%mod;return res;}
struct node{int x,y;}a[W];bool cmp(node a,node b){if(a.y==b.y)return a.x<b.x;return a.y<b.y;}
inline void getc(){C[][]=; rep(i,,w){C[i][]=;
rep(j,,min(i,k)) C[i][j]=(C[i-][j]+C[i-][j-])%mod;}}
inline int find(int x){
int l=,r=*w;while(l<=r){ int mid=(l+r)>>;
if(h[mid]<x) l=mid+;else if(x<h[mid]) r=mid-;else return mid;}}
#undef int
int main(){
#define int long long
//预处理和读入
n=read(),m=read(),w=read();
rep(i,,w) a[i].x=read(),a[i].y=read(),h[*i-]=a[i].x,h[*i]=a[i].y;
k=read(); getc(); sort(h+,h++*w); sort(a+,a++w,cmp);
rep(i,,w) allshu[find(a[i].x)]++,allheng[find(a[i].y)]++; int lf; rep(i,,w){
if(<i&&a[i-].y==a[i].y){ lf++;//左侧的点数
int t1=query(find(a[i].x)-)-query(find(a[i-].x));//纵向 区间内答案之和
int t2=C[lf][k]*C[allheng[find(a[i].y)]-lf][k];//横向
ans=(ans+t1*t2)%mod;}
else lf=; int ii=find(a[i].x);down[ii]++; //已经以乘积的形式放入树状数组
change(ii,(C[down[ii]][k]*C[allshu[ii]-down[ii]][k]-C[down[ii]-][k]*C[allshu[ii]-down[ii]+][k])%mod);}
if(ans<) ans+=mod;printf("%lld\n",ans);return ;}

luogu 2154 离散化+杨辉三角+树状数组的更多相关文章

  1. Java数组的应用:案例:杨辉三角,三维数组,字符串数组

    //import java.util.Arrays; //包含Arrays //import java.util.Random; public class HelloWorld { public st ...

  2. 【bzoj3289】Mato的文件管理 离散化+莫队算法+树状数组

    原文地址:http://www.cnblogs.com/GXZlegend/p/6805224.html 题目描述 Mato同学从各路神犇以各种方式(你们懂的)收集了许多资料,这些资料一共有n份,每份 ...

  3. [BZOJ 3295] [luogu 3157] [CQOI2011]动态逆序对(树状数组套权值线段树)

    [BZOJ 3295] [luogu 3157] [CQOI2011] 动态逆序对 (树状数组套权值线段树) 题面 给出一个长度为n的排列,每次操作删除一个数,求每次操作前排列逆序对的个数 分析 每次 ...

  4. P2344 奶牛抗议 离散化+前缀和+动态规划+树状数组

    [题目背景] Generic Cow Protests, 2011 Feb [题目描述] 约翰家的N 头奶牛正在排队游行抗议.一些奶牛情绪激动,约翰测算下来,排在第i 位的奶牛的理智度为Ai,数字可正 ...

  5. 【Luogu】P2154虔诚的墓主人(树状数组)

    题目链接 这题就是考虑我们有这样一个情况

  6. luogu P1972 [SDOI2009]HH的项链 |树状数组 或 莫队

    题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断地收集新的贝壳,因此,他的项链变得越来越长. ...

  7. luogu 2519 [HAOI2011]problem a 动态规划+树状数组

    发现每一次 $[b[i]+1,n-a[i]]$ 这个区间的分数必须相同,否则不合法. 而一个相同的区间 $[l,r]$ 最多只能出现区间长度次. 于是,就得到了一个 $dp:$ 将每一种区间的出现次数 ...

  8. World is Exploding 树状数组+离散化

    Given a sequence A with length n,count how many quadruple (a,b,c,d) satisfies: a≠b≠c≠d,1≤a<b≤n,1≤ ...

  9. 洛谷 P4396 (离散化+莫队+树状数组)

    ### 洛谷P4396  题目链接 ### 题目大意: 有 n 个整数组成的数组,m 次询问,每次询问中有四个参数 l ,r,a,b .问你在[l,r] 的区间内的所有数中,值属于[a,b] 的数的个 ...

随机推荐

  1. 网络编程_tcp与dup协议简单应用

    老师的博客:http://www.cnblogs.com/Eva-J/articles/8066842.html 计算机网络基础 :http://www.cnblogs.com/Eva-J/artic ...

  2. IDEA 相关整理

    插件部分 Lombok 日志不定义

  3. Docker Selenium

    SeleniumHQ官方项目:https://github.com/seleniumHQ/docker-selenium 项目目前快速迭代中. Docker 一般叫docker容器,一个可爱的鲸鱼,上 ...

  4. C++笔记-并发编程 异步任务(async)

    转自 https://www.cnblogs.com/diysoul/p/5937075.html 参考:https://zh.cppreference.com/w/cpp/thread/lock_g ...

  5. SpringBoot开发案例之拦截器注入Bean

    前言 由于业务需要,需要在拦截器中操作Redis缓存,按照 controller,service层配置发现无法注入,一直报空指针异常. 解决方案 @Configuration public class ...

  6. Winform 最小化双击显示,最小化右键退出。退出

    WinForm 之 窗口最小化到托盘及右键图标显示菜单 Form最小化是指整个Form都缩小到任务栏上,但是窗体以Form的标题栏形式显示在任务栏上, 若是想让Form以Icon的形式显示在任务栏右下 ...

  7. iview库表table组件内嵌套Select组件

    表格内render函数渲染Select组件   { title: '属性值', key: 'values', render:(h,params)=>{ return h('Select',{   ...

  8. JAVA关键字及作用

    ---恢复内容开始--- Java关键字及其作用 一. 总览: 访问控制 private protected public 类,方法和变量修饰符 abstract class extends fina ...

  9. (PAT)L2-006 树的遍历 (二叉树构建)

    题目链接:https://www.patest.cn/contests/gplt/L2-006 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格 ...

  10. (hdu) 4857 逃生 (拓扑排序+优先队列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4857 Problem Description 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄 ...