P2154 [SDOI2009]虔诚的墓主人 组合数学+离散化+树状数组 先看题,结合样例分析,易得每个墓地的虔诚度=C(正左几棵,k)*C(正右几棵,k)*C(正上几棵,k)*C(正下几棵,k),如果任意一遍的棵树<k,则虔诚度=0. 所以我们可以预处理出C(w,k). 再看数据范围:“对于100%的数据,满足1 ≤ N, M ≤ 1,000,000,000,0 ≤ xi ≤ N,0 ≤ yi ≤ M,1 ≤ W ≤ 100,000,1 ≤ k ≤ 10.” 对比一下 n,m 和 w 的大…
BZOJ原题链接 洛谷原题链接 又是扫描线,题解可看大佬的博客(太懒了不想打) #include<cstdio> #include<algorithm> using namespace std; const int N = 1e5 + 10; const long long mod = 2147483648LL; struct dd { int x, y; }; dd a[N]; int ls_x[N], ls_y[N], sx[N], sy[N], S[N], C[N][12],…
略有一点点思维的题. 首先,如果一个点上,下,左,右分别有\(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 #defi…