题目来自2021-2022 ACM-ICPC Latin American Regional Programming Contest
y1s1题是真的难读, 英语水平捉急了…(由于当天有新生宣讲会, 这场只打了4h)
K - KIARA is a Recursive Acronym
签到
问在给出的 个字符串中否存在一个可以由 个字符串的首字符组成的串
但是不知道为啥被卡常了一发(
1 |
|
F - Fields Division
签到
给一张$n$点$m$边的连通图, 第$i$个点有$2^i$的权值, 需要将该图的点分成AB两部分, 使得各部分内部的点互相连通, 且两部分权值和尽可能相等, 若做不到相等的话使A部分权值大于B部分
由于点权是$2^i$, 所以必定不可能做到两部分权值相等, 只需要A先拿$n$号点, B拿$n-1$号点及其所有与该点相连通的点, 剩余点全给A即可
(题目说有多解, 可是想了想不管怎么样这个解都是唯一的)
1 |
|
I - Invested Money
签到?
本该是签到题, 可是我们签了1h…(读题读不懂了….
给出今天是一周的第几天, 以及距离$n$次存款日过了几天
规定只能在存款后的每30天才能有一次取款机会, 若在周末则延迟到周一, 下一次取款日会在上一个可取款日的30日后, 询问距离最近的下一次取款日还需要几天
只需反推出存款日, 然后分类讨论一下就行了
因为是这么循环的: 2 -> 4 -> 1 -> 3 -> 5 - > 1 -> …
1 |
|
M - Most Ordered Way
给出$n$个工程, 每个工程需要做$t$分钟, 截止时间为$d$, 求一个字典序最小的合法序列, 或者无解
贪心
显然, 若没有字典序最小的条件, 直接对$d$从小到大排序即可
但是需要字典序最小, 那么考虑贪心, 先对$d$从小到大排序, 求出一种可行解, 然后考虑能否改变某几个的顺序来做到使字典序变小
于是可以考虑让第$j$个元素排到第$i$个元素的前面, 那么收到影响的只有第$i$个和第$j$个之间的元素, 若改变顺序后该序列依旧合法, 那么就让第$j$个元素排到第$i$个元素的前面即可
稍微推一下就会发现合法的条件有两个: $sump + t_j \le d_p (i\le p \le j)$ 以及 $sum{i-1} + t_j \le d_j$
对于第一个式子, 只需要维护$sum_p - d_p$的最大值即可
时间复杂度: $O(n^2)$
1 |
|
J - Joining Pairs
给出一个网格图和$n$对点, 问是否存在一种画法使得$n$对点的连线不相交
显然只有横跨了整个网格的线有可能会相交, 即两端点都在边界上的点对(以下只考虑这种点对)
于是可以顺时针遍历边界, 用一个栈存第一次遇到的点对, 当遇到这对点的第二个点时, 如果此时栈顶不是这点对的另一个点, 那必定是会产生相交的线的, 所以离散化后遍历即可
1 |
|
H - Hamilton - The Musical
给出$n$个点两两之间的距离$L{ij}$, 定义一个$n$的排列$p_1, p_2, …, p_n$的权值为$$\sum L{pi p{i+1}}$$
现规定$p_i=i$ $(i\mod2 = 0)$, 求最小的权值
费用流, 题意可转化为对于剩下的奇数点, 还有奇数个位置做一个最小权的完美匹配, 所以可以直接跑费用流解决, 边权为$i$点在$j$位置时与左右两点的距离和
(复杂度手算了一下大概是$n^3$的, 而时限是0.5s, 没想到还真过了)
1 |
|