DP优化
_Ark
这个作者很懒,什么都没留下…
展开
-
NOI模拟赛 T3 计算 calculating (线段树优化DP)
先存下代码 CODE #include <bits/stdc++.h> using namespace std; const int MAXN = 500005; const int mod = 1000000009; inline void read(int &x) { int flg = 1; char ch; while(!isdigit(ch=getchar())) ...原创 2020-01-02 22:55:24 · 192 阅读 · 0 评论 -
CSP2019 D2T2 划分 (单调队列DP)
题目 洛谷传送门 题解 就是这道题搞我退役考场上写了n^2 64分,结果爆成8-12分。直接GG。 考场上想到正解的写法被自己否决了 题解传送门(看到这道送我退役的题目⑧太想写题解) 六行O(n2)O(n^2)O(n2)DP 888888分代码 for(int i = 1; i <= n; ++i) a[i] += a[i-1]; f[0] = d[0] = 0; for(int i ...原创 2019-11-30 14:43:33 · 377 阅读 · 0 评论 -
Codeforces Round #554 (Div. 2) F2. Neko Rules the Catniverse (Large Version) (矩阵快速幂 状压DP)
题意 有nnn个点,每个点只能走到编号在[1,min(n+m,1)][1,min(n+m,1)][1,min(n+m,1)]范围内的点。求路径长度恰好为kkk的简单路径(一个点最多走一次)数。 1≤n≤109,1≤m≤4,1≤k≤min(n,12)1\le n\le 10^9,1\le m\le 4,1\le k\le min(n,12)1≤n≤109,1≤m≤4,1≤k≤min(n,12) 分析...原创 2019-04-29 17:04:20 · 188 阅读 · 0 评论 -
BZOJ 3594: [Scoi2014]方伯伯的玉米田 (二维树状数组优化DP)
分析 首先每次增加的区间一定是[i,n][i,n][i,n]的形式.因为如果选择[i,j](j<n)[i,j](j<n)[i,j](j<n)肯定不如把后面的全部一起加111更优. 那么在前iii个位置用了jjj次操作的话,a[i]a[i]a[i]就变成了a[i]+ja[i]+ja[i]+j. 可以列出DP方程式.设f[i][j]f[i][j]f[i][j]表示前i...原创 2019-03-28 21:32:55 · 178 阅读 · 0 评论 -
省选模拟赛 Problem 3. count (矩阵快速幂优化DP)
Discription DarrellDarrellDarrell 在思考一道计算题。 给你一个尺寸为 1×N1 × N1×N 的长条,你可以在上面切很多刀,要求竖直地切并且且完后每块的长度都是整数。 在这种限制下其实只有 N−1N − 1N−1 个位置可以切。 对于一种切的方案,假如切完后每块的宽度分别是:w1,w2,w3,...,wk(∑wi=N)w1, w2, w3, ..., wk(\su...原创 2019-04-05 21:09:01 · 213 阅读 · 0 评论 -
Newnode's NOI(P?)模拟赛 第二题 dp决策单调优化
其实直接暴力O(n3)DP+O2O(n^3)DP+O_2O(n3)DP+O2优化能过… CODE 先来个O(n3)O(n^3)O(n3)暴力DP(开了O2O_2O2)100分代码(极限数据0.5s0.5s0.5s) #include <cstdio> #include <cstring> #include <algorithm> using namespa...原创 2019-03-27 16:50:35 · 544 阅读 · 0 评论 -
HDU 3824/ BZOJ 3963 [WF2011]MachineWorks (斜率优化DP+CDQ分治维护凸包)
题面 BZOJ传送门(中文题面但是权限题) HDU传送门(英文题面) 分析 定义f[i]f[i]f[i]表示在iii时间(离散化之后)卖出手上的机器的最大收益.转移方程式比较好写f[i]=max{f[j]−p[j]+r[j]+(d[i]−d[j]−1)∗g[j]}f[i]=max\{f[j]-p[j]+r[j]+(d[i]-d[j]-1)*g[j]\}f[i]=max{f[j]−p[j]+r[j...原创 2019-03-11 10:57:20 · 282 阅读 · 0 评论 -
斜率优化板题 HDU2829 Lawrence
题目大意:给定一个长度为nnn的序列,至多将序列分成m+1m+1m+1段,每段序列都有权值,权值为序列内两个数两两相乘之和。求序列权值和最小为多少? 数据规模:m&amp;amp;lt;=n&amp;amp;lt;=1000.m&amp;amp;lt;=n&amp;amp;lt;=1000.m&amp;lt;=n&amp;lt;=1000. 分析:令w[i,j]w[i,j]w[i,j]表示区间[i,j][i,j原创 2018-11-09 11:57:42 · 189 阅读 · 0 评论 -
斜率优化板题 HDU 3507 Print Article
题目大意:输出N个数字a[N],输出的时候可以连续的输出,每连续输出一串,它的费用是 “这串数字和的平方加上一个常数M”。n&amp;amp;lt;=500000 我们设dp[i]表示输出到i的时候最少的花费,sum[i]表示从a[1]到a[i]的数字和。于是方程就是: dp[i]=dp[j]+M+(sum[i]-sum[j])^2; 很显然这个是一个二维的。题目的数字有500000个,不用试了,二维铁定超时了...原创 2018-11-09 09:42:40 · 201 阅读 · 0 评论 -
完美字符子串 单调队列预处理+DP线段树优化
题意:有一个长度为n的字符串,每一位只会是p或j。你需要取出一个子串S(注意不是子序列),使得该子串不管是从左往右还是从右往左取,都保证每时每刻已取出的p的个数不小于j的个数。如果你的子串是最长的,那么称之为完美字符子串。求完美字符子串的长度。 乍一看比较水,然而差点没想出来。 考虑处理前缀和,p+1 j-1 那么对于一段区间[l,r]只要每一个i∈[l,r]满足presum[i]-presu...原创 2018-08-23 21:32:51 · 295 阅读 · 1 评论