2020-team0x06-C02

从 Trac 迁移的文章

这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。

原文章内容如下:

[/wiki/2020-team0x06 返回]

[[Image(Standings.png, 1000px)]][[BR]][[Image(Submissions.png, 600px)]]

== Statistics ==

 * TYPE: Contest
 * NAME: 2020 - CCPC - Mianyang
 * PLAT: Oms-pintia
 * MODE: Online
 * TIME: 2020.11.01 09:00-14:00
 * TEAM: Refrain[ntwbvdbl_oe, Orange_User, functionendless]
 * RANK: 8/268(Au)
 * SOLVE: 7/12(1157)
   * B-04:12(-1)
   * D-00:12
   * G-01:22(-2)
   * H-03:58(-1)
   * J-01:22(-1)
   * K-01:45(-1)
   * L-03:06(-4)
 * ATTEMPTING
   * C

== Comp ==

 * 一本没有打开过的Claris板子
 * 一个中场掉线黑屏但是没有发现的后置摄像头
 * 三位发挥稳定的参赛选手

== Day1 ==

fx一上来就找到签到题D并喂给czyh,由于忘调语言CE了一发,'''D1Y12'''。暂时没有可做题,czyh上机对着G大力打表,lmh和fx讨论了一会K,剩一种hard情况不好解决,先放着。fx给lmh讲了J的题意,lmh胡了个大力分块做法,fx觉得太暴力太复杂并表示听不懂。lmh给fx讲了讲E的'''假题意''',两人推了一半发现不会做,决定先看其他题。

czyh在机上推了两个结论,但是都WA了,lmh觉得J可写,换czyh下来。czyh和fx讨论了一会G,然后fx去想L了。lmh写完获得RE,czyh上机,换了个打表姿势并成功找到规律,'''G2Y82'''。fx给lmh讲了讲L的做法,lmh觉得没啥问题。lmh觉得除了数组开小以外没什么修改余地了,抱着TLE让自己死心的想法试了一发,'''J2Y82''',(1.8s/2s卡过,本机6s)。fx上机写L,czyh从lmh手上接过想了一半的K,两人一致觉得这种情况下答案不会很大,于是czyh上机打表验证了结论,写了个小范围暴力,提交WA了,lmh过来一眼看出'''czyh输出又没换行''','''K2Y105'''。

fx20分钟写完L,莽了一发WA。lmh重新捡起E,想了很久还是不会,又和czyh讨论了H,czyh觉得是分类讨论,lmh想了想也没有其他做法,然后lmh开始自闭。期间fx一直在机上写写调调,但是一直在WA,经历了对拍和多次调错以及部分重构才艰难地过了,'''L5Y186'''。czyh开出B上机写,fx独立把B秒了并感叹就不应该上机写题,并帮czyh核对方程,核对边界,提交WA。lmh写了两页纸的分类讨论,上机敲了七八个if,获得WA,打印代码发现少加了一个cornercase,'''H2Y238''',czyh对着lmh小黄鸭调试,fx造了一组数据卡掉了czyh的代码,czyh改完'''B2Y252'''。

三人看了看榜,觉得稳Au了,但不想挂机争取再开一题。lmh捡起E继续想继续不会,又想了想C,fx和czyh想了想I不会,直到fx遇到C并秒了,czyh上机写,可惜没写完。[[BR]]

赛后,lmh看了看题解[[BR]]
lmh: 我E题题意假了。。。[[BR]]
fx:我就不应该上机写题。

== Conclusion ==

=== ntwbvdbl_oe ===

 * 正如cjb所说,很多题不同做法和写法在过题效率上差别巨大,这个L题我们由于写的不好花了1h+调试,但最快的队伍17min就能秒掉。这个H题机下推了非常非常久,占用机时只有10min,如果适当打表找规律能省去很多不必要的推导时间。
 * 对于一道题,想出来和写出来是有差距的,对于代码能力不强的我们,一定要想好实现细节后再上机,切忌盲目防止空机。空机时用来打表,写对拍,提前写check都是不错的选择,同样在机时紧张的情况下可以一人写代码,一人在旁边盯着。这场比赛后面的题细节都不少,这个C题实际上再给10min也不能写对,因为当时我们的做法还有很多细节没考虑到。
 * 读题真的真的很重要,每道题要有两个人不交流的情况下独立读完题,否则赛后发现读错题是非常难受的,E题读错了,C题读晚了,如果前面省出时间是有机会过的

=== Orange_User ===

 * 打表真好玩
 * 多组数据真恶心
 * 奇怪的特判真麻烦

=== functionendless ===

 * 一个想题型选手在机上那么长时间我也是醉了.
 * 比上次比赛还是好那么一点的,和队友的讨论比较到位

== Solutions ==

A: 

B: 考虑一个块影响两个下标的位置,记录是否达成高度并进行DP,转移相对复杂,注意首位的特判

C: 定义trA为未知trie,trB为输入构建的trie,trB中一个子树的值如果全部相同则只保留子树的根。trB中u点的孩子有一次讲权值缩到u的机会,条件是u无权值,注意多孩子重复权值则必选,若有多个被重复权值则无解。构造完之后遍历一遍查看是否有重复权值即可

D: 签到

E: 

F:

G: 发现0号卡对操作次数的贡献为其数量-((其他卡的数量)==0),对答案的贡献可用0/1表示,然后3号卡对答案无贡献,1,2号卡对答案的贡献打表可知有规律,但最终答案不能把两者直接相加,需要对1号卡、2号卡、0号卡的数量打表再找一边规律。

H: 大力分类讨论,注意0的情况

I:

J: 垃圾做法:大力分块,ti大于block的,周期数小于n/block,直接在线段树上做,ti小于block的数量不多,在枚举m时暴力枚举n/block个周期,总复杂度O(n\sqrt{nlogn})
 正解:不同的周期数是nlogn级别的(调和级数),并查集区间染色

K: n&1 -> 1    ;   n=4k -> 2  ; n=4k+2 : 在n/3除小范围暴力

L: 进位,使每一位只剩下0/1/2个选择,结合二进制位的性质DP即可,注意离散化技巧

[/wiki/2020-team0x06 返回]


Statistics

  • TYPE: Contest
  • NAME: 2020 - CCPC - Mianyang
  • PLAT: Oms-pintia
  • MODE: Online
  • TIME: 2020.11.01 09:00-14:00
  • TEAM: Refrain[ntwbvdbl_oe, Orange_User, functionendless]
  • RANK: 8/268(Au)
  • SOLVE: 7/12(1157)
    • B-04:12(-1)
    • D-00:12
    • G-01:22(-2)
    • H-03:58(-1)
    • J-01:22(-1)
    • K-01:45(-1)
    • L-03:06(-4)
  • ATTEMPTING
    • C

Comp

  • 一本没有打开过的Claris板子
  • 一个中场掉线黑屏但是没有发现的后置摄像头
  • 三位发挥稳定的参赛选手

Day1

fx一上来就找到签到题D并喂给czyh,由于忘调语言CE了一发,D1Y12。暂时没有可做题,czyh上机对着G大力打表,lmh和fx讨论了一会K,剩一种hard情况不好解决,先放着。fx给lmh讲了J的题意,lmh胡了个大力分块做法,fx觉得太暴力太复杂并表示听不懂。lmh给fx讲了讲E的假题意,两人推了一半发现不会做,决定先看其他题。

czyh在机上推了两个结论,但是都WA了,lmh觉得J可写,换czyh下来。czyh和fx讨论了一会G,然后fx去想L了。lmh写完获得RE,czyh上机,换了个打表姿势并成功找到规律,G2Y82。fx给lmh讲了讲L的做法,lmh觉得没啥问题。lmh觉得除了数组开小以外没什么修改余地了,抱着TLE让自己死心的想法试了一发,J2Y82,(1.8s/2s卡过,本机6s)。fx上机写L,czyh从lmh手上接过想了一半的K,两人一致觉得这种情况下答案不会很大,于是czyh上机打表验证了结论,写了个小范围暴力,提交WA了,lmh过来一眼看出czyh输出又没换行K2Y105

fx20分钟写完L,莽了一发WA。lmh重新捡起E,想了很久还是不会,又和czyh讨论了H,czyh觉得是分类讨论,lmh想了想也没有其他做法,然后lmh开始自闭。期间fx一直在机上写写调调,但是一直在WA,经历了对拍和多次调错以及部分重构才艰难地过了,L5Y186。czyh开出B上机写,fx独立把B秒了并感叹就不应该上机写题,并帮czyh核对方程,核对边界,提交WA。lmh写了两页纸的分类讨论,上机敲了七八个if,获得WA,打印代码发现少加了一个cornercase,H2Y238,czyh对着lmh小黄鸭调试,fx造了一组数据卡掉了czyh的代码,czyh改完B2Y252

三人看了看榜,觉得稳Au了,但不想挂机争取再开一题。lmh捡起E继续想继续不会,又想了想C,fx和czyh想了想I不会,直到fx遇到C并秒了,czyh上机写,可惜没写完。

赛后,lmh看了看题解

lmh: 我E题题意假了。。。

fx:我就不应该上机写题。

Conclusion

ntwbvdbl_oe

  • 正如cjb所说,很多题不同做法和写法在过题效率上差别巨大,这个L题我们由于写的不好花了1h+调试,但最快的队伍17min就能秒掉。这个H题机下推了非常非常久,占用机时只有10min,如果适当打表找规律能省去很多不必要的推导时间。
  • 对于一道题,想出来和写出来是有差距的,对于代码能力不强的我们,一定要想好实现细节后再上机,切忌盲目防止空机。空机时用来打表,写对拍,提前写check都是不错的选择,同样在机时紧张的情况下可以一人写代码,一人在旁边盯着。这场比赛后面的题细节都不少,这个C题实际上再给10min也不能写对,因为当时我们的做法还有很多细节没考虑到。
  • 读题真的真的很重要,每道题要有两个人不交流的情况下独立读完题,否则赛后发现读错题是非常难受的,E题读错了,C题读晚了,如果前面省出时间是有机会过的

Orange_User

  • 打表真好玩
  • 多组数据真恶心
  • 奇怪的特判真麻烦

functionendless

  • 一个想题型选手在机上那么长时间我也是醉了.
  • 比上次比赛还是好那么一点的,和队友的讨论比较到位

Solutions

A:

B: 考虑一个块影响两个下标的位置,记录是否达成高度并进行DP,转移相对复杂,注意首位的特判

C: 定义trA为未知trie,trB为输入构建的trie,trB中一个子树的值如果全部相同则只保留子树的根。trB中u点的孩子有一次讲权值缩到u的机会,条件是u无权值,注意多孩子重复权值则必选,若有多个被重复权值则无解。构造完之后遍历一遍查看是否有重复权值即可

D: 签到

E:

F:

G: 发现0号卡对操作次数的贡献为其数量-((其他卡的数量)==0),对答案的贡献可用0/1表示,然后3号卡对答案无贡献,1,2号卡对答案的贡献打表可知有规律,但最终答案不能把两者直接相加,需要对1号卡、2号卡、0号卡的数量打表再找一边规律。

H: 大力分类讨论,注意0的情况

I:

J: 垃圾做法:大力分块,ti大于block的,周期数小于n/block,直接在线段树上做,ti小于block的数量不多,在枚举m时暴力枚举n/block个周期,总复杂度O(n\sqrt{nlogn})

正解:不同的周期数是nlogn级别的(调和级数),并查集区间染色

K: n&1 -> 1 ; n=4k -> 2 ; n=4k+2 : 在n/3除小范围暴力

L: 进位,使每一位只剩下0/1/2个选择,结合二进制位的性质DP即可,注意离散化技巧

附加文件