首页 > 其他分享 >Solution - NOI 2022

Solution - NOI 2022

时间:2022-08-26 20:24:00浏览次数:111  
标签:子树 2022 线段 Solution 链表 哈希 序列 NOI

游记

目前只有两个题题解(代码没有),啥时候数据出了我再来补剩下的。

众数

Solution

有个题叫「POI2014」Couriers,这个题启示我们实际上问题等价于询问哪个数出现次数最多,最后只需要判断是否超过一半即可。

考虑线段树,对于一个序列,开一棵线段树维护上面的权值,单个序列的查询可以在线段树上面走,选择大的那一边走下去,最后的就是答案,多个序列可以考虑 \(m\) 个线段树一起走,同样选择大的一边,注意到 \(\sum m\le 5\times 10^5\),所以这样做复杂度是对的。

查询解决了,接下来考虑修改,修改在线段树上的影响不过是单点改和合并,这些都是简单的,但是注意到我们要维护每个序列的末尾,以及合并两个序列,可以使用启发式合并做到 \(O(n\log n)\)。

更优的想法是,可以使用链表的形式来维护,因为我们只需要知道末尾元素,而合并操作可以直接把一个链表的尾部元素的 next 指针指向另一个链表的开头元素,从而做到线性。

总时间复杂度线性对数,但是据说有高论可以做到线性,我还不会。

赛时我实现了这个做法,但是因为不明原因的链表写挂,所以只有 \(75\) 分。

挑战 NPC II

Solution

提示里面写的很好,本题需要使用树哈希,考虑到树哈希的本质是将一个子树映射成一个数值,也就是可以方便地判断两个子树是否相等,由此我们考虑一个构造过程:

首先使用树哈希求出两棵树(下文分记为 \(T_1,T_2\))每一棵子树的哈希值,考虑如何匹配两棵树的子树,一个显然的事情是,我们希望被匹配的两棵子树得是同构的,那么我们先将这些同构的找出,剩下的子树存起来。

注意到 \(T_1\) 剩余的子树个数一定需要大于等于 \(T_2\) 剩余的子树个数,同时 \(T_1\) 剩余的子树个数必须且必定 \(\le k\),否则无解。

考虑将 \(T_1\) 与 \(T_2\) 剩余的子树进行匹配并重复递归执行上述过程,我们希望求出某一个匹配,其中删点数量恰为某一个值,但是实际上我们并不能快速计算这个东西,所以只能暴力枚举 \(k!\) 种匹配递归。

由此,我们得到了一个 \(O(n\log n+k!n)\) 的算法,可以通过。

笔者没有学过树哈希,所以考场上编造了一个树哈希算法,其表现不错,可以拿到 \(92\) 分,这里就不说了,下面是几个可能可以通过的树哈希算法(笔者也没有具体实现):

  • 钦定一个 \(B\),满足 \(B>>h_i\),在求 \(h_u\) 的过程中排序儿子的 \(h\),从小到大执行一个类似字符串哈希的过程,即求出 \(\sum h_v\times B^i\),然后加上 \(u\) 的信息。
  • 将树转成括号序列后,对于括号序列进行字符串哈希。

标签:子树,2022,线段,Solution,链表,哈希,序列,NOI
From: https://www.cnblogs.com/cnyzz/p/16629062.html

相关文章

  • 2022-23开工之际
    不要:一直想能不能比过谁,取得什么名次不要:太满足自己的纵欲不要:把学OI的目标放成升学或是某个奖项要:找回初学OI时的乐趣,OI本身的乐趣要:多锻炼身体,不要吃得更肥要:找回两......
  • 2022百度世界大会精华总结(AI应用向)
    完整内容见微信公众号文章:https://mp.weixin.qq.com/s/0d4y9VzSVIcqemqp5O7nzA 官方主页:https://baiduworld.baidu.com/m/world/2022“感受科技,感知未来!7月21日,央视新......
  • 2022暑假每日一题笔记(六)
    T1--4519.正方形数组的数目给定一个非负整数数组A,如果该数组每对相邻元素之和是一个完全平方数,则称这一数组为正方形数组。返回A的正方形排列的数目。两个排列A1......
  • 2022/8/26 总结
    A.括号序列一看,我趣,字符串,直接抱灵吧,让我死得体面一点……再一看数据范围,我趣,\(\mathtt{O(n)}\),这怎么写得出来啊?Solution虽然是\(\mathtt{O(7n)}\),但卡卡常......
  • 肖sir__jenkins搭建20220826
    Jenkins操作手册1、持续集成(CI)Continuousintegration 持续集成 团队开发成员每天都有集成他们的工作,通过每个成员每天至少集成一次,也就意味着一天有可 能多......
  • 2022 NOI 游记
    Day-2起的很早,大概是\(8:00\)左右就到了酒店前台那里,退了房然后去学校了。\(9:00\)左右就到了昆山迪邦华耀学校。(做的出租车去的,下车的时候司机锐评:\(NOI\)不如游戏......
  • 2022-08-26 第二组刘禹彤 学习笔记
    打卡41天###学习内容JS库别人写好的JS文件,我们拿来直接用--------开发中会引入很多.js文件JQery.js:濒临淘汰,经典,10%以下市场React.js:30%市场Angular.js:10%以下市......
  • 2022-8-25 第四组 曹雨 Java script HTML元素操作,BOM
    对HTML元素的操作获取某个元素的属性的值:方法1:元素.属性名特别注意:元素.属性名的方式只适用于元素原生的属性,自定义的属性是拿不到的例子:console.log(div.id)方法2:......
  • NOI2022 游记
    本来叫游寄的,但我好像寄的程度好像无足轻重。隔离7天到达世界最热城,昆山,,,,,,不对,好像整个长江流域都这么热,,,,,,大概隔一天打一场模拟赛,几天前经常切自己赛后不会的题,状态不如......
  • NOI2022 进队记
    Day-2十一点钟左右从宾馆出发去学校,我一看宾馆距离学校只有十公里那还不如直接走过来咯。进学校已经是午饭点了,去宿舍的时候看到一车人已经在吃饭了。鉴于我从来没有参......