摘要:
$x^{y^z}=(1+e^x)^{ 2xy^w}$ $\sum_{n/d}\frac{1}{x}$ 阅读全文
摘要:
fwt 原理并不知道 nim游戏石子异或和=0后手赢 那么也就是求a[1]^a[2]^...^a[n]=0的方案数 这个和bzoj3992一样可以dp dp[i][j]表示前i个数异或和为j的方案数 dp[0][0] = 1 dp[i][j] = dp[i - 1][k] * a[p] p ^ k 阅读全文
摘要:
还差一道题 bzoj4070 看错题*2- >暴力想不出来 其实我们发现由于每只doge只有在有信息的情况下才会走 那么也就是说每只doge只会连续地走一次 不可能信息传给别的doge之后再传回来 并且只会向一个方向跑 因为只跑一次 那么折返跑肯定是亏的 所以暴力连边就是狗所在的位置向狗连边,狗向能 阅读全文
摘要:
网络流 如果只有两个的话就是裸的二分图匹配 然而这里有三个元素 由于食物和饮料互相没有关系,只和牛有关系 那么我们把牛拆点x->y cap = 1 然后饮料和食物分别限制x y就行了 #include<bits/stdc++.h> using namespace std; const int N = 阅读全文
摘要:
斜率优化+cdq分治 这个就是都不单调的情况 dp[i] = max(a[i] * x[j] + b[i] * y[j]) x[j] 表示能买多少a劵 y[j]表示能买多少b劵 化简一下 dp[i] / b[i] = max(a[i] / b[i] * x[j] + y[j]) 非常标准的斜率优化形 阅读全文
摘要:
斜率优化 斜率优化是指对于dp[i]=max/min(dp[j]+a[i]*b[j]+c[j])这样的方程的优化 -a[i]*b[j]+dp[i]=dp[j]+c[j] 把b[j]看成x,dp[j]+c[j]看成y -a[i]=k dp[i]=b 这就是一次函数的形式,可以看成用斜率为-a[i]的直 阅读全文
摘要:
线段树 线段树记录到每个位置截止的答案 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e6 + 5; int n, m; ll ans; int nxt[N], last[N], a 阅读全文
摘要:
二分图匹配 首先有个定理:最长反链=最小链覆盖 最小链覆盖可以重复经过点 所以我们不能直接建图 那么我们用floyd判断是否相连 然后建图就行了 #include<bits/stdc++.h> using namespace std; const int N = 410, inf = 1e9; in 阅读全文
摘要:
数位dp 复习数位dp 数位dp一般用记忆化搜索来解决 观察需要满足的条件,然后计入状态 状态还要记录是否达到上线,以及前导零 比如说这道题 dfs(bit,a4,a8,cnt,last,limit) 由于这道题枚举的时候不可能有前导零,所以就不记录前导零 bit表示当前考虑第bit位,从高到低 a 阅读全文
摘要:
整体二分+决策单调性 这个方法已经忘了... 决策单调性是指dp[i]由dp[1]->dp[i-1]更新,那么当dp[j]比dp[k]优且j>k时,对于i->n j都比k优 通过这个性质我们可以把dp优化到nlogn 具体做法是整体二分 solve(l,r,L,R)表示当前对于l->r的dp决策区间 阅读全文