dp线段树优化】的更多相关文章

题目:http://poj.org/problem?id=3171 题意:给你n个区间[a,b],每个区间都有一个费用c,要你用最小的费用覆盖区间[M,E] 分析:经典的区间覆盖问题,百度可以搜到这个专题. 线段覆盖问题一般考虑贪心和DP,但是每个区间又有了一个费用c,本渣觉得贪心貌似不太行(不知道神犇门有木有贪心解法),然后便考虑DP 设f[i]表示覆盖[M,i]的最小总费用 那么有f[t[i].a]=min(f[j]+t[i].c) t[i].a-1<=j<=t[i].b-1 那么ans=…
Oh My Holy FFF Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 606    Accepted Submission(s): 141 Problem Description N soldiers from the famous "*FFF* army" is standing in a line, from le…
题目大意:给一个长度为n的区间,m条线段序列,找出这个序列的一个最短子序列,使得区间完全被覆盖. 题目分析:这道题不难想,定义状态dp(i)表示用前 i 条线段覆盖区间1~第 i 线段的右端点需要的最少数目,状态转移方程为dp(i)=min(dp(j))+1.其中第 j 条线段与第 i 条线段有交集.很显然,这个状态转移方程跟LIS问题的状态转移方程几乎一样,时间复杂度为O(m*m).起初,我想套用LIS问题的O(nlogn)的那种解法,得到两个WA之后才感觉到很难套用成功,理论上完全没问题,但…
题目:给出一个序列,找出一个最长的子序列,相邻的两个数的差在d以内. /* 线段树优化dp dp[i]表示前i个数的最长为多少,则dp[i]=max(dp[j]+1) abs(a[i]-a[j])<=d 复杂度为O(n ^ 2) 利用线段树优化,线段树保存区间最大值.离散化后便可求出,还要注意 对于叶子节点保存的即为dp的值,每次更改即可,开始一直累加..... */ #include <iostream> #include <cstdio> #include <cst…
题意:有一个长度为n的字符串,每一位只会是p或j.你需要取出一个子串S(注意不是子序列),使得该子串不管是从左往右还是从右往左取,都保证每时每刻已取出的p的个数不小于j的个数.如果你的子串是最长的,那么称之为完美字符子串.求完美字符子串的长度. 乍一看比较水,然而差点没想出来. 考虑处理前缀和,p+1 j-1 那么对于一段区间[l,r]只要每一个i∈[l,r]满足presum[i]-presum[l-1]>=0即满足题意 1.单调队列预处理每个位置向前/后走的最远位置 记为f[i]/g[i] 2…
Problem A 内存限制 256MB 时间限制 5S 程序文件名 A.pas/A.c/A.cpp 输入文件 A.in 输出文件 A.out 你有一片荒地,为了方便讨论,我们将这片荒地看成一条直线,这条直线被划分成n段(从左往右,依次标为1,2,3,...,n). 接下来的m年,你会开垦这片荒地并种植作物.不过每年的播种都会受到限制,如果你选择这一年播种,你必须将某段区间全部播种,并且也只能在这段区间播种. 不过,荒地本身并不适合种植,所以你需要对土地花一定成本改良土质才能播种,而改良过的土地…
Cleaning Shifts Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4721   Accepted: 1593 Description Farmer John's cows, pampered since birth, have reached new heights of fastidiousness. They now require their barn to be immaculate. Farmer…
http://acm.hdu.edu.cn/showproblem.php?pid=3698 Let the light guide us Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 62768/32768 K (Java/Others) Total Submission(s): 759    Accepted Submission(s): 253 Problem Description Plain of despair was…
LINK:T1 算是一道中档题 考试的时候脑残了 不仅没写优化 连暴力都打挂了. 容易发现一个性质 那就是同一格子不会被两种以上的颜色染.(颜色就三种. 通过这个性质就可以进行dp了.先按照左端点排序. 设f[i]表示前i个画笔必选的最大价值. 枚举决策j 分类讨论相交还是包含 还是相离. 其中包含的情况没必要讨论 相交需要比对一下颜色再进行转移 不过我写的时候多打一个东西导致爆零. 值得一提的是 对于相交的情况 相交的部分不会被之前转移的线段给交上去 可以证明这样不是最优的. 所以这样dp是正…
这题我的代码在hdu上AC,在uva上WA. 题意:按顺序输入n个串以及它的权值di,要求在其中选取一些串,前一个必须是后一个的子串.问d值的和最大是多少. (1≤n≤2×10^4 ,串的总长度<=3*10^5) 题解: 这题一开始我的方向就错了,想了很久d[x][y]表示在AC自动机上的节点x.下一个串要大于y的dp.然而这样做数组要10^4*10^5=10^9级别,开都开不了,妥妥超时. 后来看了一眼题解...觉得自己智商真是感人... 用f[i]表示以第i个串为结尾的时候最大的d值,这样做…