2022杭电多校5题解报告(同步自语雀)

一、赛后总结

Wuhu~萌新又来啦~

第一次在考场上写出NTT,虽然是比较裸,但感觉真的不错~

开场看03,思路比较直,就是dijk,但跨层跳跃想了好久~最后想到了类似于B树或者B-树一类的层内链表,连上后就能解决。因为dijk枚举到的每个点都是最短距离,所以对应层第一个枚举到的节点就是到这个层的最近距离点。

然后卡了2个小时左右的06,式子推出来了,又手搓了好多样例,但最后交就WA了。。。其间队友告诉我07有卷积形式,所以大概3点多一些的时候开始看07,发现卷积形式是很多的小多项式相乘。但毕竟多项式题做的不多,就尝试的写了一发排序后从小到大合并多项式,不出意外的T了。然后又想了一会,想到了类似于哈夫曼编码的每次找最小两个合并,但这样就要存储所有出现多项式的每一项。所以就用了Vector动态数组存储(平常真的不太用Vector,这里想的好慢)。改了这里后就顺利通过辣~

回身看06,测了很多样例又小黄鸭调试法看了好多遍,始终认为没问题。。。直到最后10min重读了一遍题: Now you can modify, add or delete 。瞬间呆住了,我以为now you can modify是一句套话(啊~现在你可以修改辣~。。。。。哭成傻子了呜呜呜呜呜啊啊啊啊),操作是增或删,实际上操作是改、增、删。。。最后稍微改了一下,当然也不出意外的没有改出来。考后来看的话,前面思维定式非常糟糕,导致考后也需要很长时间才想到abcd和abc这种改2次的字符串。当然想出来就通过啦~所以还是要好好读题(悲

最后谈一下没做出来的几个题:

  1. 02好像是min25?感觉现在NTT是低档知识点,min25也只是中档知识点了呜呜,但没办法还是要学
  2. 05DancingLink,输麻了。06真的是罪恶之源
  3. 08SAM+LCT,好久不见Link-Cut-Tree辣,但萌新真的字符串知识一塌糊涂。。。
  4. 09折半搜索,我超怎么感觉知识点真的可做。。。但也有可能萌新的数理基础推不出状态呜呜呜
  5. 11六面体旋转群?不懂,好像也比较难补了。。。

UDP1:补了04,呜呜呜,1e-10的误差写成了-1e10,调试+30min...两个不合法条件预处理是复制粘贴的,但发现错误后只改了一边,后面在找这个错误时又发现了竖直水平线多点共线可能的bug,调试+1.5h...总结起来是代码习惯不好,没有彻底想清楚细分情况就开敲,不出意外就会有错啊啊啊啊~

UDP2: 补了01,珂学家不可以不会珂朵莉树!

(by Star_Dream)

二、题解报告

1001 Pandaemonium Asphodelos: The First Circle (Savage)

题目没什么好说的,会珂朵莉树就会发现它是板子加动态开点线段树。

From 珂学家:

如果幸福有颜色,那一定是被终末之红浸染的蓝色!

世界で一番幸せな女の子

Always in my heart

1002 Jo loves counting

Min25筛、积性函数...还一点没学呢呜呜~后面争取补一下

1003 Slipper

比普通dijk多一个类似于B树B-树的层内建边的操作,建好边就是最短路板子题。

1004 The Surveying

状压,很快会补的~

补辣补辣~这个状压不是DP哦,之前理解有点问题~

后面状压枚举状态,即每个控制点选与不选,做check就行。

两个check条件,一是所有Detail Point都至少与一个选中的Control Point不跨越相交,二是所有Control Point都至少与另外一个选中的Check Point不跨越相交。显然直接在状压枚举里从头check不可取,所以考虑预处理。发现不跨越相交与否是01形式,考虑bitset优化存储条件一状态,条件二因为n比较小直接存int就好。这个题比较麻烦的是跨越相交的判定,即两个点连线经过某个矩形的边或顶点。需要一点耐心,注意多点共竖直或水平线的特殊情况即可。

1006 BBQ

大分类讨论,这里dp[i]表示到i为止即[1,i]通过改、增、删能形成合法序列的最少步数。

分类先区分是否出现最后形成的长度为4序列是否用到原序列中的两个相同字母。

不用时转移比较简单:dp[i]=min(dp[i-1]+1,min(dp[i-3],dp[i-4])+2)

再考虑用,又分为是否是与i这个位置的字母相同,不相同形式如b_b_a(下面都用下划线_代表任意序列),考虑是否使用上个a,又分为xb_b_a和a_b_b_a,前者比后者多一个修改的操作。

相同形式如a_a_a_a、a_a_a、a_a,对于a_a_a_a直接删中间字母即可,a_a_a与a_a修改中间或两侧字符或增加两侧字符即可。

但需要注意上面每个情况是都要考虑的即if...if关系而非if...else if关系。

1007 Count Set

排列性质注定成环,题意转化为每个环中取一些不相邻的点,问取k个的方案。

长为n的环取k个点的方案数为C(n-k,k)*n/(n-k)(这里k+k<=n,否则方案为0)。证明可以先考虑链形式,从n个点取k个可以视为从n-k+1中任意取k个,再用剩下k-1个插空。即C(n-k+1,k)。对应环形式,可以通过选1与否断环成链,之后就与链状相同辣~

最后对应答案计数,可以发现总共的环可以比较多,但点数不大,因此想到类似于哈夫曼编码的合并方式,套NTT解决即可~

1010 Bragging Dice

签到到,不看了叭~

1012 Buy Figurines

签到到,不看了叭~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hiroxzwang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值