csp-s模拟测试91
倒悬吃屎的一套题。
$T1$认真(?)分析题意发现复杂度不能带$n$(?),计划直接维护答案,考虑操作对答案的影响,未果。突然发现可以动态开点权值线段树打部分分,后来$Tm$一想这不傻逼开个桶吗所以暴力维护只拿了一个部分分。$T2$ $qnmd$ $sb$期望老子不会。 $T3$哎$ST$表怎么打来着我忘了(?)。自闭到考试结束。
65
02:56:12
|
0
02:56:27
|
24
02:57:10
|
89
02:57:10
|
哎?我对$T2$充满信仰出题人你的良心数据去哪了?
A. Dove 打扑克
当你知道同时只存在$sprt(n)$个集合的时候你就会切掉他了。可以简单的用$set$实现,也可以数组模拟,也可以想我一样用帅气又方便(?)的$vector$,积累一个$insert$操作。
B. Cicada 与排序
%%%$hzoi$ _ $yzh$大聚聚。
定义$f[i][j]$为在递归的第$i$层,原序列的某一个数在$sort$到当前为止在$j$这个位置的概率。
$g[i][j]$为两个指针分别在$i,j$的概率。
最外层枚举$1->n$每个位置然后分别进行$Dp$
然后转移就巨简单,每次从第$i+1$(儿子层)转移就好了。
C. Cicada 拿衣服
优化暴力可$A$,但是我最近突然有素质了所以我打的正解。
考虑单调性,在一定的区间范围内是有单调性的。可以发现对于$Or-And$相同的一个区间的$Min-Max$可以二分,并且这样的区间数量是$log$级别的,所以用链表处理出来这些区间,一部分一部分二分找到最大合法区间。线段树(我不会别的)区间修改取$max$就好了。
我是一个在黑暗中大雪纷飞的人呐 ——木心