那些神奇的DP建模

(1). 迎接仪式

思路:性质,状态1拆为2,进行匹配

(2). 数字序列

思路:转换DP方程,玄学

(3). 序列分割

思路:性质,斜率优化

(4). 经营与开发

思路:倒序,秦久韶公式

(5). 地精部落

思路:波动数列性质

(6). 花园

思路:特殊的处理环的方法:枚举初始状态找重合

(7). 产品加工

思路:把并行的一部分压入状态

长期更新...

原文地址:https://www.cnblogs.com/ppprseter/p/9594959.html

时间: 2024-11-04 10:14:33

那些神奇的DP建模的相关文章

一种神奇的DP思想

最近考了个叫做NOIP模拟的题..... 真是难以吐槽.NOIP怎么考到了自动机去了..... 当然,想我这种蒟蒻就只能膜拜机房里的各位大牛了.... 不管怎么说,我们来看一下这道很厉害的DP. 题目大意: 给定 N 个数, 请你将他们分成两组, 并使得两组的代价和最少 (每一组的代价定义为 ∑¦Hpi-1 - Hpi¦, pi-1 < pi) 我考场上只想到了 20 分的DP:令 f[i][j][k]  表示 考虑前 i 个 两组结尾分别为 j , k  时的最优值. 考试后,大牛就给了我一个

HDU5262 15年百度之星复赛1005 最强密码(神奇的dp)(好题)

Problem Description 由于近来密码库被盗的现象层出不穷,度度熊决定为自己的账号找一个最强密码.在研究了密码库很久之后,它总结出了一个规律:密码库中的所有密码都是一个"密码生成串"的子序列(某个序列的子序列是从最初序列通过去除某些元素但不破坏余下元素的相对位置(在前或在后)而形成的新序列). 经过强大的计算集群夜以继日的工作,度度熊得到了这个"密码生成串".现在它希望找到一个"最强密码",不是这个"密码生成串"

hdu 5303 Delicious Apples(dp)

题意:一个长为L的圈种上n颗树,每棵树的坐标为xi,结了ai个苹果,用大小为k的篮子把所有苹果装回来,问最少走多少路 解:被神奇的dp教做人了(其实我比较水,本来以为左边贪心一下,右边贪心一下在最后转一圈就搞定的水题=-=) #include <stdio.h> #include <string.h> #include <algorithm> #define ll __int64 #define MIN(a,b) ((a)<(b)?(a):(b)) const i

bzoj 2660: [Beijing wc2012]最多的方案【dp】

有点神奇的dp 首先注意到任意一个数都能被表示成若干个斐波那契数的和的形式 先求出n可以字典序最大的表示 设f[i][0/1]表示第i个斐波那契数选或者不选 如果当前数不选,那就选比他小的两个数,否则,需要不选比他小的两个数(连续的影响) #include<iostream> #include<cstdio> using namespace std; const int N=105; long long n,a[N],s[N],top,f[N][2]; int main() { s

【SPOJ -NSUBSTR】Substrings 【后缀自动机+dp】

题意 给出一个字符串,要你找出所有长度的子串分别的最多出现次数. 分析 我们建出后缀自动机,然后预处理出每个状态的cnt,cnt[u]指的是u这个状态的right集合大小.我们设f[len]为长度为len的子串的最多出现次数.我们对于自动机的每个状态都更新f,f[st[u].len]=max(f[st[u].len],cnt[u]).然后这样更新完以后,可以神奇的dp一下.f[len]=max(f[len],f[len+1]).想想为什么? 1 #include <cstdio> 2 #inc

【bzoj1222】[HNOI2001]产品加工

Description 某加工厂有A.B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成.由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时间会不同,若同时由两台机器共同进行加工,所完成任务又会不同.某一天,加工厂接到n个产品加工的任务,每个任务的工作量不尽一样.你的任务就是:已知每个任务在A机器上加工所需的时间t1, B机器上加工所需的时间t2及由两台机器共同加工所需的时间t3,请你合理安排任务的调度顺序,使完成所有n个任务的总时间最少. Input 输入共

3892: [Usaco2014 Dec]Marathon

3892: [Usaco2014 Dec]Marathon Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 169  Solved: 100[Submit][Status][Discuss] Description Unhappy with the poor health of his cows, Farmer John enrolls them in an assortment of different physical fitness acti

[HAOI2017模拟]囚人的旋律

没有传送门辣. 神奇的DP题. 首先看到这道题第一眼应该想到正解不是在图上搞,肯定要把原图转化成序列. 根据逆序对的性质.每个点和标号大于他的点连边的点,其权值必定要小于该点,而没和他连边的且标号大于他的点,权值也必定大于他. 根据这个,我们就可以递增的枚举标号,每次判定该点和几个标号大于他的点连右边,即确定在未被选的权值里有多少个点比他小. 然后就可以确定当前点的标号了. 这样就成功的把原图转化成了序列. 接下来考虑在序列上做DP. 很显然,如果选中的一些点是满足要求的.必然要满足其构成一个上

序列中的交换问题

一.逆序对系列问题 题目:http://poj.org/problem?id=1804 题意:给定一个序列a[],每次只允许交换相邻两个数,最少要交换多少次才能把它变成非递降序列. 求逆序对的裸题. 如果我们交换相邻两个数,我们逆序对的个数只能是+1或-1 我们现在需要得到一个非递减数列,即消去所有逆序对, 而我们需要最少交换次数,即统计原数组中逆序对个数. 对于一个序列中,有Ai>Aj,i<j的两个元素,我们把这个二元组称为逆序对 有常见的三种方法求逆序对 1.n^2的冒泡 2.树状数组 可