17/10/24题目泛做

来源:互联网 发布:淘宝网流量分析 编辑:程序博客网 时间:2024/05/29 08:29

集训题

JZOJ 5417

题意:求二维和与RMQ,保证每次查询的区间长宽不超过整个矩阵长宽的一半
分析:二维和没难度,二维RMQ这里因为数据有问题(?)只好开short水过,同时顺便加上了连续访问的黑科技然后卡了过去
不过正解是经典的思想,就是一种简单的变形(但好难写啊QAQ),我们考虑f(i,j,k)表示以(i,j)为左上角,边长2k的正方形的RMQ,然后很显然满足题意的区间只用最少8个就可以全部覆盖,那么这里就可以空间开的足够小了(甚至不用卡)

JZOJ 5418

题意:给出最多n个约束表示某个数要在另一个数左边,问能有多少种可行排列
分析:做过的题……首先这里如果有环的话显然答案是0,那么就只能是一堆森林了。然后设多一个虚拟节点,就直接树形DP,我们考虑f(x)x子树所对应序列的方案数,若将x的直接孩子记为soni(x)(也就是存在关于x的直接约束),我们马上可以看出对于每个孩子分别方案数算好后乘在一起,就相当于若干种元素的带重排列了,那么DP方程显然:

f(x)=(size(soni(x)))!(size(soni(x)))!f(soni(x))

预处理下阶乘就好了,预处理的时候用了O(n+lgn)的黑科技跑进了第一页(目前)

JZOJ 5419

题意:改变某个位置上的数,改变一个区间内位置的可选情况,问每次改变后怎样选一个位置使得所有位置上数及位置间距离乘积的和最小(即选一个k最小化i=1nvi|ik|
分析:因为每个位置上的学生数目都非负,那么容易看出每个位置上距离和有单调性,我们如果不考虑某个区间可选还是不可选,那么刚刚好最后一个使得和上一个距离和的差小于等于0的位置就是答案
这个东西非常类似申请空间的一类线段树问题,于是我们就可以用线段树去强行维护,标记下放还挺好想的
至于有位置可选情况的操作问题,我们同样可以线段树一波,因为这里单调性和区间没什么关系,我们只要找到没被覆盖的区域里面靠左最近的可行点和靠右最近的可行点就好了(如果原来需要选的位置被覆盖了就只能这样了)

补题解

JZOJ 5232

远古时期的题目……

题意:给出n个随机数的数列,第i个数的范围是[li,ri]里随机的整数,求将数列排序后每个数的期望排名与另一个权值si的乘积和
分析:现在看来似乎不是很难做?(雾)
我们考虑扫一遍的时候维护一个桶,用来表示某个取值的数的期望个数,然后考虑第i个数,暴力考虑[li,ri]的范围,每一个位置有1rili+1的贡献,然后求每个答案的时候同样枚举下[li,ri],每一次都暴力扫前面的数加起来搞贡献,再暴力求和乘因子(同上)就可以做了
但是这个样子太暴力了,我们需要数据结构维护……考虑这里要支持的无非是区间加+区间等差型求和,差分一下(或者说考虑每个数对后面的贡献,对于[li,ri]范围内的就是向上的直线,然后对比ri大的贡献就固定了),就变成了GDOI老题的弱化版,考虑线段树标记下传的时候,直接拆成两半,中间的贡献用数列的公式直接算就好了……

对了,如果是实数怎么办?木子爷也秒掉了……用积分可以发现是12x2的贡献,然后就变成两边都等差数列了,多维护一个和,还是可以直接做……

原创粉丝点击