CodeTON Round 1 (Div. 1 + Div. 2, Rated, Prizes!) 「A - F」

这场打的有点下饭 D竟然也是简单的分类讨论一下 只能说是不够冷静 没有仔细分析了

这几天没什么动力 也不想写什么东西 但这场比赛会补好 写完 因为白天闲时的一个念头

A. Good Pairs

找到最大的数和最小的数的位置 注意顺序 输出

B. Subtract Operation

经过 n-1 次操作最后的答案值是最后两个减数的差 set维护一下就好

C. Make Equal With Mod

考虑构造的方式: 找到最大的数k %k得到0 %k-1得到1

可以知道同时含有0 1的情况是处理不了的

那么如果1有出现过 就尝试把别的数变到1 就不能有连续的数字k和k+1

如果没有1 那么全部变到0 从大到小依次%当前的Max就可以做到

D. K-good

给定一个数$n$ 判断是不是$k$个数之和 并且这$k$个数$\mod k$构成$k$的完全剩余系

如果是 输出k 不是输出-1

事实上还是分类讨论 是我想歪了.. 首先很容易得到一个东西

  1. $n=[2g+(k-1)]*\frac{k}{2}\ \ if(k\mod 2=0)$

  2. $n=[g+\frac{k-1}{2}]*k\ \ if(k\mod 2=1)$

$g=\sum_{i=0}^{n-1}{a_i}$ 假设$b_i=a_i*k+i$且$n=\sum_{i=0}^{n-1}b_i$

额 然后我这里十分sb的去分解因数找k去了 结果不是边界搞错就是T.. 还在想$10^{18}$估计是要Pollard Rho..

事实上注意到肯定有一个因数是奇数 那么如果是2的次幂 就可以输出-1了

但是有了答案也不能草率的输出奇数或者对应的除数作为k 不然可能会有g等于0的情况

题设要求正整数 因此不能有0的出现 因此我们要求1 2式里乘号右边那东西尽量小

E. Equal Tree Sums

给定n个点的树的连接情况 要求给每个点赋值$a_i$ 使得删除任意一个点之后 剩余的联通块权值和相等

要求$1\leq a_i\leq 10^5$

看了知乎几个回答 除了小岛的有分析之外别的就直接上染色+度数的方法了 然后再balabala事后分析一波 感觉不太好

这种事后分析感觉没什么帮助

首先随便画个链 可知需要设置负权 进一步能想到设置负权的原因是

假设都是正权 如果删除一个点之后 假设还剩两个联通块 如果权值能平衡 那么不删除这个这点 转而删除旁边的点

权值就势必不会平衡 进一步可知点权的贡献应该都视作-1或1

后面随便搞个Huffman树 完全二叉树 权值与度数关联这个比较好想 就是二分图染色可能是比较常用的套路 就是令一条边的影响为|1|

用度数和其相反数设置过去 一条边给两个点的贡献是-1+1=0 这样整张图的权值为0

在删除一个节点之后 设权值为k 会产生$|k|$个联通块 那么每个联通块在失去了当前节点之后 就会产生一个$-\frac{|k|}{k}$的权值

剩余的联通块于是就平衡了

F. Parametric MST

给定a_i表示点权 设图G(t)由n个点和边(i,j) 边权为$a_i*a_j+t(a_i+a_j)$组成

f(t)是G(t)的最小生成树的花费 要求找出f(t)的上界 或者是INF t在实数范围内

简单分析一下 边权只考虑$t*(a_i+a_j)$ 即$t \to +\infty | t\to -\infty$

如果所有的形态都是花费>0 或者<0 那么配上$t\to\infty$就会趋向INF 不然就确保有解

之后的就不会了 有二分的感觉 但是好像不行.. 后面的内容就属于是搬运题解了..

考虑固定t之后快速求出MST.. 边权变换为$(a_i+t)*(a_j+t)-t^2$ 删掉常数$t^2$ 答案就是新图的MST-$(n-1)t^2$

这个时候连边的方式就是$a_1$和$a_n$相连 然后$>0$的连向$a_1$否则$a_n$ 这个过程满足prime的要求 顺序无所谓

这个形态发生改变的过程在t取到$-a_i$的时候 然后更新上界就好了 整个过程的瓶颈在于排序

之前看小岛的回答 说F的确有二分的做法 我没啥思路 网上找了一圈也没见着 小岛还删回答了 哎..


这感觉已经是Div. 1C的难度了 后面的题暂时不开了 补别的场次了..