2019-team11/summary-190810
从 Trac 迁移的文章
这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。
原文章内容如下:
== 流水账 ==
咸鱼了十天后开始训练,还不是很在状态,比赛时的策略并不得当。卡了三个题。
xtx出门签K。ln出门看D和txt讨论发现可用秦九韶算法做。此时kc开始看E。
之后ln和xtx看H,随便推了一下式子算了一下复杂度感觉暴力可以跑过去?然后就t了……
之后kc推出了E的公式开码,ln在想H,xtx在想G。
kc的E WA on 5了,然而算法似乎并无问题,加入特判后依然WA on 5。
xtx发现G用某种贪心策略做似乎是可行的,和ln讨论感觉这种算法是可以的,于是开码。写完后发现一些情形考虑不周,就加了棵线段树,然后又加了一棵线段树,才过……
ln看了下J感觉排个序就能做,和xtx讨论感觉这样是对的,于是xtx码J,WA on 8。不知错误何在。
ln开始看H发呆,kc在思考E,xtx想J。如此,比赛过去了……
== 经验教训 ==
ln:后期不能发呆,要调整思路,不能陷在之前错误的想法里越陷越深。反演忘了就想想分块,赛后再补上。造数据的能力还需加强,G应该更早调出来的。
xtx:该学的还是得学,数论分块这么基础的东西我都不会 H 做不出来理所当然。J 没有想到网络流归根结底还是我做类似题型做的太少了。
== 补题 ==
ACEHJ都该补补。
D:化成二进制然后嵌套,类似 2*2*2*(1+2*2*(1+2*...的形式
G:维护栈表示递减数列,维护两棵线段树表示某一段数字出现在递增数列里最早的位置和最晚的位置,每次贪心往栈里放遇到不合法的就弹栈,查询线段树判断比他小的数字是不是出现的比他早,比他大的数字是不是出现的比他晚,合法说明可放入递增数列,更新线段树。然后再判断当前数字能否合法地放入两个数列之一中,遇到不合法直接返回 NO。
H:考虑每个素数 pi 对答案的贡献,记 n=b/pi-(a-1)/pi 为 a 到 b 中被 pi 整除的数的个数,对答案的贡献即为 C(n,2),数论分块可过。
J:离散化时间,构图,源点流向每个时间块的容量为时间块大小乘线程数,每个时间块流向每个包含它的事件的容量为时间块大小,每个事件流向汇点的容量为事件所需时间,最后跑个最大流看是否等于所有事件所需时间之和。
K:发现每次变换相当于倒序,判断 t 奇偶反/正序输出答案
流水账
咸鱼了十天后开始训练,还不是很在状态,比赛时的策略并不得当。卡了三个题。
xtx出门签K。ln出门看D和txt讨论发现可用秦九韶算法做。此时kc开始看E。
之后ln和xtx看H,随便推了一下式子算了一下复杂度感觉暴力可以跑过去?然后就t了……
之后kc推出了E的公式开码,ln在想H,xtx在想G。
kc的E WA on 5了,然而算法似乎并无问题,加入特判后依然WA on 5。
xtx发现G用某种贪心策略做似乎是可行的,和ln讨论感觉这种算法是可以的,于是开码。写完后发现一些情形考虑不周,就加了棵线段树,然后又加了一棵线段树,才过……
ln看了下J感觉排个序就能做,和xtx讨论感觉这样是对的,于是xtx码J,WA on 8。不知错误何在。
ln开始看H发呆,kc在思考E,xtx想J。如此,比赛过去了……
经验教训
ln:后期不能发呆,要调整思路,不能陷在之前错误的想法里越陷越深。反演忘了就想想分块,赛后再补上。造数据的能力还需加强,G应该更早调出来的。
xtx:该学的还是得学,数论分块这么基础的东西我都不会 H 做不出来理所当然。J 没有想到网络流归根结底还是我做类似题型做的太少了。
补题
ACEHJ都该补补。
D:化成二进制然后嵌套,类似 2*2*2*(1+2*2*(1+2*...的形式
G:维护栈表示递减数列,维护两棵线段树表示某一段数字出现在递增数列里最早的位置和最晚的位置,每次贪心往栈里放遇到不合法的就弹栈,查询线段树判断比他小的数字是不是出现的比他早,比他大的数字是不是出现的比他晚,合法说明可放入递增数列,更新线段树。然后再判断当前数字能否合法地放入两个数列之一中,遇到不合法直接返回 NO。
H:考虑每个素数 pi 对答案的贡献,记 n=b/pi-(a-1)/pi 为 a 到 b 中被 pi 整除的数的个数,对答案的贡献即为 C(n,2),数论分块可过。
J:离散化时间,构图,源点流向每个时间块的容量为时间块大小乘线程数,每个时间块流向每个包含它的事件的容量为时间块大小,每个事件流向汇点的容量为事件所需时间,最后跑个最大流看是否等于所有事件所需时间之和。
K:发现每次变换相当于倒序,判断 t 奇偶反/正序输出答案