CF1241 D Sequence Sorting(离散化+DP)】的更多相关文章

题意: 给定数组a[n],用两种操作: 1.将数组中所有值为x的数移至开头 2.将数组中所有值为x的数移至末尾 问,经过最少多少次操作,能将数组a[n]变为非递减的有序数列? (1<=n<=3e5,1<=a[i]<=n) 思路: 如果一个数全部分布在一段连续的区间上,那么可以不移动这个数.如果有好几个这样的连续的连续区间,且它们都是非递减的,那么这一个大区间内的数都可以不移动.因此只要求出最大的(所含数种类最多的)大区间,就能得到答案(只移动剩余的数). 将所有数离散化之后,记录每…
D. Sequence Sorting 题目大意:给你一个序列,有一种操作就是对所有相同的数可以挪到最前面,也可以挪到最后面,问最少操作次数. 首先,对于很多个相同的数,可以缩成两个位置,一个是就是这个数出现的区间,一个是最大位置,一个是最小位置. 如果数不挪,那就必须是连续递增的一段数,而且这个些数不能相互影响,也就是小的那个数的最大位置一定要在大的那个数的最小位置的前面. 然后就是找最长的一段连续递增的序列了,这个序列有两个要求,一个是递增,一个是必须连续,意思是对于si 和si+1 不存在…
All Possible Increasing Subsequences Time Limit:3000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu Appoint description:  Description An increasing subsequence from a sequence A1, A2 ... An is defined by Ai1, Ai2 ... Aik, where the follow…
Description A straight dirt road connects two fields on FJ's farm, but it changes elevation more than FJ would like. His cows do not mind climbing up or down a single slope, but they are not fond of an alternating succession of hills and valleys. FJ…
E. Hanoi Factory time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Of course you have heard the famous task about Hanoi Towers, but did you know that there is a special factory producing the…
题目来源:网易有道2013年校园招聘面试二面试题 题目描述: 小明每天都在开源社区上做项目,假设每天他都有很多项目可以选,其中每个项目都有一个开始时间和截止时间,假设做完每个项目后,拿到报酬都是不同的.由于小明马上就要硕士毕业了,面临着买房.买车.给女友买各种包包的鸭梨,但是他的钱包却空空如也,他需要足够的money来充实钱包.万能的网友麻烦你来帮帮小明,如何在最短时间内安排自己手中的项目才能保证赚钱最多(注意:做项目的时候,项目不能并行,即两个项目之间不能有时间重叠,但是一个项目刚结束,就可以…
Brackets Sequence Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 27793   Accepted: 7885   Special Judge Description Let us define a regular brackets sequence in the following way: 1. Empty sequence is a regular sequence. 2. If S is a re…
题目链接 http://poj.org/problem?id=1141 Description Let us define a regular brackets sequence in the following way: 1. Empty sequence is a regular sequence. 2. If S is a regular sequence, then (S) and [S] are both regular sequences. 3. If A and B are reg…
Reference:http://www.cnblogs.com/wuyiqi/archive/2012/03/28/2420916.html 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2836 题目大意:计算序列有多少种组合,每个组合至少两个数,使得组合中相邻两个数之差不超过H,序列有重复的数.MOD 9901. 解题思路: 朴素O(n^2) 以样例1 3 7 5为例,如果没有重复的数. 设dp[i]前n个数的方案数,初始化为1. 那么fo…
先离散化,然后逆着dp,求出每个点能取到的最大利益,然后看有没有钱,有钱就投 想法好复杂 #include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> #include <vector> #include <queue> #include <set> #include <map> #include <stri…
BIGSEQ - Sequence You are given the sequence of all K-digit binary numbers: 0, 1,..., 2K-1. You need to fully partition the sequence into M chunks. Each chunk must be a consecutive subsequence of the original sequence. Let Si (1 ≤ i ≤ M) be the total…
题目链接 感觉这道题我看了很多天,胡思乱想啊,一开始觉得记忆化搜索会可能T啊,,可能出题人的数据卡的好就稳T了的感觉..后来想了想,好像离散化一下,记一下位置之后再记忆化搜索就应该稳了吧..(好像直接搜也不会T的,,??) #include <set> #include <map> #include <queue> #include <stack> #include <math.h> #include <bitset> #includ…
学到了一个引理:在满足S最小化的条件下,一定存在一种构造序列B的方案,使得序列B中的数值都来自于A中.(数学归纳法+中位数定理得证) 对于状态的表示来说,首先肯定有一个 i ,表示选到了第 i 个数时对应的最优解,由于需要维护序列单调性,因此需要再在状态中加入一个因素 j ,表示在第 i 位选了离散化后的A[ j ]. 状态转移为\(dp[i][j]=min\{dp[i-1][k],k\in[1,j]\}+|A[i]-B[j]|\) 代码如下: #include <cstdio> #inclu…
P1052 过河 dp不难,重点是要想到离散化. 石子个数$<=100$意味着有大量空间空置,我们可以缩掉这些空间. 实现的话自己yy下就差不多了. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define re register using namespace std; int max(int &a,int &b){return…
题意:给定 n 个区间,让你选出一些,使得每个选出区间不交叉,并且覆盖区间最大. 析:最容易想到的先是离散化,然后最先想到的就是 O(n^2)的复杂度,dp[i] = max(dp[j] + a[i].r - a[i].l) 区间不相交,这个可以用线段树来维护一个最大值,因为有区间性,但是也可以不用线段树,直接进行线性DP,因为要选的区间越多越好,相比而言,有就要选,但是有更优的就选最优的. 代码如下: #pragma comment(linker, "/STACK:1024000000,102…
RXD, tree and sequence Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)Total Submission(s): 234    Accepted Submission(s): 82 Problem Description RXD has a rooted tree T with size n, the root ID is 1, with the dep…
POJ1180 Batch Scheduling Description There is a sequence of N jobs to be processed on one machine. The jobs are numbered from 1 to N, so that the sequence is 1,2,..., N. The sequence of jobs must be partitioned into one or more batches, where each ba…
Description Let us define a regular brackets sequence in the following way: 1. Empty sequence is a regular sequence. 2. If S is a regular sequence, then (S) and [S] are both regular sequences. 3. If A and B are regular sequences, then AB is a regular…
dp非常好想, f[i] = min(f[i-len] + stone[i]) s <= len <= t 然后因为L非常大,所以我就不知道该怎么搞了 我看到m只有100,而L有1e9,我就知道肯定要通过某种数学方法来离散化 然而我并没有想出来这个数学方法 看来题解,原来这个方法很简单,我怎么就没有想到 因为最大走10步,所以把距离对1到10的最小公倍数是2520取模就好了. 离散化之后就可以愉快地dp了 #include<cstdio> #include<algorithm…
目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog Problem:Portal传送门  原题目描述在最下面.  1e5个点,问从(0,0)走到(1e9,1e9)的最大收益.  当你从(u-1,v-1)走到(u,v)时,你可以获得点(u,v)的权值. Solution:  十分详细了.  直接线段树区间最值.当然也可以树状数组,不能st表.  \(dp[i] = max(query\_max(0,dp[i]-1,1)+val[i] ,…
题目描述 The streets of Byte City form a regular, chessboardlike network - they are either north-south or west-east directed. We shall call them NS- and WE-streets. Furthermore, each street crosses the whole city. Every NS-street intersects every WE- one…
DNA Sequence Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11860   Accepted: 4527 Description It's well known that DNA Sequence is a sequence only contains A, C, T and G, and it's very useful to analyze a segment of DNA Sequence,For ex…
题目:http://poj.org/problem?id=1141 转载:http://blog.csdn.net/lijiecsu/article/details/7589877 定义合法的括号序列如下: 1 空序列是一个合法的序列 2 如果S是合法的序列,则(S)和[S]也是合法的序列 3 如果A和B是合法的序列,则AB也是合法的序列 例如:下面的都是合法的括号序列 (),  [],  (()),  ([]),  ()[],  ()[()] 下面的都是非法的括号序列 (,  [,  ),  …
题目大意:给定一个长度为 N 的序列,有 M 个点对答案的贡献为 1,其余为 0,现从起点出发,每次只能走 [s,t] 个单位,求从起点走到终点时答案贡献最小是多少. 题解:由于 N 很大,无法直接记录状态.观察发现 M 很小,且 [s,t] 也很小,因此,考虑到只有在答案贡献为 1 的点的附近 dp 值才可能会发生变化,其余位置会导致大量的解的重复而浪费时间和空间.基于以上想法,考虑缩点,即:对于两个石子之间的距离来说,是否存在一个点 s0 使得当 s>s0 时,无论从前一个石子之前的任何位置…
题目链接 比赛链接 \(Description\) \(Solution\) 参考:https://www.cnblogs.com/SovietPower/p/9781573.html 暴力:\(f[i][j][k]\)表示前\(i\)个数,与起来为\(j\),异或和为\(k\)的方案数.复杂度\(O(n*4^{13})\). 考虑位运算的性质,最后怎么得到某一位的1:&要求所有数这一位为1,^只需判这一位为1的数的奇偶性. 所以我们用13位三进制s表示13位01的状态(2表示全1,0/1表示奇…
题意:一串括号,每个括号代表一个值,当有相邻括号组成()时,可以交换他们两个并得到他们值的乘积,问你最大能得到多少 思路:DP题,注定想得掉头发. 显然一个左括号( 的最远交换距离由他右边的左括号的最终位置决定,那么我们可以从右边开始做.我们用dp[i][j]表示第i个左括号交换到第j个位置后,他和他后面左括号所能得到的最大值.显然,dp[i][j] = i交换得到的值 + 后面左括号产生的最大值.而后面左括号能产生的最大值显然就是max(dp[i+1][k])其中j <= k <= n. 代…
题意:给定一些串,然后让你构造出一个长度为 m 的串,并且不包含以上串,问你有多少个. 析:很明显,如果 m 小的话 ,直接可以用DP来解决,但是 m 太大了,我们可以认为是在AC自动机图中,根据离散中的矩阵的幂可以表示 从 i 到 j 需要 x 步的有多少条.比如A[1][2]^5 = 10,表示从结点 1 到结点 2 走五步有10种方法,利用这种方法,就可以直接进行矩阵快速幂了. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000…
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4501 题意: 定义如下正规括号序列(字符串):1.空序列是正规括号序列.2.如果S是正规括号序列,那么(S)和[S]也是正规括号序列.3.如果A和B都是正规括号序列,那么AB也是正规括号序列.输入一个长度不超过100的,由“(”.“)”.“[”.“]”构成的序列,添加尽量少的括号,…
题目链接:http://poj.org/problem?id=3666 题意是给出一组数,每个数代表当前位置的地面高度,问把路径修成非递增或者非递减,需要花费的最小代价? ///用dp[i][j]表示:前i个数构成的序列,这个序列最大值为j,dp[i][j]的值代表相应的cost. ///dp[i][j]=abs(j-w[i])+min(dp[i-1][k]);(k<=j) ///i-1构成的序列,最大值是k + (j-w[i])变成此步需要的花费 因为要把路径修成非递减路径,所以a[j]>a…
POJ3709 题意很简单 给n个递增整数(n<=500000)和一种操作(选择任意个数 使他们减少整数值) 使得对于所有的整数 在数列中 有k个相等的数 O(n^2)的DP方程很容易得出 如下 dp[i]=min{dp[j]+S[i]-S[j]-aj*(i-j)}| 0<=j<=i-k} 进一步变形 设fj(x)=-aj*x+dp[j]-S[j]+aj*j 可得 dp[i]=S[i]+min{fj(i)|0<=j<=i-k} 也就是说 计算dp[i]相当于从i-k+1条直线…