摘要:
题目链接 最优数学期望的分界点并不在区间中点处,因此需要整数三分,应当可以通过l=lmid+1、r=rmid-1收缩区间 延伸思考:不管是二分还是三分,通过用中值更新ans,总可以使得候选区间缩小 ACM时代,应当可以通过__gcd函数求最大公约数,不用自己手写了。【就算会编译错误也不计入罚时,试错 阅读全文
摘要:
题目链接 括号序列匹配+最优化问题+一系列限制条件+较小的数据范围=最小费用最大流模型 拆点难以解决重复的问题,既然如此那就不拆点了,用1个流量代表1个括号,流向代表左右括号的选择 流量是对上界的限制,通过补集转化题目中的下界限制 每一次bfs,总流量增加,总费用也是增加的,但是退流的边还是要归还费 阅读全文
摘要:
题目链接 难以直接求解。考虑用二分答案转化为判定(根据复杂度理论,判定的难度小于求解)。 当你想不到一个更新的视角看待问题时,不妨回顾一下你已有的想法,正解说不定就隐藏其中,只需要再深入一些 点击查看代码 #include <bits/stdc++.h> using namespace std; i 阅读全文
摘要:
题目链接 【构造思路】有序化问题,按b从大到小考虑,构造当前的合法方案中包容性最强的方案,动态判断 首先,对于最大的b,让r=l就好了,需不需要让r稍大一点,来让它避免被其他区间覆盖?不可能有这种情况 其次,对于所有的b-1,你需要为所有的b都找到一个覆盖它的区间,并且所有的b-1之间都不会相互覆盖 阅读全文
摘要:
当然可以用树形DP做,但是转移的细节很多,关键是要将所有可能的情况纳入DP的设计中 四种情况:贡献1个给父亲、不需要父亲贡献、父亲贡献1个给该子树、父亲贡献2个给该子树 题解的做法:对于1个大小为n的、只有根节点完成的子树,需要的次数一定为n/2 【你并不关心具体的种植方案,只关心需要的天数】 另一 阅读全文
摘要:
更简便的实现方式是,考虑n的二进制拆分,取lowbit(n)之后,后续取的所有数都是2的幂次,为必胜态,如果k<lowbit(n),则无论取什么数,后续的lowbit(n)都不超过k,对应必败态(用反证法证) 阅读全文
摘要:
培养OI直觉 那么大的组合数根本不可做。当然有的时候你的确能把类似的大数消掉,但是你用心感受一下,在这道题中,你觉得后续真的有机会把它消掉吗?所谓条条大路通罗马,在OI中常常是行不通的。 通过之前的训练,你其实也知道一条路走不通很可能是大方向就完全错了。但在赛时,你的临场体验其实是,【转换视角】的思 阅读全文
摘要:
“交换”其实是一个很抽象的操作 因为你并不关心“交换”这个操作本身,而只关心它产生的影响 考虑把“交换”具像化。它等价于将f(a)、f(b)同时异或上(ai^bi) 引入线性基算法,问题解决 其实你已经感受到了这种类似于“自动机”的感觉,也想到了线性基算法,但,对什么序列构建异或空间呢?a和b当然不 阅读全文
摘要:
题目链接 赛场上想到了n方枚举n方检验的4方做法,提前想好了实现细节一点点实现,最后一遍过了样例,还是很感动的 赛场上超时了,但是交到Codeforces上能以900ms通过 正解的确是n^3的,考虑优化枚举,确定1号节点在A后,对于每个1->x->y->1的三元环,要么x在B,y在C,要么x,y都 阅读全文