【题解】HDU多校1

Link

本 OIer 第一次打HDU多校。(o゚▽゚)o

1001 博弈

【Anti_Nim,常规的性质分析,****】
Anti_Nim:每一堆都取到1后变为native的问题;
Key:不全为 1 的请况,在异或和不为 0 时,先手可以决定最后是谁取,即可以决定胜利!
考虑全为 1 的请况:
长度为偶数:先后手不变,故忽略;
长度为奇数:先后手会变,故只有在第一个 Key 之前的,即开头的那段有效。
枚举开头“全是1的长度为奇数”的个数,直接计数。

1002 夜世界

【唐唐数据结构题,***】
时光倒流就是一个树形结构,要主席树?每次修改都是单点覆盖,可以简单地以单点覆盖的形式回溯,那 x 天回到 y 天,直接 y 向 x 连边即可。
线段树维护信息时,记录:1.当前剩余值;2.被索要但还没有交付的值;3.和哥布林得到的值。
pushup 时左右区间用 ls 的 1 和 rs 的 2 更新即可。

1003 奸商

【状压,***】
长为奇数串必然合法。这里“每次幻觉都可以变为不同的字母”所提供的灵活性,只要求我们对于一个串有字母可变即可。枚举中心字母 \(s_i,s_i+1\)(要求存在长度 \(\ge len\) 的以其为中心),不断向外扩展(这里只用扩展到 \(len\),因为外面所有串合法当且仅当里面解决),对于处于对称位置的不同的两个字母,将小的记到 st 中(只有从小变到大),如果出现了对称位置相等的情况,那么直接都合法,st = 0。
然后枚举要出现幻觉的字母集合 P,要求不存在某中心的字符串 st 与 P 没有交集。

1004 串串

【SA,****】
想到 NOI2015品酒大会。

1005 传送门

【01 bfs,拆点,**】
略。

1006 景区建设

【MST,**】
峰点建确定,由于 919810 > (11400 + 514100),贪心从低到高连边即可。(证明用 Prim)。

1007 树上LCM

【状压,高维前缀和,LCM,**】
lcm 本质是质因子数目取最大值,对没有多余质因子和质因子个数等于 x 的个数的计入 st,dfs 的时候统计路径即可,用不着淀粉质。

1008 mod 2

【性质,Lucas,异或Hash+主席树,组合数DP,*****】
抽丝剥茧的题目。
第一层:不考虑任何限制的 \(b\),对于确定数 \(d_i\) 及其个数 \(c_i\) 后,种数为 \(X = C_{k}^{c_1}C_{k-c1}^{c2}\cdots C_{k-\sum c}^{c_m} \pmod 2\)。那么我们只用考虑 \(X\) 为奇数的情况,即要求每一项都为奇数。观察形式 \(C_{n}^{m} \pmod 2 = 1\),由 Lucas 经典进制拆位性质得到 \(\operatorname{bits(m)} \in \operatorname{bits(n)}\)(这一性质同样可以用于后面组合数的计算中)。那么从 \(k\) 取出 \(c_i\) 的过程就是取出二进制位的过程,将用下文的 DP 计算(同时得到 \(b\) 最多有一个 \(c_i\) 为奇数)。
第二层:求 \(\operatorname{oven(a[L\sim R])}\),其长度 \(m\) 大于 \(\lceil \log_2^k \rceil = 60\) 答案就是 \(0\)。直接主席树上异或哈希。弄出来的最大值大于 \(V\) 答案也是 \(0\)
第三层:既然 \(\operatorname{oven(a[L\sim R])}\) 是确定的,那么排序后的 \({c_m}\) 对应过去的 \(d_i\) 就是一个一个对应过来,那剩下的只有解决 DP 计数了。在从 \(k\) 中选位的过程中 \(dp_{i,j,k}\) 表示 \(i\) 位二进制位,选择了 \(j\) 次,有 \(k\) 位被选择的方案数。最后答案是 \(dp_{|\operatorname{bits(k)}|,m,|\operatorname{bits(k)}|}\)。由于我们选择出来的 \(c\) 是无序的,直接 \(dp_{s, j-1, k}C_{s-k}^{x} \to dp_{s, j, k+x}\) 会多出来 \(m!\) 的排列。每次强制选择最低未被覆盖位即可, \(dp_{s, j-1, k}C_{s-k-1}^{x-1} \to dp_{s, j, k+x}\)。对于 \(k\) 为奇数时可能多出来的那个奇数 \(c_i\),枚举其位数 \(j+1\)(包含 \(2^0\) 那一位),贡献为 \(\times dp_{|\operatorname{bits(k)}|-j-1,m,|\operatorname{bits(k)}|-j-1}(V-m)\)

1009 子序列

【从大到小加入,*】
略。

1010 中位数

\(\operatorname{No \log}\),*】
略。

posted @ 2025-07-19 10:27  Luzexxi  阅读(120)  评论(0)    收藏  举报