一、赛后总结

嘤嘤嘤,本人纯萌新,深夜反思自己到底有多菜~(;′⌒`)

前天没写出状压,再前面不会SAM和圆方树,再往前不会NTT和FFT,真的是个啥也不会的萌新呢。

这场主要的问题在于02的0环和11的线性基。

02基本思路比较清晰,topsort+dijkstra,而且考场中考虑了0边的问题,边权在处理中乘1e5并添加topsort的0边点权作为dijkstra排序依据,这里topsort的点权用以保证0边的起始点在与终止点距离(到1点)相等时优先枚举起始点。本以为0环在保证答案Phi有穷时不会对结果产生影响(毕竟非纯0环不在答案路径即1->n路径上),但为什么没考虑到纯0环(sum_e=0,sum_p=0)呢?萌新属实考虑不周全啦,没有考虑到这个对答案的影响呢!这个纯0环的存在可能会导致通过0环的一些点没有被topsort枚举。所以呢?通过萌新学过的tarjan算法提前缩一下0边环点就好辣~整体思路顺序:tarjan->topsort->dijkstra。

11的线性基萌新不会辣!幸好中途看了一小时就放弃啦,萌新怎么会学过线性基呢?事实上萌新连构造最大异或和的形式都没有成功呢!呜呜呜这一个小时一直在想存在x不等于y使a_x=a_y怎么用,也没有想通。赛后队友还在说可以取l=r使a_l=a_l^a_l=0。呜呜呜这不是看错题了,这是在造萌新不敢想的题叭。。。不过确实有一些过于依赖a_x=a_y性质导致想偏了方向,应该先手玩构造形式的说呢。不过构造出来也不会线性基辣,所以萌新真的好菜呢!(半夜学了一下,是一个有趣的算法呢!萌新愉悦o(* ̄▽ ̄*)ブ

02和11是好题呢,恰好体现了萌新的本质,把萌新与大佬们区分开来!真棒!

考场上萌新写出了01和07,都是出题人良心送给萌新的简单题!出题人真的。。。我哭哭

04和06两个签到是队友做的

UPD1: 补了03的差分约束,啊啊啊是真的板啊,萌新看呆了,感觉只要会差分约束就可以做出来呜呜呜~

UDP2: 补了05的不删除栈黑科技,确实妙,感觉本质是提前计算,但每个位置至多在左右计算两遍的算法性质很精妙~

(by Star_Dream)

二、题解报告

1001 Link with Bracket Sequence II

嘤嘤嘤,有点(~ ̄(OO) ̄)ブ的区间DP,dp[i][j]表示[i,j]的合法匹配数,转移枚举与i匹配的位置mid,i<mid<=j,转移式为dp[i][j]=sum{dp[i+1][mid-1]*dp[mid][j]*(匹配数)},记得边界特殊处理和取模就好啦。

题目特别友好,萌新也能做!

1002 Link with Running

嘤嘤嘤,有点/(ㄒoㄒ)/~~的图论题。思路:tarjan+topsort+dijkstra.

  1. Tarjan:根据0边对0环进行缩点
  2. Topsort:根据0边对点进行拓扑排序,顺序记为点权。
  3. Dijkstra:传统的最短路算法,将排序依据改为(边权*1e5+点权),这样做可以保证同边权0边起始点优先。

呜呜呜,没考虑纯0环对拓扑的影响,萌新好笨啊!

1003 Magic

差分约束,萌新又不会辣!

补辣补辣!之前确实没有正经学过差分约束,学了以后这题就是板子题辣~

注意的是这个题里有ingredients和value两种说法,所以需要注意的是求前面p约束的是value而后面LR约束的是ingredients,所以这里把value通过ingredients约束就可以辣~三个约束条件如下:

  1. sum[min(n,i+k-1)]-sum[max(0,i-k)]>=pi
  2. sum[R]-sum[L-1]<=B
  3. sum[i]-sum[i-1]>=0

最后如果有解sum[n]-sum[0]就是答案辣~

还是谈一下学差分约束的想法:差分约束好像是oi时期挺偏的知识点(雾)。。。但是学一下发现就是转化为图论知识点,约束Ci-Cj<=A相当于Ci<=Cj+A,这样就是j到i连一条边长为A的边,跑最短路就能符合条件辣~这里显然会有负边(不然全0就符合约束辣),所以不能跑dijk哦。关于SPFA,它死了。所以不如直接跑简单好写的bellman-ford算法呢~

1004 Link with Equilateral Triangle

签到到,萌新不想做辣!

1005 Link with Level Editor II

矩阵雾,萌新的线代忘干净辣!

补辣补辣~好像这是我上大学后第一次正儿八经用矩阵知识解题(雾

具体操作比较简单,m*m转移矩阵存储转移状态,也就是a[i][j]存当前区间对应世界从i到j的方案数。可以将状态视为1*m的矩阵即到每个Node的方案数。显然最初状态矩阵只有1有1个方案(起始点),其余Node方案为0。所以对应矩乘结果的(状态*a)[1][m]表示获胜方案数。这个就是合法与否的条件辣~

要求是连续区间,所以顺序向后枚举右边界就可以辣~不合法时右移左边界,但由于矩阵不一定可逆,移动左边界这一相当于删除的操作不可进行。所以规避操作,用不删除栈黑科技即可解决~

不删除栈黑科技:区间为l,r,另有参数mid,[l,mid]以后缀形式存储(即本题的变换矩阵矩乘后缀),(mid,r]统一存储到一个矩阵之中,所以总的变换矩阵为(后缀矩阵[l,mid]*统一矩阵(mid,r])。l<mid时正常右移左边界,但l=mid时右移左边界操作为l=r+1,mid=r,这时再左移左边界l重新计算后缀矩阵。这样左移左边界l会保持l>lastmid(因为之前右移l的原因是mid不合法辣~),所以每个点对应转移矩阵只会参与矩乘2次。所以这个方法的移动操作是O(n)的,再加上内部操作,总复杂度就是O(n*内操作复杂度)。如这题的矩乘,总复杂度为O(nm^3)。

最后还是谈一下学这个黑科技的感想:确实很有趣的一个知识点,有效的避免了删除操作可能带来的麻烦甚至是不可执行。内部思想关键是后缀提前计算删除的结果,但分左右两边的操作又保证了内部每个点至多参与2次运算,所以是O(N)的移动指针,很巧妙~

1006 BIT Subway

签到到,萌新不想做辣!

1007 Climb Stairs

嘤嘤嘤,贪心题!萌新发现有下面几个性质:

  1. 能+1就不跳
  2. 跳一次+2的如果不回跳,跳过的就永远ByeBye辣
  3. 能跳到(i)就不跳到(i+1),即找第一个能跳的

是萌新也能做的简单题呢(๑•̀ㅂ•́)و✧

1011 Link is as bear

线性基,萌新深夜加班刚刚学废辣o(* ̄▽ ̄*)ブ

其实发现在有x!=y且a_x=a_y的条件下,必然有两个相邻的元素要么同时取,要么不同时取(换句话说,如果原来是间隔取数组元素,那么对于x和y,如果要异或a_x,那么不要异或a_x改为异或a_y;如果不要异或a_x,根据间隔情况选择同时不要异或a_y或者异或a_x和a_y)。

好辣!既然有两个相邻的元素同时取或不取,操作一下就发现可以为所欲为辣。因为同时取除非全取,在非全取时可以构造出两个连续不取的位置,两个连续不取就可以任意取与不取元素辣。所以,最后转化的题意是任意取元素使其异或和最大!

这时候就可拿出萌新刚学的线性基辣!板子一套,做完辣!

最后谈一下萌新学线性基的感悟:感觉这个算法有点类似于做一套向量的基底,这里就相当于是原数列的异或基底,它满足基底的基本性质,即最小和可表示所有原数列元素。求最大异或和也非常方便,基于二进制性质,从大到小枚举线性基每一位,当前答案缺则添不缺则continue就好辣。

2022杭电多校4题解报告(同步自语雀)相关推荐

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

    一.赛后总结 Wuhu~萌新又来啦~ 第一次在考场上写出NTT,虽然是比较裸,但感觉真的不错~ 开场看03,思路比较直,就是dijk,但跨层跳跃想了好久~最后想到了类似于B树或者B-树一类的层内链表, ...

  2. 2022杭电多校第八场题解

    2022杭电多校第八场 Theramore(思维) 题意 给定一个01字符串,每次可以将一个奇数长度的区间翻转,求操作后字典序最小的字符串. 分析 翻转奇数长度的区间,元素位置的奇偶性不变,统计奇数位 ...

  3. 2022杭电多校赛第八场

    2022杭电多校赛第八场 文章目录 2022杭电多校赛第八场 1004.Quel'Thalas 1001.Theramore 1011.Stormwind 1008.Orgrimmar 1005.Ir ...

  4. 2022杭电多校(十)

    2022杭电多校(十) 文章目录 2022杭电多校(十) 一.比赛小结 二.题目分析及解法(基础题) 1001.Winner Prediction 1003.Wavy Tree 1004.Averag ...

  5. 2022杭电多校(二)

    2022杭电多校(二) 文章目录 2022杭电多校(二) 一.比赛小结 二.题目分析及解法(基础题) 1001.Static Query on Tree 1002.C++ to Python 1003 ...

  6. 2022杭电多校(四)

    2022杭电多校(四) 文章目录 2022杭电多校(四) 一.比赛小结 二.题目分析及解法(基础题) 1001.Link with Bracket Sequence II 1002.Link with ...

  7. 2022杭电多校(一)

    2022杭电多校(一) 文章目录 2022杭电多校(一) 一.比赛小结 二.题目分析及解法(基础题) 1001.String 1002.Dragon slayer 1003.BackPack 1004 ...

  8. 2022杭电多校(五)

    2022杭电多校(五) 文章目录 2022杭电多校(五) 一.比赛小结 二.题目分析及解法(基础题) 1003.Slipper 1006.BBQ 1007.Count Set 1010.Braggin ...

  9. 2022杭电多校(三)

    2022杭电多校(三) 文章目录 2022杭电多校(三) 一.比赛小结 二.题目分析及解法(基础题) 1001.Equipment Upgrade 1002.Boss Rush 1003.Cyber ...

最新文章

  1. RxJava 过滤操作符 distinct 和 distinctUntilChanged
  2. linux 内核申请内存大小,linux内核常用的内存申请函数
  3. python web服务器学习笔记(五) 并发尝试之popen原理探究
  4. 离线数据处理与流数据处理的区别
  5. ipsec***原理与配置
  6. jmeter web服务器协议,【JMeter4.0学习(三)】之SoapUI创建WebService接口模拟服务端以及JMeter测试SOAP协议性能测试脚本开发(示例代码)...
  7. 写好项目文档有多重要?关于我被百大 UP 主选中又放鸽子这档事
  8. 通用汽车再次提高自动驾驶与电动汽车投资 增至350亿美元
  9. 目标检测——NMS算法的学习笔记~
  10. 洛谷——P1024 [NOIP2001 提高组] 一元三次方程求解
  11. python表示倍数的英语句型_英语中“倍数表达法”和“长、宽、高句型”
  12. Redis——SDS
  13. 知识星球,贡献C版本,OpenSSL,GMSSL,JS版本相关国密
  14. C++程序设计的技巧-Pimple的使用
  15. 如何用python打印一段文字,如何在PYTHON中正确打印阿拉伯文字
  16. 机器学习面试题总结(转)
  17. 清华NLP组论文清单:全方位覆盖自然语言处理12大领域
  18. 【Redis技术探索】「底层架构原理」帮你从底层彻底吃透AOF技术原理(入门第二步)
  19. AI测试】人工智能测试整体介绍——第五部分
  20. web实例之电子日历

热门文章

  1. 后疫情时代,藏在同程艺龙财报里的“增长密码”
  2. 未来5年中国定调,十四五规划硬核指出云计算列为经济发展战略产业!
  3. 【财经期刊FM-Radio|2021年01月19日】
  4. oracle ORA-12528: TNS: 监听程序: 所有适用例程都无法建立新连接
  5. 狂赚310亿美元!安卓系统的钱究竟是怎么来的
  6. shellcode教程从新手到高手
  7. ARP防御篇-如何揪出“内鬼”并“优雅的还手”
  8. dumpsys meminfo分析
  9. scrapy+selenium爬取五个外国新闻网站关于“中国“的新闻,并分析
  10. object-UI之基础动画