随笔分类 - 数学
摘要:【数学公式】 PG(x1,x2,...,xn) = 1/|G| * ∑π∈G x1^b1 * x2^b2*...*bn^bn 其中π是1^b12^b2...n^bn型轮换 然后一般染色情况下x1=x2=...=xn = m 于是就有了ans = 1/|G|*∑π∈Gm^c(π) 其中c(π)是置换π
阅读全文
摘要:N<=1e9,O(nlogn)的做法会超时。从枚举置换转变为枚举轮换长度,然后可以利用欧拉函数,把复杂度变为O(√n * logn)
阅读全文
摘要:polya定理。等价类的个数等于∑颜色数^置换的轮换个数 不可翻转的串当中。直接计算∑m^(gcd(n,i)) ,这里gcd(n,i)就是第i个置换的轮换数。 翻转的情况再分n奇偶讨论。 n次二面体都是这个套路。
阅读全文
摘要:打表找规律失败,搜了一下原来是wythoff博弈
阅读全文
摘要:sg大法好 无脑sg即可,不用去找规律了。
阅读全文
摘要:关于01分数规划可以看这里,讲的很清楚:http://blog.csdn.net/hhaile/article/details/8883652 二分的思想,每次只要选取最大的N-K个d[i],如果可以使F(L)>0,就说明可以更大。 //这道题很早以前学长就挂过了,现在才学会。。。 1 /*----
阅读全文
摘要:大数阶乘 题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=28 1 import java.io.*; 2 import java.util.*; 3 import java.math.*; 4 //import java.text.*;
阅读全文
摘要:注意只有一个素因子的情况。 1 #include <cstdio> 2 #include <algorithm> 3 #include <cstring> 4 5 using namespace std; 6 7 typedef long long ll; 8 const int INF = 0x3
阅读全文
摘要:经过研究可以发现,每一位的贡献是C(n-2,k-1)+C(n-3,k-1)...C(k-1,k-1) 同时还要注意加号全部在左边的情况。 这里还用了O(n)预处理O(1)组合数的模板。//妙啊。。妙。。。 1 #include <cstdio> 2 #include <cstring> 3 #inc
阅读全文
摘要:有一个串,有黑色和白色两种元素。一次操作可以把最上面的白色元素变成黑色,同时把这个元素上面的所有元素变成白色。 给你一个30以内的串,计算变成全黑时,元素变化的总和。 我用的方法比较笨,打表处理了1-30个全白串变黑的ans,然后模拟,借助打表的结果计算出答案。 其实,每出现一个白色元素 cnt+=
阅读全文
摘要:从1-a和1-b种选两个数xy,计算出令gcd(x,y)=k的xy的对数。 对于每一个i∈[1,b]使用solve(i,n)函数解决有几个j∈[1,n]使gcd(x,y)=k。然后累加solve(i,n)-solve(i,i)即可,注意边界情况。 solve函数则使用容斥原理。 #include <
阅读全文
摘要:给出N个MAXN以内的不同的数,求出素因子最大的数。 使用朴素的方法分解素因子即可。时间复杂度为N*log(MAXN) 1 #include <cstdio> 2 #include <algorithm> 3 #include <cstring> 4 5 using namespace std; 6
阅读全文
摘要:依次考虑一个数的倍数,两个数的倍数(lcm),三个数的倍数(lcm)。。。 会发现有这么一个规律,奇数个数时要加上情况数,偶数个数时要减去情况数。 一种只有10个数,用二进制枚举所有情况即可。 #include <cstdio> #include <algorithm> #include <cstr
阅读全文
摘要:模板题。 #include <cstdio> #include <cstring> using namespace std; const int MOD = 10000; int N; struct matrix { int m[2][2]; }ans,base; matrix multi(matr
阅读全文
摘要:FJ对以后的每一天会花mi块钱,他想把这些天分成M个时段,然后每个时段的花费和最小。 二分答案,如果加上这天还没有达到mid,就加上它。之后看分成的时段是否大于M #include <cstdio> #include <algorithm> using namespace std; int n,m,
阅读全文
摘要:一条河里有一串石头,给出石头间的间距,让你去掉m个石头,使最短间距最大。 二分答案,对于每一种mid,判断要不要删除这块石头。然后逼近答案。 #include <cstdio> #include <cstring> #include <algorithm> using namespace std;
阅读全文
摘要:一根细棒升温时会变长,在两面墙中间,会变成一个弓形。 给出变长后的长度,求新的细棒中心与没伸长时的中心的距离。 简单的数学推导后就可以二分答案了,一开始没完全掌握二分的姿势,wa了好多。而且poj double输出要用%f,用%lf就wa了。 #include <cstdio> #include <
阅读全文
摘要:有N个派,F+1个人,每个人分到的体积要相等,而且每个人只能有一块派。 二分答案,对于一个mid,对每个派进行检测,尽量的多分,然后如果份数比F+1大,说明mid可以更大,就把mid给low。注意份数等于F+1时,也要向大的地方靠近。 二分答案的题都是这样的套路。 这种题精度是一个大坑。总是在wa和
阅读全文
摘要:给出一个数字n,计算从1到n能组成几个不同的三角形。 n的范围是10^6,大概就是递推吧。从F[i-1]到F[i]可以线性求出。要注意结果超出int。 #include <cstdio> #include <cstring> #include <algorithm> using namespace
阅读全文
摘要:计算一个大整数(10^100)中有没有一个小于L的素因子。这个大整数是两个素数的乘积。其实就是RSA加密。 做法是把大整数表示成千进位,用数组存储,然后一位一位地取模。 /*---------------------------------------------------------------
阅读全文

浙公网安备 33010602011771号