bzoj1563】的更多相关文章

bzoj1563 思路 首先考虑\(n^2\)的暴力dp,用sum[i]表示前i句话的长度总和.f[i]表示前i句话最小的不协调度之和.转移的时候考虑枚举前面的每个点,找到转移的最优秀的那个点. 然后优化这个暴力.用一个队列存下当前个点之后的点中,哪个区间是从当前点转移更优秀(称为这个点的控制范围).然后如果当前枚举的位置已经超过队首控制范围.那么队首就可以弹出了.加入新点时,如果队尾控制范围的最左侧也是从当前点转移更优秀,那么队尾就可以弹出了.然后二分当前点与队尾点控制范围的分界点.并且将当前…
目录 题目链接 题解 代码 题目链接 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…
题目链接 洛谷P1912[原题,需输出方案] BZOJ1563[无SPJ,只需输出结果] 题解 四边形不等式 什么是四边形不等式? 一个定义域在整数上的函数\(val(i,j)\),满足对\(\forall a \le b \le c \le d\)有 \[val(a,d) + val(b,c) \ge val(a,c) + val(b,d)\] 那么我们称函数\(val(i,j)\)满足四边形不等式 一般地,当我们需要证明一个函数\(val(i,j)\)满足四边形不等式时,只需证对于\(\fo…
模板题. 每个决策点都有一个作用区间,后来的决策点可能会比先前的优.于是对于每个决策点二分到它会比谁在什么时候更优,得到新的决策点集合与区间. #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…
P<=10一开始是吓死我了 后来想到这就是一个经典的决策单调性解决1d1d动态规划的题目 像决策单调性完全可以打表找规律,这里有一篇严谨的证明https://www.byvoid.com/blog/noi-2009-poet 关于1d1d动归的优化可以看<1d1d动态规划优化初步> 注意可能会爆longlong,所以用extended计算 type node=record l,r,x:longint; end; ..] of node; f:..] of extended; s:..]…
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[…