2021-team02-003
从 Trac 迁移的文章
这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。
原文章内容如下:
[/wiki/2021-team02 返回]
[[Image(Rank.png,1000px)]]
= 概述 =
solved: 9/11
rank: ??
= 流水账 =
开场pb,cxt,cy分别签E,I,C,各WA了一发,然后pb和cxt都过了,cy的C一直过不去,后来cxt重写了一遍过去了。
三个人分别开了一会题,剩下BDK。cy和cxt讨论D之后cy上机写D,cxt准备写K,pb在开B,并由于三手题面想了一会假题意。
最后一小时cxt上机写K,pb和cy想B,最后都没有过。(赛后30分钟cy过了B)
= 总结 =
=== pb: ===
最后太困了睡着了,谢罪,如果不睡着和cy讨论一下B可能效果好一点
=== Creatix: ===
自闭了,最后这个 K 我觉得我真的需要大量时间才能给出一个有证明的做法,还要大量时间才能实现出来。熟练度不够。
不过可喜可贺最后我终于给出了一个(自认为)完整的证明。
=== Eden_CY: ===
这场太演了,开场卡C卡了太久,A和D也挂了好几发,贡献大量罚时,如果后期多一点时间B是可以过的。
= 题解 =
* A:把每个人的不同分数的区间取出来,按权值从大到小丢到线段树,同时查询人数。
* B:dp的方法:f[i][j]表示i的子树平衡深度为j最少选多少点,按1到n检查能不能加入,加入时更新到根路径的f值。
* C:从左到右放,优先放在右端点,如果下一段满了就移回去。
* D:发现v可以去掉,f[i][j]表示到i经过j条边的最短路,用直线y=x*i+f[n][i]建上凸壳,只有在凸壳上的线对应的经过边数是有用的,再倒回去标记哪些点能到达。
* E:
* F:
* G:
* H:
* I:
* J:
* K:真的有一点点难搞……首先,一定存在一种最有解,使得如果一次跳跃选择了不到d,那么这次一定是卡在右端点。然后,把所有跳跃尽可能往左移。于是,对于这种最优解,我们记所有岛屿的右端点为关键点,容易发现两个关键点之间的转移一定是跳若干个d(可能0步 & 如果某次跳到了岛上,这次视为跳到岛的左端点),然后走一段,然后跳一个d到某个关键点。dp即可。
[/wiki/2021-team02 返回]

概述
solved: 9/11
rank: ??
流水账
开场pb,cxt,cy分别签E,I,C,各WA了一发,然后pb和cxt都过了,cy的C一直过不去,后来cxt重写了一遍过去了。
三个人分别开了一会题,剩下BDK。cy和cxt讨论D之后cy上机写D,cxt准备写K,pb在开B,并由于三手题面想了一会假题意。
最后一小时cxt上机写K,pb和cy想B,最后都没有过。(赛后30分钟cy过了B)
总结
pb:
最后太困了睡着了,谢罪,如果不睡着和cy讨论一下B可能效果好一点
Creatix:
自闭了,最后这个 K 我觉得我真的需要大量时间才能给出一个有证明的做法,还要大量时间才能实现出来。熟练度不够。
不过可喜可贺最后我终于给出了一个(自认为)完整的证明。
Eden_CY:
这场太演了,开场卡C卡了太久,A和D也挂了好几发,贡献大量罚时,如果后期多一点时间B是可以过的。
题解
- A:把每个人的不同分数的区间取出来,按权值从大到小丢到线段树,同时查询人数。
- B:dp的方法:f[i][j]表示i的子树平衡深度为j最少选多少点,按1到n检查能不能加入,加入时更新到根路径的f值。
- C:从左到右放,优先放在右端点,如果下一段满了就移回去。
- D:发现v可以去掉,f[i][j]表示到i经过j条边的最短路,用直线y=x*i+f[n][i]建上凸壳,只有在凸壳上的线对应的经过边数是有用的,再倒回去标记哪些点能到达。
- E:
- F:
- G:
- H:
- I:
- J:
- K:真的有一点点难搞……首先,一定存在一种最有解,使得如果一次跳跃选择了不到d,那么这次一定是卡在右端点。然后,把所有跳跃尽可能往左移。于是,对于这种最优解,我们记所有岛屿的右端点为关键点,容易发现两个关键点之间的转移一定是跳若干个d(可能0步 & 如果某次跳到了岛上,这次视为跳到岛的左端点),然后走一段,然后跳一个d到某个关键点。dp即可。
附加文件
- Rank.png by Eden_CY