[TC13761]Mutalisk】的更多相关文章

[TC13761]Mutalisk 题目大意: 有\(n(n\le20)\)个坏人,第\(i\)个坏人的血量为\(A_i(A_i\le60)\).你可以每次攻击\(3\)个坏人,并分别造成\(9\)点.\(3\)点.\(1\)点伤害.问最少需要多少次攻击使得所有坏人血量都\(\le0\). 思路: 二分+DP. \(f_{i,j,k}\)表示前\(i\)个坏人,还有\(j\)次扣\(9\)点血的机会.\(k\)次扣\(3\)点血的机会,最多还能有几次扣\(1\)点血的机会. 源代码: #incl…
点分治+SG函数还真是令人意外的组合啊 思路 这道题看到找一条满足条件的链,想到点分治 看到博弈,想到SG函数 然后就变成一道SG函数+点分治的题了 然后1e9的SG函数怎么搞?当然是打表了 然后各种出锅 多组数据记得清零 SG函数不要打错表QwQ 因为对着租酥雨julao的blog调了好久,所以代码极其相似 代码 #include <cstdio> #include <algorithm> #include <cstring> #include <unorder…
luogu 题意(简化版) 给你一棵树,每个点上有一个\(SG\)值,问你是否存在一条路径使得\(SG\)异或和为\(0\). sol 可以当做每个点的稳定值就是这个点上的石子数量. 很显然我们只需要把每个点的\(SG\)值处理出来后面的就好做了. 分别考虑\(k\)的不同取值下的\(SG\)函数的计算方法. \(k=1\) 每堆石子可以任意取,显然\(SG(x)=x\). \(k=2\) 打表/手玩可以发现,若\(x\)恰好为\(S+1\)的倍数\(-1\)时\(SG(x)=2\),否则\(S…
题目: P3727曼哈顿计划E 分析: 大长题面容易给人一种不可做的错觉,但是这题考的知识点都是我们熟悉的. 稍加分析我们可以得到,我们可以把每个点当成一个单独的游戏,如果k=1,就是简单的nim游戏,这样,当多个游戏放在一起的时候,我们就可以根据一条链的权值异或和来判断必胜必败. 这个给我们启发,根据SG定理(应该是这个定理?)当我们选一条链,根据这条链上所有点的SG函数的异或和,可以判断胜负. 所以我们可以对于每个k想办法求点的sg函数,就可以用点分治解决这个题. 怎么求sg函数?(打表找规…
Topcoder 658 div2 500 加强版 不过给了<=20,暴力肯定不行. 然后想DP方程,先二分可能需要的最大次数mid; 然后根据 mid 构造 DP方程. 假设x[i]需要 x个9 ,y个3,z个1,x*9+y*3+z>=x[i]; 然后求出dp[n][[x]][y][z]<=mid 是否 符合. 转移方程为:dp[i+1][n9+m9][m3+n3]=min(dp[i+1][n9+m9][n3+m3],dp[i][n9][n3]+max(0,x[i]-9*m9-3*m3…