noip模拟57

T1

把快读改一改就行了

T2

瞅见状压分挺高就去码状压了,没去想贪心,,,最后30mins回来看的时候也没想到贪心,还在想dp咋整,,,就挺迷

显然应该尽量删‘A’,'P'可以和'P''A'删,'A'只能和'P'删

贪心删'AP',最后删'PP'

有\(O(n)\)的,维护两个变量匹配AP,我打的\(O(n^2)\)暴力删(一傻傻到底)

T3

bitset记录祖先,每次\(O(k^2)\)判断两个串是否互相继承,以及是否有公共祖先

这个,,,复杂度\(O(\frac{n^2k^2}{32})\)

这个复杂度看起来很假,想卡的话,,,就让它每次\(O(k^2)\)判断的时候不存在不合法情况,弄个内向树

正解的话,如果一个串a被一个串b继承了,那么a不仅没用,还会造成\(O(k^2)\)判断

还是刚才的思路,每次按照声明的顺序排序,并把所有的祖先并到一个bitset上标记

如果当前的点被标记了,直接跳过,否则判断它的祖先和之前的祖先是否有交

\(O(n^2\log n)\)

T4

有个显然的结论,若点x在\(k-degree\)子图里,那它必在\((k-1)-degree\)子图里,于是就可以每次删点

除去度数为0的点,当k=1时显然是全集

从1枚举k,每次边统计答案,边把在当前\(k-degree\)子图中度数为k的点加入队列

然后将它们删掉,并使与其相连的点度数--,度数为k就再加入队列,直到队列空

复杂度好像也很假

上一篇:前端性能优化之图片优化,图片资源减少了57%


下一篇:FLINK SQL 时间戳转换