BZOJ水题计划

题号 题目描述 解题思路
3306 给出一棵带点权的有根树,支持单点修改,换根,询问x子树中的权值最小值. 直接在DFS序上用线段树维护就好了.
3900 给出n个数对,求最小的交换次数,满足交换后每个数对相差不超过c 压位,用(f[i])表示(i)状态的数对满足条件的最小操作次数,初始时(f[i])如果有解,那么答案至少为操作数对-1,然后(f[i]=min(f[j]+f[i ext{^}j]))修正一下就好了.
3901 给定一个(n*n)的棋盘((n)为奇数),每个格子上有数,设(X=(n+1)/2),每次可以将一个(X*X)的子棋盘的所有数乘-1,求所有数之和的最大值. 考虑不管子棋盘怎么选,X行X列一定有数会被选上,考虑(a[1][i],a[1][X],a[1][i+X])的关系,发现他们是否被操作的异或值一定为0,因为任意的操作只会包含他们三个点中的其中两个或零个,然后其他行以及列也有这种关系,枚举X行前X个格子的操作情况,得出X行的情况,然后每一行第X列的情况枚举前(i)个格子的情况,显然这个贡献单独考虑,所以刷个最大值就行.复杂度(O(2^XX^2))
3920 给出一个长度为(n)的序列,询问一个区间数字出现次数第(k1)小的第(k2)小的数. 分块套分块?神奇的叫法.
把(数字,数字出现次数)看成一个二元组,二元组的个数为(n),然后我们用莫队维护这个二元组即可,首先数字出现次数一个分块,然后相同出现次数的数用个分块.
3689 给出(n)个数,两两异或可以得到(n*(n-1)/2)个值,求前(k)小的值. 额,对于每个数肯定先找第一小然后第二小...
用个堆维护一下每个数当前的最小异或值,查询一个数第(k)小异或值一棵字典树就行.
4011 给出一张有向无环图和一条任意边,求以(1)为根的外向树的个数. 根据朱刘算法(???),有向无环图的外向树个数为除根以外所有点入度的乘积.感觉脑补一下就行,每个点随便选个fa就可以形成一棵树...现在多了一条边,那么减去成环的方案数就行.成环的方案数应该是(sum)所有(y)->(x)的路径(设为(S))(prod_{x otin S}dgree[x]),在拓扑序上DP就行.
原文地址:https://www.cnblogs.com/CHNJZ/p/10435201.html