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\)棵出来 ...
随机推荐
- linux克隆机器
首先你要先点击你的虚拟机点击克隆: 然后执行这个 vim /etc/sysconfig/network-scripts/ifcfg-eth0 去这里修改这两行 然后注释了 然后再执行这个 > / ...
- 修改UIView的默认Layer后,修改View的值会动态修改Layer的值
修改UIView的默认Layer后,修改View的值会动态修改Layer的值 效果图: 如上图所示,当我们修改了一个UIView的子类中的Layer内置类型时(如上图中我们将CALayer直接替换成了 ...
- wxpython 窗口排版- proportion/flag/border参数说明
新学习wxpython,一直纠结于窗口控件的排版,经过几天的查资料.试验,总结如下. 1.需求实例 来个实例,窗口有3行控件 第一行是文本提示(大小不变,文字左对齐,控件居左). 第二行依次为文本提示 ...
- 计算机中的换行符、回车符、\n、\r、\n\r 怎么区分啊?
'\r'是回车,前者使光标到行首,(carriage return)'\n'是换行,后者使光标下移一格,(line feed) \r 是回车,return\n 是换行,newline对于换行这个动作, ...
- 制作MacOS 系统启动盘
1,首先需要在一台有MacOS系统,在Apple stroe下载MacOS High Sierra安装程序: 2,准备一个至少8G容量的U盘: 3,打开 “应用程序 → 实用工具 → 磁盘工具”,将U ...
- CSS-定位属性
Css学习——定位属性 定位可以看作是一种分层,通过对页面中的各种元素进行定位,可以将某些元素放到其他元素的上层,并在浏览器的窗口中设置这些元素的具体位置. position属性以及Css所提供的4中 ...
- November 25th 2016 Week 48th Friday
People will fall for its appearance while driving passionately. 观者倾心,驭者动魄. This is an advertisement ...
- Scala编程之访问修饰符
private ,protected,public,在不加前两者声明时为public为公共式访问: private为私有式访问:protected为家族式访问,与Java一致. object Oute ...
- Lua脚本语法说明(转):
Lua脚本语法说明(增加lua5.1部份特性) 转自:http://www.cnblogs.com/ly4cn/archive/2006/08/04/467550.html Lua 的语法比较简单,学 ...
- [T-ARA][Bo Peep Bo Peep]
歌词来源:http://music.163.com/#/song?id=22704468 作曲 : 新沙洞老虎/崔圭成 [作曲 : 新沙洞老虎/崔圭成] 作词 : 新沙洞老虎/崔圭成 [作词 : 新沙 ...