K King’s Task

题意:给一个1000以内偶数个排列,两种操作,一种是前一半元素和后一半互换,一种是从1,2开始每两个互换,问给定数列转化为排序结束数列的最小步数,不行则-1.

解:显然两种操作都不能连续执行两次,否则就会抵消。因此,除了初始状态可以进行两种操作,其它到达的状态均只能进行一种操作。通过一些小数据可以发现,能到的状态数相当少,因此如果不想计算可以直接搜索到1e7次看看能不能到达。

分析1:观察小数据可以知道,123…n这个排列能到达的状态中,所有数均错位,且在每个位置上均出现一遍,因此状态数应该为排列的长度

分析2:将两次操作合在一起看效果,发现事实上进行一次操作相当于在一个大小为数字数量的置换群当中置换一次,所以得到结果。

D Digits

WD

dp,由于数字很大,所以取个log

G Guide

LYF

树形dp

I Is It Rated?

未补

题意:交互题,有n个人和你一起猜01,有m轮。每次你猜之前都知道别人这轮猜啥,要求你的错误场数不超过表现最好的一个人的1.3倍+100。

解:考虑两种极端情况,一种是大家都差不多胜率,那我就跟着人多的选即可;一种是大家都猜不对只有一个人一骑绝尘,那我得跟着牛逼人走,不然就会输。具体如何实现这两种情况的平衡,其实很难做。根据题解,除了采用合适的估值函数以外还得加上随机化。过了的都有随机化。

B Button Lock

未补

看起来像费用流,但是又不知道到底是不是

等复习完费用流再回头看看