Educational Codeforces Round 33 (Rated for Div. 2)

Educational Codeforces Round 33 (Rated for Div. 2)

提交记录

https://codeforces.com/contest/893/status

D

为了尽可能防止钱数 \(>d\),所以设置一个下界 \(lv\)判断是否有解:也就是每次必要充钱(就是当晚有查询操作,但钱数 \(lv\) 为负)的时候,尽可能地少充钱(\(lv:=0\))。如果即便是这样的这样的策略还是会出现一天晚上钱数 \(>d\) 的情况就必然无解。

为了尽可能减少充钱次数,设置一个上界 \(rv\) 得到最优解:每次充钱的时候都让 \(rv:=d\),如果得到当天的钱后钱数 \(>d\) 那就让 \(rv:=d\) 即可。

E

考虑对 \(x\) 进行质因数分解,每个质因数之间贡献互不影响,对于一个质因数 \(p\),记其次数为 \(c\),相当于向 \(y\) 个位置分配 \(c\) 个数,记相应位置分配的个数为 \(a_i\),那么我们有 \(\sum_{i=1}^y a_i = c\),且 \(a_i\in[0,c]\),根据隔板法,方案数为:\(C_{c+y-1}^{y-1}\)

而分配负号对上面的问题也是独立的,只需求向 \(y\) 个位置分配偶数个负号的方案数,根据二项式系数就可以发现这是 \((t+1)^y\) 的偶次项系数和 \(2^{y-1}\)

F

查询 \(u\) 子树中距离 \(u\) 不大于 \(k\) 的所有节点点权的最小值

考虑对深度建立主席树,那么查询节点 \(u\) 的时候,就只需要从深度(记树的最大深度为 \(lim\))为 \(\min(dep[u]+k, lim)\) 对应的主席树中找到标号 \(\in [dfn[u], dfn[u]+sz[u]-1]\)最小值即可。

其中 \(dfn[u]\) 代表整棵树中 \(u\)\(dfs\) 序,\(sz[u]\) 代表 \(u\) 所在子树的大小。

posted @ 2022-09-12 17:29  HinanawiTenshi  阅读(59)  评论(0编辑  收藏  举报