bzoj1563: [NOI2009]诗人小G】的更多相关文章

目录 题目链接 题解 代码 题目链接 bzoj1563: [NOI2009]诗人小G 题解 \(n^2\) 的dp长这样 \(f_i = min(f_j + (sum_i - sum_j - 1 - L)^P)\) 设\(w_{ij} = (sum_i - sum_j - 1 - L)^P\) 那么化成1D1D的标准形式 $ f_i = min(f_j + w_{i,j}) $ 发现w满足四边形不等式 证明可以看这里 https://www.byvoid.com/zhs/blog/noi-200…
模板题. 每个决策点都有一个作用区间,后来的决策点可能会比先前的优.于是对于每个决策点二分到它会比谁在什么时候更优,得到新的决策点集合与区间. #include<cstdio> #include<algorithm> #include<cstring> #define rep(i,l,r) for (int i=(l); i<=(r); i++) typedef long double ll; using namespace std; ; const ll MAX…
Description Input Output 对于每组数据,若最小的不协调度不超过1018,则第一行一个数表示不协调度若最小的不协调度超过1018,则输出"Too hard to arrange"(不包含引号).每个输出后面加"--------------------" Sample Input 4 4 9 3 brysj, hhrhl. yqqlm, gsycl. 4 9 2 brysj, hhrhl. yqqlm, gsycl. 1 1005 6 poet…
设f[i]为前i行的最小不协调度,转移枚举这一行从哪开始,显然有f[i]=min{f[j]+abs(s[i]-s[j]+i-j-1-m)p}.大胆猜想有决策单调性就好了.证明看起来很麻烦,从略.注意需要全程long double. #include<bits/stdc++.h> using namespace std; int read() { ,f=;char c=getchar(); ;c=getchar();} )+(x<<)+(c^),c=getchar(); return…
传送门 决策单调性优化dp板子题. 感觉队列的写法比栈好写. 所谓决策单调性优化就是每次状态转移的决策都是在向前单调递增的. 所以我们用一个记录三元组(l,r,id)(l,r,id)(l,r,id)的队列来维护,表示在(l,r)(l,r)(l,r)这个区间当前的决策都是ididid,然后在每次求决策点的时候弹一下队头,求出当前解之后我们更新一下队尾就行了. 代码: #include<bits/stdc++.h> #define N 100005 #define ld long double u…
Description Input Output 对于每组数据,若最小的不协调度不超过1018,则第一行一个数表示不协调度若最小的不协调度超过1018,则输出"Too hard to arrange"(不包含引号).每个输出后面加"--------------------" Sample Input 4 4 9 3 brysj, hhrhl. yqqlm, gsycl. 4 9 2 brysj, hhrhl. yqqlm, gsycl. 1 1005 6 poet…
LINK 因为是图片题就懒得挂了 简要题意:有n个串,拼接两个串需要加一个空格,给你l和p,问你拼接后每个串的总长减l的绝对值的p次方的最小值 首先打表发现一下这题是决策单调的对于所有数据都成立就当他一定成立了 然后网上有神仙用四边形不等式证明了这个东西LINK 我就懒得不会证明了 然后考虑用一个双向的队列维护出每个决策点对应的单调区间 然后保证所有区间一定是连续的 就构成了所有dp的转移区间 其实和bzoj2216非常像 代码都差不多,直接维护就可以了 最后上DP式子: dp[i] = dp[…
题意 题目链接 Sol 很显然的一个dp方程 \(f_i = min(f_j + (sum_i - sum_j - 1 - L)^P)\) 其中\(sum_i = \sum_{j = 1}^i len_j + 1\) 这个东西显然是有决策单调性的. 单调队列优化一下 我好像已经做过三个这种类型的题了,而且转移的时候\(w\)中总是带个幂函数..interesting #include<bits/stdc++.h> #define chmax(a, b) (a = (a > b ? a :…
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1563 分析: 首先可得朴素的方程:f[i]=min{f[j]+|s[j]-j-s[i]-i-L+1|^P} j=0..i-1 这种1D/1D的动态规划要优化肯定只有决策单调性优化,打个表发现的确如此,然后就愉快的O(nlogn)了…
1563: [NOI2009]诗人小G https://lydsy.com/JudgeOnline/problem.php?id=1563 分析: 直接转移f[i]=f[j]+cost(i,j),cost(i,j)=(sum[i]-sum[j])p 然后有决策单调性,就可以二分+队列了.注意两个字符串之间还有一个空格,所以长度+1,很多字符串合起来后,总的长度还要-1,最后一个没空格. 证明?byvoid luogu输出方案,加上后一直过不了,g,nxt数组是输出方案的部分 代码: #inclu…