====== 2020牛客暑期多校第三场 ====== ====== 比赛地址 ====== [[https://ac.nowcoder.com/acm/contest/5668|牛客OJ]] Pro: 8/8/12 Rank: 71/1175 ====== [A] Clam and Fish ====== ===== 题意 ===== 有一片池塘,有四个状态,有/无蛤蜊,有/无鱼.有蛤蜊的时候可以做一个诱饵,有鱼的时候可以直接钓鱼.其他时间可以消耗一个诱饵钓一条鱼.求最多能钓几条鱼. ===== 题解 ===== 贪心.在有鱼的时候尽量钓,其他时间做诱饵. 如果最后会剩下诱饵就在做后面一半诱饵的时候钓鱼. ====== [B] Classical String Problem ====== ===== 题意 ===== 给出一个字符串,有两种操作,一种是把最前面的k个字符挪到最后面,另一种是把最后面的k个字符挪到最前面.还有一些询问操作,每次问某个位置的字符是什么. ===== 题解 ===== 首尾相接拼成一个环,然后更新首字符所在的位置就行了. 一开始失了智写了个Splay维护区间,还T了一发QAQ ====== [C] Operation Love ====== ## 题意 给出一个右手的形状,左手与右手是镜像对称的.现在给出一个图形,判断是左手还是右手. ===== 题解 ===== 机器学习 可以找一些特殊的向量来判断叉积,卡精度. ====== [D] Points Construction Problem ====== ===== 题意 ===== 给出一个无限大的网格平面,一开始每一个格子都是白色的.现在要求将$n$个格子染成黑色,使得相邻的两个格子为黑白两色的格子对的数目恰好为$m$.求染色方案. ===== 题解 ===== $m$为奇数一定无解,且$m$最大为$4n$.然后当这些黑色格子构成一个正方形时,黑白格子对数目最少. 根据以上信息简单构造下就行了. ====== [E] Two Matchings ====== ===== 题意 ===== 给一个长度为$n$的序列,定义重排方案$p$为,$p_{i}!=i,p_{p_{i}}=i$.且p为1到n的一个排列. 现在要求找出两个完全不同的重排方案$p,q$(也就是两个排列对应位置均不相同),使得原序列在分别经过这两个重排后的代价之和最小.求这个最小代价. 代价的定义是$\sum_{i=1}^{n}\frac{a_{i}-a_{i}'}{2}$ ===== 题解 ===== 不难发现,当$n=4,6$时,答案就是最大值减去最小值的两倍.当$n$比较大时,就需要把这个序列切为一些小段,每一个小段的代价也是最大值减去最小值的两倍. 所以有如下dp式子:$f[i]=Min(f[i],f[j]+2(a[i]-a[j+1])$.其中的a是从大到小排好序的.这个式子和单调队列优化dp的式子非常像,不过这里只需要记录下$f[i]-2a[i+1]$的最大值.之后直接dp就行了. ====== [F] Fraction Construction Problem ====== ===== 题意 ===== 给出$a,b$,求$c,d,e,f$,使得$\frac{c}{d}-\frac{e}{f}=\frac{a}{b}$. 且要满足$d,f