摘要:
01背包问题 题目https://www.acwing.com/problem/content/2/ 给定n个物品和一个背包,容量为m,每个物品有体积v和价值w两种属性 选择物品装入背包,使得在不超过背包容量的情况下,价值最大。 1 #include<iostream> 2 using namesp 阅读全文
2021年1月2日
2020年12月23日
摘要:
定义:给定一个有向图,无出边的点的SG值定义为0,其他点的SG值定义为到不了的最小的自然数 具体问题:给定一个石子集合M,再给定一个可以取的数的集合N,求先手必胜还是必败。 所以SG(10) > 0,所以先手必胜。 证明: (1)最终失败态为0 (2)非零一定可以变成0 (3)0一定不能走到0 由S 阅读全文
2020年12月22日
摘要:
Nim游戏是博弈论中最经典的模型(之一),它又有着十分简单的规则和无比优美的结论 Nim游戏是组合游戏(Combinatorial Games)的一种,准确来说,属于“Impartial Combinatorial Games” Nim游戏具体游戏规则为:有n堆石子,两名选手,每个选手可以拿一堆石子 阅读全文
2020年12月19日
摘要:
在计数时,必须注意没有重复,没有遗漏。为了使重叠部分不被重复计算,人们研究出一种新的计数方法,这种方法的基本思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复,这种计数的方法称为容斥原理。 容斥定理概述: 详细 阅读全文
2020年12月15日
摘要:
1 #include<iostream> 2 using namespace std; 3 typedef long long LL; 4 const int mod=1e9+7; 5 LL qmi(LL a,LL b,LL mod){ 6 LL res=1; 7 while(b){ 8 if(b& 阅读全文
摘要:
C(a,b)表示从a中选b个苹果,0<=b<=a n代表询问次数 根据不同的数据范围有不同的解法 1、1≤n≤10000,1<=b<=a<=2000 此时n较大,询问次数较多,而a,b较小,可以预处理出所有C(a,b)的值,然后进行查询 用到了公式C(a,b)=C(a-1,b-1)+C(a-1,b) 阅读全文
摘要:
高斯消元是线性代数的一种算法,可用来求解线性方程组问题。 线性方程三大基本操作: 1)两方程互换,解不变; 2)一方程乘以非零数k,解不变; 3)一方程乘以数k加上另一方程,解不变 例题1:https://www.acwing.com/problem/content/885/ 1 #include< 阅读全文
2020年12月10日
摘要:
题目链接:https://www.acwing.com/problem/content/206/ 推导过程: 存疑处也就是不知如何从在求出x*a+y*b=m同余方程的一个解的情况下求出x和y的通解。 补充:假设求的x=x1,y=y1 那么ax1+by1=m ax1+by1+kab-kab=m(k为整 阅读全文
2020年12月9日
摘要:
正常的欧几里得算法 1 int gcd(int a,int b){ 2 return b==0?a:gcd(b,a%b); 3 } 可以在O(n)的时间复杂度内,求出a和b两数的最大公约数。 而扩展欧几里得算法则可以在求出最大公约数的同时,求出两个数x,y,使得x*a+y*b=gcd(a,b),用处 阅读全文
2020年12月8日
摘要:
1、欧拉定理 欧拉定理,若a与p互质,那么a ^ (phi[n]) ≡ 1 (mod n) 证明:假设x1,x2....x(phi[n])是1~n中与n互质的数 可以发现,他们是两两不同的。 将每个数都乘以a,得ax1,ax2....ax(phi[n]) 假设我们已经证明在mod n的情况下,x1* 阅读全文