[BZOJ3434][Wc2014]时空穿梭 Description Input 第一行包含一个正整数T,表示有T组数据求解每组数据包含两行,第一行包含两个正整数N,C(c>=2),分别表示空间的维数和需要选择的暂停点个数第二行包含N个正整数,依次表示M1,M2....Mn Output 有T行,每行一个非负整数,依次对应每组数据的答案. Sample Input 3 2 3 3 4 3 3 3 4 4 4 4 5 9 7 8 Sample Output 2 4 846 HINT 样例数据第一组…
题面:BZOJ传送门 洛谷传送门 好难啊..反演的终极题目 首先,本题的突破口在于直线的性质.不论是几维的空间,两点一定能确定一条直线 选取两个点作为最左下和最右上的点! 假设现在是二维空间,选取了$(x1,y1)$和$(x2,y2)$两个点,那么它们连线上经过的点数就是$gcd(x2-x1,y2-y1)-1$ 选取的方案数为$\left ( _{gcd-1}^{c-2} \right )$ 发现这个方案数只和坐标的差值有关,我们直接枚举差值就行 接下来就是反演了,为了方便叙述,以$n=2$为例…
https://www.cnblogs.com/CQzhangyu/p/7891363.html 不难推到$\sum\limits_{D=1}^{m_1}\sum\limits_{d|D}C_{d-1}^{c-2}\mu(\frac D d)\prod\limits_{i=1}^n\frac {(2m_i-({\lfloor \frac {m_i} {D} \rfloor}+1)\times D){\lfloor \frac {m_i} {D} \rfloor}}{2}$. $O(Tnm)$,可…
题目描述 小 X 驾驶着他的飞船准备穿梭过一个 \(n\) 维空间,这个空间里每个点的坐标可以用 \(n\) 个实数表示,即 \((x_1,x_2,\dots,x_n)\). 为了穿过这个空间,小 X 需要在这个空间中选取 \(c\)(\(c\geq 2\))个点作为飞船停留的地方,而这些点需要满足以下三个条件: 每个点的每一维坐标均为正整数,且第 \(i\) 维坐标不超过 \(m_i\). 第 \(i+1\)(\(1\leq i<c\))个点的第 \(j\)(\(1\leq j\leq n\)…
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/转载请注明出处,侵权必究,保留最终解释权! Description Input 第一行包含一个正整数T,表示有T组数据求解每组数据包含两行,第一行包含两个正整数N,C(c>=2),分别表示空间的维数和需要选择的暂停点个数第二行包含N个正整数,依次表示M1,M2....Mn Output 有T行,每行…
考虑枚举相邻点距离差的比例.显然应使比例值gcd为1以保证不重复统计.确定比例之后,各维坐标的方案数就可以分开考虑.设比例之和为k,则若坐标上限为m,该维坐标取值方案数即为Σm-ki (i=1~⌊m/k⌋),也即⌊m/k⌋·m-k·(⌊m/k⌋+1)·⌊m/k⌋/2,设其为f(m,k).总方案数即将各维方案数相乘,设为F(k). 于是得到答案即为ΣkΣa1Σa2……Σac-2 [gcd(a1,a2,……,ac-2,k)=1]·F(k).套路一波,得到Σk F(k)·(Σd μ(d)·g(k/d)…
题目:http://uoj.ac/problem/54 想写20分. Subtask 2 就是枚举4个维度的值的比例,可算对于一个比例有多少个值可以选,然后就是组合数.结果好像不对. 因为模数太小,组合数不能用阶乘的那个公式.不过 c*m 递推即可. #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int rdn() { ;;char ch=getchar(); ;c…
这才叫莫比乌斯反演题. 一.题目 点此看题 二.解法 也没有什么好的思路,我们不妨把暴力柿子写出来,我们想枚举直线,但是这道题不能枚举直线的斜率,所以就要用整数来表示直线,我们不妨枚举出发点和终止点的向量差 \((x_1,x_2...x_n)\) ,那么起始点的方案数就是 \(\prod m-x_i\) ,剩余点的选取是在起始点的基础上加上这个向量 \((x_1/d,x_2/d...x_n/d)\) ,不难发现 \(d\) 必然满足是所有 \(x\) 的因数,也就是 \(\gcd(x)\) 的因…
http://www.lydsy.com/JudgeOnline/problem.php?id=3434 题意:n维坐标中要找c个点使得c个点在一条线上且每一维的坐标单调递增且不能超过每一维限定的值m[i](n<=11, 2<=c<=20, m[i]<=100000) #include <bits/stdc++.h> using namespace std; const int N=100005, MD=10007; int C[N][19], g[21][N], f[…
bzoj3994:[SDOI2015]约数个数和 **很好推+有个小结论bzoj3309:DZY Loves Math ***很好推+线筛某函数/卡常bzoj4816:[Sdoi2017]数字表格 *很好推+O(n)求一整个数组的逆元的小技巧bzoj2693:jzptab **很好推+线筛某函数/直接交bzoj3434:[Wc2014]时空穿梭 ****实际问题转化(不难证也不是很难想的小结论)+大力反演(超流弊的一步步优化)…