博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj1227: [SDOI2009]虔诚的墓主人(树状数组,组合数)
阅读量:6991 次
发布时间:2019-06-27

本文共 1349 字,大约阅读时间需要 4 分钟。

 

首先,对于每一块墓地,如果上下左右各有$a,b,c,d$棵树,那么总的虔诚度就是$C_k^a*C_k^b*C_k^c*C_k^d$

那么我们先把所有的点都给离散,然后按$x$为第一关键字,$y$为第二关键字,那么同一横坐标的一定在连续的一段且纵坐标递增

那么对于同一横坐标的两棵常青树,在他们中间的所有空地都有可能满足条件,因为上面的常青树和下面的常青树数量是固定的,所以$C_k^a*C_k^b$的值也是固定的

那么我们就是需要快速求出一段区间里的$C_k^c*C_k^d$,那么我们可以考虑用树状数组来维护。这部分细节可以参考代码

1 //minamoto 2 #include
3 #include
4 #include
5 #define int long long 6 using namespace std; 7 #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++) 8 char buf[1<<21],*p1=buf,*p2=buf; 9 inline int read(){10 #define num ch-'0'11 char ch;bool flag=0;int res;12 while(!isdigit(ch=getc()))13 (ch=='-')&&(flag=true);14 for(res=num;isdigit(ch=getc());res=res*10+num);15 (flag)&&(res=-res);16 #undef num17 return res;18 }19 const int N=100005,mod=2147483648;20 int n,m,k,C[N][15],tt=0,ans,tmp[N],c[N],col,tot[N],cnt[N],r[N],h[N];21 struct node{
int x,y;}a[N];22 inline bool cmp(const node &a,const node &b)23 {
return a.x!=b.x?a.x
=k&&cnt[dy]-h[dy]>=k?54 1ll*C[h[dy]][k]*C[cnt[dy]-h[dy]][k]%mod:0;++tt;55 add(dy,v-r[dy]),r[dy]=v;56 if(i==n||a[i].x!=a[i+1].x||a[i+1].y-a[i].y<=157 ||tt
=0?ans:ans+mod)%mod);62 return 0;63 }

 

转载于:https://www.cnblogs.com/bztMinamoto/p/9598137.html

你可能感兴趣的文章
AV Foundation 学习
查看>>
WP7上HttpWebRequest的用法
查看>>
3:16: 错误: expected declaration specifiers or ‘...’ before string constant
查看>>
大白话5分钟带你走进人工智能-第二十五节决策树系列之信息增益和信息增益率(4)...
查看>>
【datamining】OLTP,OLAP,维度数据库,事实表,维度表、星形和雪花模式、数据立方体、概念分层...
查看>>
PIE SDK 距离分类和最大似然分类
查看>>
Add、Commit和Push
查看>>
NPInter数据集的奇葩标号的出坑秘籍
查看>>
Angular2地图的使用、地图画线、高德底图切换、图标变换等
查看>>
opencv Mat.at
查看>>
Android中android:visibility的3中属性的剖析
查看>>
SharePoint 客户端对象模型 多选查阅项赋值
查看>>
spring前两天复习
查看>>
动手动脑
查看>>
网络流(二)最大流的增广路算法
查看>>
IIS负载均衡-Application Request Route详解第四篇:使用ARR实现三层部署架构(转载)...
查看>>
TList To DataTable
查看>>
Cache.Insert 方法(摘自MSDN)
查看>>
Duck typing
查看>>
每日一记--索引/过滤器
查看>>