nfls 11.7 挂分日志
不是,nfls你别太荒谬,天天出黑,这是 NOIP 模拟赛不是 NOI Pro 模拟赛。
T1
一个很明显能看出来的一个匹配过程,考场上没想到可以用两个优先队列来模拟这个匹配过程,贺了个匈牙利二分图匹配上去,但是!!!下面这一段代码记死了,不要用!!!
ll tot, h[N];
struct edge {ll v, ne; } e[M];
#define add(a, b) (e[++tot] = {b, h[a]}, h[a] = tot)
int main()
{
tot = -1, memset(h, -1, sizeof h);
// 重点是这里,不要 memset 为 -1!!!不然凭添常数,很恶心!!!
// 如果要用到反向边的关系,可以直接把 tot 赋值为 1。
return 0;
}
T2
考场上想出来构造,思路正确,赢。
考场上没调出来的离谱代码,找到问题但是改不出来,输。
带点随机的绝对调不出来系列。
思路:对于这个交换方式,很朴素的想法是能够想到是如果区间长度为 \(2\),那么就是交换相邻两个数字。很容易实现一个冒泡排序,次数 \(n * (n + 1) / 2\) 是不是这个来忘记了,草稿纸被中午的可乐打湿扔了自己推一下也不难。
然后考虑优化,我们发现这个排序方式如果我们是在奇数位上,会直接丢到后半块,就想着先找到这个数字现在的位置然后将这个数字每次以二倍不断往后扔,直到扔到为止。这个时候分讨,如果当前位置是目标为置的一半还小,则直接以一倍扔过去,如果当前位置很接近了,直接以 $ (2 * p - i + 1, i)$ 扔过去就好了。
T3
IOI D2 T2
你猜我为什么不写下去了。
T4
好老爷,我连题都读不懂。

浙公网安备 33010602011771号