2022杭电多校4题解报告(同步自语雀)
一、赛后总结
嘤嘤嘤,本人纯萌新,深夜反思自己到底有多菜~(;′⌒`)
前天没写出状压,再前面不会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.
- Tarjan:根据0边对0环进行缩点
- Topsort:根据0边对点进行拓扑排序,顺序记为点权。
- Dijkstra:传统的最短路算法,将排序依据改为(边权*1e5+点权),这样做可以保证同边权0边起始点优先。
呜呜呜,没考虑纯0环对拓扑的影响,萌新好笨啊!
1003 Magic
差分约束,萌新又不会辣!
补辣补辣!之前确实没有正经学过差分约束,学了以后这题就是板子题辣~
注意的是这个题里有ingredients和value两种说法,所以需要注意的是求前面p约束的是value而后面LR约束的是ingredients,所以这里把value通过ingredients约束就可以辣~三个约束条件如下:
- sum[min(n,i+k-1)]-sum[max(0,i-k)]>=pi
- sum[R]-sum[L-1]<=B
- 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就不跳
- 跳一次+2的如果不回跳,跳过的就永远ByeBye辣
- 能跳到(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题解报告(同步自语雀)相关推荐
- 2022杭电多校5题解报告(同步自语雀)
一.赛后总结 Wuhu~萌新又来啦~ 第一次在考场上写出NTT,虽然是比较裸,但感觉真的不错~ 开场看03,思路比较直,就是dijk,但跨层跳跃想了好久~最后想到了类似于B树或者B-树一类的层内链表, ...
- 2022杭电多校第八场题解
2022杭电多校第八场 Theramore(思维) 题意 给定一个01字符串,每次可以将一个奇数长度的区间翻转,求操作后字典序最小的字符串. 分析 翻转奇数长度的区间,元素位置的奇偶性不变,统计奇数位 ...
- 2022杭电多校赛第八场
2022杭电多校赛第八场 文章目录 2022杭电多校赛第八场 1004.Quel'Thalas 1001.Theramore 1011.Stormwind 1008.Orgrimmar 1005.Ir ...
- 2022杭电多校(十)
2022杭电多校(十) 文章目录 2022杭电多校(十) 一.比赛小结 二.题目分析及解法(基础题) 1001.Winner Prediction 1003.Wavy Tree 1004.Averag ...
- 2022杭电多校(二)
2022杭电多校(二) 文章目录 2022杭电多校(二) 一.比赛小结 二.题目分析及解法(基础题) 1001.Static Query on Tree 1002.C++ to Python 1003 ...
- 2022杭电多校(四)
2022杭电多校(四) 文章目录 2022杭电多校(四) 一.比赛小结 二.题目分析及解法(基础题) 1001.Link with Bracket Sequence II 1002.Link with ...
- 2022杭电多校(一)
2022杭电多校(一) 文章目录 2022杭电多校(一) 一.比赛小结 二.题目分析及解法(基础题) 1001.String 1002.Dragon slayer 1003.BackPack 1004 ...
- 2022杭电多校(五)
2022杭电多校(五) 文章目录 2022杭电多校(五) 一.比赛小结 二.题目分析及解法(基础题) 1003.Slipper 1006.BBQ 1007.Count Set 1010.Braggin ...
- 2022杭电多校(三)
2022杭电多校(三) 文章目录 2022杭电多校(三) 一.比赛小结 二.题目分析及解法(基础题) 1001.Equipment Upgrade 1002.Boss Rush 1003.Cyber ...
最新文章
- RxJava 过滤操作符 distinct 和 distinctUntilChanged
- linux 内核申请内存大小,linux内核常用的内存申请函数
- python web服务器学习笔记(五) 并发尝试之popen原理探究
- 离线数据处理与流数据处理的区别
- ipsec***原理与配置
- jmeter web服务器协议,【JMeter4.0学习(三)】之SoapUI创建WebService接口模拟服务端以及JMeter测试SOAP协议性能测试脚本开发(示例代码)...
- 写好项目文档有多重要?关于我被百大 UP 主选中又放鸽子这档事
- 通用汽车再次提高自动驾驶与电动汽车投资 增至350亿美元
- 目标检测——NMS算法的学习笔记~
- 洛谷——P1024 [NOIP2001 提高组] 一元三次方程求解
- python表示倍数的英语句型_英语中“倍数表达法”和“长、宽、高句型”
- Redis——SDS
- 知识星球,贡献C版本,OpenSSL,GMSSL,JS版本相关国密
- C++程序设计的技巧-Pimple的使用
- 如何用python打印一段文字,如何在PYTHON中正确打印阿拉伯文字
- 机器学习面试题总结(转)
- 清华NLP组论文清单:全方位覆盖自然语言处理12大领域
- 【Redis技术探索】「底层架构原理」帮你从底层彻底吃透AOF技术原理(入门第二步)
- AI测试】人工智能测试整体介绍——第五部分
- web实例之电子日历
热门文章
- 后疫情时代,藏在同程艺龙财报里的“增长密码”
- 未来5年中国定调,十四五规划硬核指出云计算列为经济发展战略产业!
- 【财经期刊FM-Radio|2021年01月19日】
- oracle ORA-12528: TNS: 监听程序: 所有适用例程都无法建立新连接
- 狂赚310亿美元!安卓系统的钱究竟是怎么来的
- shellcode教程从新手到高手
- ARP防御篇-如何揪出“内鬼”并“优雅的还手”
- dumpsys meminfo分析
- scrapy+selenium爬取五个外国新闻网站关于“中国“的新闻,并分析
- object-UI之基础动画