Luogu P2612 [ZJOI2012]波浪】的更多相关文章

题目 我们考虑从\(1\)到\(n\)把每个数放到序列里面去,以消掉绝对值. 在最后的序列中,如果\(i\)的某一边是序列的边界,那么\(i\)会产生\(0\)的贡献.如果\(i\)的某一边是一个比\(i\)小的数,那么\(i\)会产生\(i\)的贡献.如果\(i\)的某一边是一个比\(i\)大的数,那么\(i\)会产生\(-i\)的贡献. 当我们放\(i\)时,所有小于\(i\)的数都已经放进序列了,而大于\(i\)的还没放. 那么最后的序列中\(i\)的左右两边的情况就等同于放\(i\)的时…
[BZOJ2817][ZJOI2012]波浪(动态规划) 题面 BZOJ 洛谷 题解 首先这个差值最大也就是\(n^2\)级别的. 那么这样子就可以压进状态啦. 我们把这个操作看成一个个加数的操作,按照从小往大的顺序依次把每个数放到一个合法的格子上面去,那么对于先放的数,对于答案的贡献就是负的,否则就是正的. 那么每次放入一个数,考虑其贡献是什么. 如果其左右都没有数,则贡献是\(-2x\). 如果一侧有数,则贡献是\(0\). 如果两侧都有数,则贡献是\(2x\). 显然填好的数是一段段的,那…
洛谷2612&&bzoj2817 [ZJOI2012]波浪 原题链接 题解 因为有abs不太好搞,考虑拆掉abs. 生成排列的方法之一:n个空位,从1到n一次插入一个空位. 这样搞的话考虑一个数的贡献 如果是233333 1 666666 |233333-1|+|1-666666|==233333+-1+666666-1 所以1的贡献为-2 如果是233333 inf 666666 |233333-inf|+|inf-666666|==inf-233333+inf-666666 所以inf…
题目描述 题目传送门 分析 因为有绝对值不好处理,所以我们强制从小到大填数 设 \(f[i][j][p][o]\) 为当前填到了第 \(i\) 个数,波动强度为 \(j\),有 \(p\) 个连续段并且两端的端点选了 \(o\) 个时的概率 注意这里的连续段是强制规定的 那么转移有五种: \(1\).填的数单独成为一段并且不在整个区间的两个端点上 \(f[i+1][j-i*2-2][p+1][o]+=f[i][j][p][o]*(p+1-o)\) 因为后面填在这个数两边的数一定比这个数大,所以这…
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=2817 波浪 [问题描述] 阿米巴和小强是好朋友. 阿米巴和小强在大海旁边看海水的波涛.小强第一次面对如此汹涌的海潮, 他兴奋地叫个不停.而阿米巴则很淡定,他回想起曾经的那些日子,事业的起伏, 情感的挫折……总之今天的风浪和曾经经历的那些风雨比起来,简直什么都不 算. 于是,这对好朋友不可避免地产生了分歧.为了论证自己的观点,小强建立 了一个模型.他海面抽象成一个 1 到N的排列P[1……
Description: L = | P2 – P1 | + | P3 – P2 | + - + | PN – PN-1 | 给你一个N和M,问:随机一个1-N的排列,它的波动强度(L)不小于M的概率有多大? Hint: \(n \le 100\) Solution: 传说中的神仙dp,难在如何转化问题 绝对值很不好搞,我们考虑按从小到大顺序依次插入这些数 设\(f[i][j][k][l]\)表示插入第i个数后,分成了j个连续段,强度为k,有l个边界已确定的方案数 然后就很套路了,详见代码 这种…
传送门 花掉了自己用来搞学科的时间做了这道题-- 一道类似的题:Here 考虑拆开绝对值计算贡献.那么我们对于\(1\)到\(N\)的排列,从小到大地将插入它们插入排列中. 假设我们现在计算到了数\(i\),这意味着前\(i-1\)个数已经被插入到了排列中.考虑当前如何计算\(i\)的贡献. 不难发现:在最终的排列中,\(i\)的贡献与它和前\(i-1\)个数和边界的相邻情况有关.如果\(i\)某一边与边界相邻,会产生\(0\)的贡献:某一边与小于\(i\)的数相邻,会产生\(i\)的贡献:某一…
一道非常综合的好题然后就莫名其妙地知道了动态LCA的求法 果然是ZJOI的题目,只能说这思路服了 首先我们发现每次操作只会灭绝一种动物,然后我们想一下就知道如果有\(n(n>=2)\)个食物的动物就不会灭绝. 然后我们YY一个叫灭绝树的东西,在这个树上的点都满足一个性质:当一个节点被割去时,以它为根的整棵子树对应的动物都会灭亡. 然后我们只需要考虑如何搞出这个树了. 然后我们再YY一个虚拟节点0,让它向所有生产者连边,我们可以形象得理解成太阳. 然后我们将题目中的树反向建边,然后就变成了这样:…
题面 \(solution:\) 这道确实挺难的,情况特别多,而且考场上都没想到如何设置状态.感觉怎么设状态不能很好的表示当前情况并转移,考后发现是对全排列的构造方式不熟而导致的,而这一题的状态也是根据全排列的一种构造方案得出的:我们从小到大加入\([1,n]\),但是这样会需要上一个序列的很多情况(如端点,间隔......),所以我们考虑添加状态: \(f[i][j][t][k]:\)表示填了\(i\)个数,产生了\(j\)个间隔,目前的波动值为\(t\),两个端点还有\(k\)个没有确定的情…
Solution $LCT$ 直接上$QuQ$ 注意$cut$ 完 需要 $d[u + c * N]--$ 再  $link$,  不然会输出Error 1的哦 Code #include<cstdio> #include<cstring> #include<algorithm> #define rd read() using namespace std; ; int n, m, col, Q; int read() { , p = ; char c = getchar…