bzoj4574:Zjoi2016线段树 dp】的更多相关文章

传送门 题解传送门 //Achen #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib> #include<vector> #include<cstdio> #include<queue> #include<cmath> using namespace std; ; #define mo 1000000007 int…
比较厉害的dp. 网上题解都是利用了随机的条件,用了一个$O(n^4)$的dp,这里简单说一下. 用f(x,i,l,r)表示经过前i轮操作,[l,r]的所有数<=x,且l-1和r+1都>x的方案数. 转移:f(x,i,l,r)=f(x,i-1,l,r)*g(l,r)+f(x,i-1,j,r)*(j-1)+f(x,i-1,l,k)*(n-k),j<l,k>r 其中,g(l,r)=l*(l-1)/2+(r-l+1)*(r-l+2)/2+(n-r)*(n-r+1)/2 用个前缀和优化一下…
[题目链接] http://www.tsinsen.com/A1219 [题意] 给定一棵树,a[u][i]代表u结点分配i人的收益,可以随时改变a[u],查询(u,v)代表在u子树的所有节点,在u->v(不含u)路径上的节点分配人数的最优收益. [思路] 树链剖分:构造重链时先访问重儿子,因此一个重链的区间连续,同时一个子树的区间连续. 查询分为两部分:构造在u子树内分配人数i的最大收益ans1[i],以及构造在u->v路径上一个结点分配人数i的最大收益ans2[i].则ans=max{ a…
HDU 3016 Man Down (线段树+dp) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1391    Accepted Submission(s): 483 Problem Description The Game “Man Down 100 floors” is an famous and interesting ga…
//Accepted 7552 KB 844 ms //dp[i]=sum(dp[j])+1 j<i && a[j]<a[i] //可以用线段树求所用小于a[i]的dp[j]的和 //需要离散化 #include <cstdio> #include <cstring> #include <iostream> #include <queue> #include <cmath> #include <algorithm…
题目链接:http://codeforces.com/contest/474/problem/F 意思是给你两个数n和d,下面给你n座山的高度. 一个人任意选择一座山作为起始点,向右跳,但是只能跳到高度差的绝对值大于等于d的山上. 问跳过的最长路径是什么. 设dp[h[i]]是跳到第i座山的最长路径长度. 那么dp[h[i]] = max( dp[h[j]] ) + 1  ( |h[i]-h[j]| >=d && i>j ) 因为要查询区间最大值,所以考虑用线段树实现. 从左向…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3872 题意:有n个龙珠按顺序放在一列,每个龙珠有一个type和一个权值,要求你把这n个龙珠分成k个段,每段的权值是这段中的最大的权值,使得最后的权值之和最小.但是现在有个要求,分的段中,龙珠的type不能和最右边的相等. 容易想到是一个DP:f[i]=Min{f[j]+Min(j,i) | j是满足要求的点}.直接搞的话O(n^2),显然超时了.但是可以发现,这个Min(j,i)是有分段性的,因此我…
题意:在一个序列中找出最长的某个序列.找出的序列满足题中的条件. 关键:对于 第 i 个位置上的数,要知道与之相隔至少d的位置上的数的大小.可以利用线段树进行统计,查询.更新的时候利用dp的思想. /* 统计某一段内有多少比aim小的数据 在更新的时候利用了dp的思想. */ #include<stdio.h> #include<string.h> #include<stdlib.h> #include<algorithm> using namespace…
题意:做蛋糕,给出N个半径,和高的圆柱,要求后面的体积比前面大的可以堆在前一个的上面,求最大的体积和. 思路:首先离散化蛋糕体积,以蛋糕数量建树建树,每个节点维护最大值,也就是假如节点i放在最上层情况下的体积最大值dp[i].每次查询比蛋糕i小且最大体积的蛋糕,然后更新线段树.注意此题查询的技巧!!查询区间不变l,r,才能保证每次查到的是小且最大体积. #include<iostream> #include<string> #include<algorithm> #in…
Special Subsequence Time Limit: 5 Seconds      Memory Limit: 32768 KB There a sequence S with n integers , and A is a special subsequence that satisfies |Ai-Ai-1| <= d ( 0 <i<=|A|)) Now your task is to find the longest special subsequence of a ce…