luogu 2154 离散化+杨辉三角+树状数组
将纵向固定,每次在横向找两个点,计算其中间墓地的贡献答案,离散化后同一行的预处理个数,
树状数组内存储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 离散化+杨辉三角+树状数组的更多相关文章
- Java数组的应用:案例:杨辉三角,三维数组,字符串数组
//import java.util.Arrays; //包含Arrays //import java.util.Random; public class HelloWorld { public st ...
- 【bzoj3289】Mato的文件管理 离散化+莫队算法+树状数组
原文地址:http://www.cnblogs.com/GXZlegend/p/6805224.html 题目描述 Mato同学从各路神犇以各种方式(你们懂的)收集了许多资料,这些资料一共有n份,每份 ...
- [BZOJ 3295] [luogu 3157] [CQOI2011]动态逆序对(树状数组套权值线段树)
[BZOJ 3295] [luogu 3157] [CQOI2011] 动态逆序对 (树状数组套权值线段树) 题面 给出一个长度为n的排列,每次操作删除一个数,求每次操作前排列逆序对的个数 分析 每次 ...
- P2344 奶牛抗议 离散化+前缀和+动态规划+树状数组
[题目背景] Generic Cow Protests, 2011 Feb [题目描述] 约翰家的N 头奶牛正在排队游行抗议.一些奶牛情绪激动,约翰测算下来,排在第i 位的奶牛的理智度为Ai,数字可正 ...
- 【Luogu】P2154虔诚的墓主人(树状数组)
题目链接 这题就是考虑我们有这样一个情况
- luogu P1972 [SDOI2009]HH的项链 |树状数组 或 莫队
题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断地收集新的贝壳,因此,他的项链变得越来越长. ...
- luogu 2519 [HAOI2011]problem a 动态规划+树状数组
发现每一次 $[b[i]+1,n-a[i]]$ 这个区间的分数必须相同,否则不合法. 而一个相同的区间 $[l,r]$ 最多只能出现区间长度次. 于是,就得到了一个 $dp:$ 将每一种区间的出现次数 ...
- 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≤ ...
- 洛谷 P4396 (离散化+莫队+树状数组)
### 洛谷P4396 题目链接 ### 题目大意: 有 n 个整数组成的数组,m 次询问,每次询问中有四个参数 l ,r,a,b .问你在[l,r] 的区间内的所有数中,值属于[a,b] 的数的个 ...
随机推荐
- Enterprise architect 类图加时序图
原文地址:https://segmentfault.com/a/1190000005639047#articleHeader2 新建一个Project 没什么好说的,“文件-新建项目”,然后选择保存位 ...
- VMware Workstation中安装linux系统(CentOS)超详细(部分转载)
首先准备一下VMware虚拟机和linux镜像文件,链接如下: 对于32位windows机子安装的是10.0.7版本的VMware Workstation,链接: https://pan.baidu. ...
- python3 闭包函数
'''闭包函数:内部函数引用外部函数变量(非全局变量)'''def func(y): x = 1 def func1(): print(x, y) return func1 f = func(2)pr ...
- 记一次生产数据库"意外"重启的经历
前言 在一个阳光明媚的下午,电脑右下角传来一片片邮件提醒,同时伴随着微信钉钉的震动,打开一看,应用各种出错,天兔告警,数据库服务器内存爆红,Mysql数据库实例挂掉了. 排查 先交代一下数据库版本: ...
- FineUIPro v5.1.0 发布了!
FineUIPro v5.1.0 已发布,这已经是自 2014 年以来的第 31 个版本,4 年来精雕细琢,只为你来! 上个大版本新增了响应式布局,而这个版本主要是BUG修正,此外还增加了树控件的级联 ...
- c#, AOP动态代理实现动态权限控制(一)
因最近工作需要一个动态的权限配置功能,具体实现逻辑是c#的动态代理功能,废话不多说,直接干货.需求: 用户分为管理员.普通用户 不同用户拥有不同功能权限 用户的权限可配置 新增功能时,不用修改权限配置 ...
- redis从入门到高可用 Redis复制的原理与优化
需要的联系我,QQ:1844912514
- jQuery 移除事件
在绑定事件的过程中,不仅可以为同一个元素绑定多个事件,也可以为多个元素绑定同一个事件.假设网页上有一个<button>元素,使用以下代码为该元素绑定多个相同的事件. <script ...
- T66597 小xzy的任务 题解
T66597 小xzy的任务 题目背景 今天,小xzy的班主任交给他一个严肃的任务,匹配羽毛球运动员! ! ! 题目描述 羽毛球队有男女运动员各n人.给定2个n×n矩阵P和Q.Pij是男运动员i和女 ...
- [ffmpeg] 音频样本
不仅限于ffmpeg,音频采样所得的PCM都含有三个要素:声道(channel).采样率(sample rate).样本格式(sample format). 声道 当人听到声音时,能对声源进行定位,那 ...