题目来自: 2019-2020 ICPC Southwestern European Regional Programming Contest (SWERC 2019-20)
B - Biodiversity
签到, 问是否存在一个出现了一半次数的字符串
1 |
|
I - Rats
签到, 抄一下柿子就行
1 |
|
C - Ants
签到, 给一堆长度小于$100$位的数(可以有负数), 问最小的未出现的自然数是啥
1 |
|
F - Icebergs
签到, 给若干个不重叠的多边形, 求总面积
叉乘一下就行
1 |
|
A - Environment-Friendly Travel
给出起点$s$和终点$d$, 以及最多行驶里程$B(\le 200)$, 又给出了$n(\le 1000)$个站点的图以及每条边的$CO_2$花费量(即$C_i$), 初始你在起点能开车前往任意一个点, 但是花费量是$C_0(C_0 > C_i)$. 定义$dist(a, b) = \lceil \sqrt{(x_a - x_b) ^ 2 + (y_a - y_b) ^ 2}\rceil$, $cost(a, b, i) = C_i \times dist(a, b)$, 求到达终点且满足里程小于等于$B$时最小的$cost$
注意到$B$只有$200$, 可以考虑用$dis[i][j]$ 表示到达$i$点且行驶了$j$里程时的最小$cost$.
所以用最短路的方式转移即可.
1 |
|
K - Birdwatching
给一张$n$点$m$边的有向图和一个点$T$, 问满足从$T’$走到$T$的所有路径中,一定包含$T’ → T$这条边的点$T’$有哪些
首先$T’$必须有一条连向$T$的边, 又因为题目要求的是所有路径, 所以从$T’$出发不存在第二条到$T$点的路径
如果把原图的边全都反向, 那么如果这个点被两个与$T$直连的点到达了, 这个点就不是答案中的点, 所以可以对这张反向图进行$BFS$, 顺便标记一下即可(感觉有点瞎搞)
1 |
|
G - Swapping Places
给出$S(S \le 200)$种字符串, $L(L \le 10000)$种关系, 长度$N(\le 100000)$的字符串序列, 若两种字符串存在关系且在序列中位置相邻, 那么就可以交换它们的位置, 求可以得到的字典序最小的序列.
考虑两种没有关系的字符串, 它们不可能通过这种交换来做到交换它们两个的先后顺序, 也就是说, 对于两种没有关系的字符串, 它们的先后顺序是固定的.
那么, 可以对原序列中所有没有关系的字符串建一张图, 在这张图上跑出一个字典序最小的拓扑序就是答案了.
1 |
|
D - Gnalcats
有一个无限长的简单元素序列, 以及若干个操作($X$表示后续无限个元素):
- $C$ : 复制第一个元素 即 $a−X → a-a-X$
- $D$ : 删除第一个元素 即 $a−X → X$
- $L$ : 将第一个元素变成复合它的左元素, 若第一个不是复合元素则失败并停止后续所有操作 即 $(a, b)-X → a-X$
- $P$ : 将第一个元素作为左元素和第二个元素作为右元素复合为一个新元素 即 $a-b-X→(a,b)-X$
- $R$ : 将第一个元素变成复合它的右元素, 若第一个不是复合元素则失败并停止后续所有操作 即 $(a,b)-X→b-X$
- $S$ : 改变第一个元素和第二个元素的顺序 即 $a-b-X→b-a-X$
- $U$ : 将第一个元素变成复合它的两个元素, 若第一个不是复合元素则失败并停止后续所有操作 即 $(a,b)-X→a-b-X$
给出两个操作序列, 问这两个操作序列生成的最后的元素序列是否相同
直接用一个类似栈的东西模拟操作
要注意的是, 虽然复合操作最后会连出一个二叉树, 但是最后判断两个序列相同时不能用直接递归整棵树的方式, 否则会$TLE$.
可以对复合操作进行$Hash$存储(CODE1的做法), 但是后来想了想发现可以直接用map
1 |
|
1 |
|
H - Pseudo-Random Number Generator
题目给出了一个奇怪的序列生成器, 问这个序列的前$n(0\le n \le 2^{63}-1 )$项里有多少个偶数
$M = 2^{40}$
$S(0)=0x600DCAFE$
$S(n+1)=(S(n)+(S(n-1) >> 20) + 12345)\%M$
因为有取模, 所以一定会存在环(循环节), 先跑了遍$Floyd$判环发现环的长度为$182129209$, 起点到环的距离是$350125310$, 因为时限只有$300ms$, 所以直接暴力跑肯定是不行的, 那么可以采用分块打表的方式, 在本地先暴力跑出每一块的答案, 然后就可以用$O(块长)$的复杂度算出答案了. 我这里选择的块长是$3\times 10^7$
1 |
|