直播看着看着发现题解还没写,反正题目比较简单,我就随便写一下题解然后就接着去浪吧。
P.S. 写好一句话题解被吕老师叫回来重写了,伤心到变形。
感觉这一套题虽然总体难度不大,但是细节比较多,套上捆绑还是比较恶心的..而且验题的时候感觉样例比较弱(造题的不是我我不背锅)
看了一下榜感觉这个难度挺兹瓷的?以后就按照这个出吧。
题目排列顺序
算法一
聪明的你肯定发现了把所有位置按照权值第一关键字升序,下标第二关键字降序排序,依次分配
咦我好像不会排序那怎么办办呢?只好写个冒泡排序了。
时间复杂度
算法二
哇我好像知道一个叫做 std::sort 的东西耶,赶紧来试一试吧。
时间复杂度
题目交流通道
算法一
先来考虑
对于边
时间复杂度
算法二
考虑边可以等于
两个团之间的点对距离一定是相等的,考虑团与团之间的边,此时相当于有重边的
考虑团内部的边,每个团肯定由
把所有部分的答案乘起来就好了。时间复杂度
当然最重要的是要判对无解的情况,大致有四种,分别是
题目难度提升
这道题还是挺简单的,本来是出给 hiho 的 A 题,后来感觉有点难了(其实是最开始想简单了)就出 UR 了,感觉主要难度在于细节稍微多了点。
算法一
按位枚举,判断合法性只需要把后面所有的数升序排序然后检查一下就可以了。
直接裸写时间复杂度
算法二
考虑没有相同的数的情况。那么这个时候假设中位数是
按位枚举,一个前缀有解当且仅当前缀的中位数
最开始先放最小的数,每一阶段放两个数进去。阶段开始时因为有奇数个数,所以中位数一定落在某个数上。
假设开始时中位数是
假设此时中位数是
可通过第 4 个子任务,结合算法一可获得
算法三
有相同的数其实也不难。令所有数的中位数是
那最开始两个数最大字典序的情况一定是两个
放了两个
如果暴力实现的时间复杂度
可以发现所有的操作都是可以用 set 方便的做到。时间复杂度
后半部分直接按位枚举也是可以的,稍微优化一下可以做到