P2154 [SDOI2009]虔诚的墓主人
略有一点点思维的题。
首先,如果一个点上,下,左,右分别有\(a,b,c,d\)棵树,那这个点的十字架方案为\(C_{a}^{k}C_{b}^{k}C_{c}^{k}C_{d}^{k}\)。
按x坐标扫一遍,同时树状数组维护每个y坐标的\(C_{a}^{k}C_{b}^{k}\),直接统计答案。复杂度\(O(nlogn)\)。
#include<bits/stdc++.h>
#define il inline
#define vd void
#define ll long long
#define mod 2147483648ll
il int gi(){
int x=0,f=1;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-')f=-1;
ch=getchar();
}
while(isdigit(ch))x=x*10+ch-'0',ch=getchar();
return x*f;
}
ll x[100010],y[100010],uni_x[100010],uni_y[100010];
std::vector<ll>S[100010];
ll t[100010];
il vd inc(ll&x,ll y){x+=y;x%=mod;}
il vd update(ll x,ll y){while(x<uni_y[0])inc(t[x],y),x+=x&-x;}
il ll query(ll x){ll ret=0;while(x)ret+=t[x],x-=x&-x;return ret%mod;}
il ll Query(ll l,ll r){
if(l>r)return 0;
return (query(r)-query(l-1)+mod)%mod;
}
ll A[100010],B[100010],C[200010][11];
int main(){
#ifndef ONLINE_JUDGE
freopen("2154.in","r",stdin);
freopen("2154.out","w",stdout);
#endif
gi(),gi();ll n=gi();
for(ll i=1;i<=n;++i)x[i]=uni_x[i]=gi(),y[i]=uni_y[i]=gi();
std::sort(uni_x+1,uni_x+n+1);std::sort(uni_y+1,uni_y+n+1);
uni_x[0]=std::unique(uni_x+1,uni_x+n+1)-uni_x;
uni_y[0]=std::unique(uni_y+1,uni_y+n+1)-uni_y;
for(ll i=1;i<=n;++i)x[i]=std::lower_bound(uni_x+1,uni_x+uni_x[0],x[i])-uni_x,y[i]=std::lower_bound(uni_y+1,uni_y+uni_y[0],y[i])-uni_y;
for(ll i=1;i<=n;++i)S[x[i]].push_back(y[i]);
ll k=gi(),ans=0;
for(ll i=1;i<=n;++i)++B[y[i]];
C[0][0]=1;
for(int i=1;i<=200000;++i){
C[i][0]=1;
for(int j=1;j<=i&&j<=k;++j)C[i][j]=(C[i-1][j-1]+C[i-1][j])%mod;
}
for(ll i=1;i<uni_x[0];++i){
std::sort(S[i].begin(),S[i].end());
for(ll j=0;j<S[i].size();++j){
update(S[i][j],mod-C[A[S[i][j]]][k]*C[B[S[i][j]]][k]%mod);
--B[S[i][j]];
update(S[i][j],C[A[S[i][j]]][k]*C[B[S[i][j]]][k]%mod);
}
for(ll j=1;j<S[i].size();++j)ans+=C[j][k]*C[(ll)S[i].size()-j][k]%mod*Query(S[i][j-1]+1,S[i][j]-1)%mod;
for(ll j=0;j<S[i].size();++j){
update(S[i][j],mod-C[A[S[i][j]]][k]*C[B[S[i][j]]][k]%mod);
++A[S[i][j]];
update(S[i][j],C[A[S[i][j]]][k]*C[B[S[i][j]]][k]%mod);
}
ans%=mod;
}
printf("%lld\n",ans);
return 0;
}
P2154 [SDOI2009]虔诚的墓主人的更多相关文章
- bzoj1227 P2154 [SDOI2009]虔诚的墓主人
P2154 [SDOI2009]虔诚的墓主人 组合数学+离散化+树状数组 先看题,结合样例分析,易得每个墓地的虔诚度=C(正左几棵,k)*C(正右几棵,k)*C(正上几棵,k)*C(正下几棵,k),如 ...
- P2154 [SDOI2009]虔诚的墓主人 树状数组
https://www.luogu.org/problemnew/show/P2154 题意 在一个坐标系中,有w(1e5)个点,这个图中空点的权值是正上,正下,正左,正右各取k个的排列组合情况.计算 ...
- [洛谷P2154] SDOI2009 虔诚的墓主人
问题描述 小W是一片新造公墓的管理人.公墓可以看成一块N×M的矩形,矩形的每个格点,要么种着一棵常青树,要么是一块还没有归属的墓地. 当地的居民都是非常虔诚的基督徒,他们愿意提前为自己找一块合适墓地. ...
- luogu P2154 [SDOI2009]虔诚的墓主人
luogu 下面记一个点上下左右点数分别为\(u_i,d_i,l_i,r_i\) 枚举每个中间点太慢了,考虑枚举两个点之间横的一条线段,这里面的点左边点数目都相同,右边点数目都相同,然后只要查一下区间 ...
- BZOJ 1227: [SDOI2009]虔诚的墓主人
1227: [SDOI2009]虔诚的墓主人 Time Limit: 5 Sec Memory Limit: 259 MBSubmit: 1078 Solved: 510[Submit][Stat ...
- Bzoj 1227: [SDOI2009]虔诚的墓主人 树状数组,离散化,组合数学
1227: [SDOI2009]虔诚的墓主人 Time Limit: 5 Sec Memory Limit: 259 MBSubmit: 895 Solved: 422[Submit][Statu ...
- bzoj1227 [SDOI2009]虔诚的墓主人(组合公式+离散化+线段树)
1227: [SDOI2009]虔诚的墓主人 Time Limit: 5 Sec Memory Limit: 259 MBSubmit: 803 Solved: 372[Submit][Statu ...
- 1227: [SDOI2009]虔诚的墓主人
1227: [SDOI2009]虔诚的墓主人 Time Limit: 5 Sec Memory Limit: 259 MBSubmit: 1083 Solved: 514[Submit][Stat ...
- 【BZOJ1227】[SDOI2009]虔诚的墓主人(线段树)
[BZOJ1227][SDOI2009]虔诚的墓主人(线段树) 题面 BZOJ 洛谷 题解 显然发现答案就是对于每一个空位置,考虑上下左右各有多少棵树,然后就是这四个方向上树的数量中选\(K\)棵出来 ...
随机推荐
- flask 的管理模块的功能add_template_global、send_from_directory
add_template_global方法 全局模板函数 add_template_global 装饰器直接将函数注册为模板全局函数. add_template_global 这个方式是自定义的全局函 ...
- HelloAndroid
Hello Android 代码 button.setOnClickListener { val alertDialog = AlertDialog.Builder(this) alertDialog ...
- 唯品会RPC服务框架与容器化演进--转
原文地址:http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=405781868&idx=1&sn=cbb10d37e25 ...
- 鲜为人知的 Python 语法
所有人(好吧,不是所有人)都知道 python 是一门用途广泛.易读.而且容易入门的编程语言. 但同时 python 语法也允许我们做一些很奇怪的事情. 使用 lambda 表达式重写多行函数 ...
- 1875. [SDOI2009]HH去散步【矩阵乘法】
Description HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但 是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回. 又 ...
- React 如何正常渲染一段HTML字符串
dangerouslySetInnerHTMl 属性 很多时候我们做一个项目接口会返回一段 HTML 字符串文本,然后我们把它解析渲染成正常的html,这是在项目中常见不能再常见的情况了,可是在 re ...
- linq to sql 和linq to php 的区别
linq to sql 这是自.net框架3.5版本以上做出了相关规定. linq to php .Net的linq库的忠实移植到PHP 这个库使得大量使用匿名函数在PHP 5.3中引入的功能.因此, ...
- 【转】Spring Boot干货系列:(六)静态资源和拦截器处理
前言 本章我们来介绍下SpringBoot对静态资源的支持以及很重要的一个类WebMvcConfigurerAdapter. 正文 前面章节我们也有简单介绍过SpringBoot中对静态资源的默认支持 ...
- 关于iframe的父页面调取子页面里的事件(父往子里传)
在body里打开一个iframe页面,想要调取打开的这个页面里的函数: $('iframe')[0].contentWindow.sonFn(canshu); [0]:比如在index.html页面里 ...
- 如何接好CAN的“地”
[导读]CAN总线以其高可靠性.实时性.灵活性以及严谨的数据处理机制等特点,在工业现场和汽车行业得到广泛应用,但随着环境干扰以及节点数目的增加等对CAN总线的稳定性提出更高的要求,而面对电源地.信号地 ...