The 2020 ICPC Asia Shenyang Regional Programming Contest
发挥很糟糕,还需继续努力。
(某些题代码不给是因为考场代码不忍直视,然后我又不想写了
[A The Grand Tournament]
solution
题面:给出一个正方形,和两条线段,问正方形内到这两条线段的距离相等的点集面积。
做法:不太想写代码。
经过画几张图,就会发现,要么在端点处相交,要么有重合部分,不然都是
[B Whispers of the Old Gods]
solution
题面:
做法:NFA 题,不太了解。
[C Mean Streets of Gadgetzan]
solution
题面:若干个 bool
变量,给出若干个条件,格式大致有四种:令某变量为真;令某变量为假;若给定的一系列变量均为真,则某变量为真;若给定的一系列变量均为真,则某变量为假。构造一方案或输出无解。
做法:类似
准确来说,就是将已经确定为真的点加入队列,然后按着这样来确定。若无法确定则不妨设为假。时间复杂度
[D Journey to Un’Goro]
solution
题面:给定
做法:条件等价于区间异或和为
[E Knights of the Frozen Throne]
solution
题面:
做法:注意到有用的
瓶颈在于离散化和排序,总复杂度是
[F Kobolds and Catacombs]
solution
题面:给一个长度为
做法:容易想到要把最小的数放在第一个,于是最小数的位置要与第一个位置相连,贪心地,是最靠左的相连。以此类推,那么做的就是一个区间并的操作,可以用线段树维护标记。时间复杂度
实际上,直接把数组排序后,只要每一次前缀和相等时划分出一个新区间即可。时间复杂度
[G The Witchwood]
solution
题面:问一个数组前
做法:签到。
[H The Boomsday Project]
solution
题面:你可以花钱买游戏币,有
做法:注意到
坑( 队友当时出的锅 ):
[I Rise of Shadows]
solution
题面:一个时钟,时针走一圈就是一天,现在给定时针走一圈要
做法:随手一推,就是
我是没啥脑子,看到就写了个类欧,稍微注意下边界细节就过了。
实际上,可以直接推出答案为
[J Descent of Dragons]
solution
题面:初始为
做法:大致初始为
就考虑维护 copy
到
不过查询和修改的复杂度不对等啊,是不是可以平衡一下优化到
1 | //2021.10.4 by ljz |
[K Scholomance Academy]
solution
题面:给出
做法:注意到有用的
[L Forged in the Barrens]
solution
题面:长度为
做法:首先要转换下题意,注意到实际上最大值减最小值这个条件不如改写成区间两个数的差的最大值,于是题意就可以改写成选取
接下来就有两种做法了。一种是注意到这个东西实际是个费用流模型,即
那么如何模拟费用流呢?注意到每个增广都会让一个区间的边的某个方向的流量加一,另一个方向减一,这让我们想到用线段树来模拟费用流。和这里的第三十题类似,我们维护不/可能跨过最小/大流量的答案,类似地维护那么一坨信息即可。时间复杂度
另一种做法就是暴力分治闵科夫斯基凸包和了。可以注意到这个费用流可以用一个更暴力的区间
坑:转移时可能遇到数组多加个 vector
越界,建议多开一个空间。
1 | //2022.1.14 by ljz |
[M Forged in the Barrens]
solution
题面:给出
做法:开始想直接求
后来换了个思路,先求
然后我们队没查出一个小地方爆了 int
,于是这题卡了我们很久的时间。。。