NOI前的倒数一周。
和陕西,江西的同学一块联考
T1看了看只会做到
O
(
n
l
o
g
2
l
o
g
V
)
O(nlog^2logV)
O(nlog2logV),估计很难过。想了想也不知道怎么取
l
o
g
log
log.
此时周围打键盘的声音非常巨大,很恐怖,很难受,于是洗了洗脸。
T1和超级钢琴很想,想想发现可以推广,建出点分树然后扫一遍就行了。
细节有点巨大。不过好在一遍调出来了,测了极限数据发现1.7s,感觉应该还行。
先写了T2的暴力,然后一档一档写,只有OR和AND的话直接势能线段树就行了。然后开始魔改吉司机线段树,凭着感性写了个做法,不知道复杂度,测了下大数据发现竟然只跑了不到0.7s,然后造了一些极限数据,发现都跑的挺快的。
写T3的10ptsdfs,顺便写了个random_shuffle
后来发现"No"写成"NO"了,差点就丢掉第一了。
lyc的二分通过双指针变成了2个log,虽然常数很大但是还是跑过了。
yql的做法好像是线段树维护直径的合并,据说是1个log,不过没懂。
突然发现是去年暑假jjh讲课的题。
正解有点神奇,还是偏分更实在。
不知道为什么我的random_shuffle就是过不掉。
考试的时候最后其实完全可以写个dfs,加加剪枝说不定就过了。
行列式的定义:
∑
s
g
n
(
p
)
∏
a
[
i
]
[
p
[
i
]
]
\sum sgn(p)\prod a[i][p[i]]
∑sgn(p)∏a[i][p[i]]
和题目所求的差别为
∏
−
>
∑
\prod->\sum
∏−>∑
那么通过原根可以把乘转化为指数上的加法,然后可通过求行列式判断是否有符合条件的路径。
详见链接