12 2020 档案
摘要:取(m堆)石子游戏 HDU - 2176 vj 题意概述:给出n堆石子,nim博弈判谁能赢,并且如果先手获胜输出所有先手获胜的第一步方案。 复习了一下$nim$博弈. 判赢的$nim$异或和$nim = a_{1} \oplus a_{2} \oplus a_{3} \oplus a_{4}\opl
阅读全文
摘要:#include<iostream> using namespace std; typedef long long ll; ll q_mul(ll a, ll b, ll p) { ll ret = 0; while (b) { if (b&1)(ret += a)%=p; b>>=1; (a<<=
阅读全文
摘要:简单线段树操作 咕咕咕 Transformation HDU - 4578 vj talk is cheap, chow the code. #include <iostream> #include <cstring> using namespace std; typedef long long l
阅读全文
摘要:数学刷刷刷 1.Digits of Factorial 题意大体是给一个$1e6$大小的$n$然后问其$n!$的$k$进制位数。 我感觉遇到阶乘,虽然不是经验主义,但是求位数大致应该是和$log_{10}$有关的,所以我们先设所求答案为$x$,那么显然可得$$n!<=k^$$然后很显然,$n!$必然
阅读全文
摘要:LCM 最小公倍数,求得方式为 \((a*b)/gcd(a, b)\) 从本质上看,是由$a$的全部质因子最高位和$b$的全部质因子并起来的结果 \(a = p _{a}^{k1} p _{b}^{k2} p _{c}^{k3}\) \(b = p _{a}^{k4} p _{b}^{k5} p _
阅读全文
摘要:模拟退火 模拟退火玄学算法,解万能最值问题。 例题 #include <cmath> #include <iostream> using namespace std; const double eps = 1e-8; double L, W; double f(double x) { return
阅读全文
摘要:$O(nlogn)$LIS $nlogn$做法 维护$dp$数组使得每次加入元素,如果是大于$dp$数组尾部,那么直接加到最后面,如果不是,那么加入到对答案影响最好的位置,就是严格大于的下一个位置,插入时用二分查找可降低至$log$。 如果要记录路径,那么就可以每次从$a$数组里加入到$dp$中时,
阅读全文
摘要:简单动态规划 前言 简单的动态规划其实并不是很难,在初期确实感觉无从下手,就是感觉为什么明明很简单却总是做不出来,其实就是对动态规划的本质理解较差,从而很难推断出状态方程进行转移,或者找到突破点,其实如果是没有算法的简单动态规划,题做多了就容易找到感觉了。 做题通法 首先找最初始状态,然后寻找一下其
阅读全文