【20181027T3】山河令【DP套DP】
【错解】
一眼DP
哎好像能删成奇形怪状的
弃疗,主要是没时间了
【正解】
神仙DP
明显先设\(f(i,j)\)表示把\([i,j]\) 取完的最小代价
然后发现转移不了,因为可以拿很多块
但是我们发现最后一次操作是可以确定的
那我们再设\(g(i,j,x,y)\)表示\([i,j]\)取走一部分,使得剩下的最小值为x,最大值为y的最小代价
为了方便,我们假装j没有取
这样就可以花费\(a+b \times (y-x)^2\)把这部分取完
\(g(i,k,x,y)\)可以枚举前面的\((i,j)\),\([j+1,k-1]\)暴力\(f\)转移
对于\(f(i,j)\),我们枚举最后一次取的右端点k,前面用\(g(i,k,x,y)+a+b \times (y-x)^2\),后面用\(f(k+1,j)\)
懒得写方程了,具体看代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define MAXN 55
#define INF 0x3f3f3f3f
using namespace std;
inline void update(int &x,int y)
{
x=(x<y? x:y);
}
int f[MAXN][MAXN],g[MAXN][MAXN][MAXN][MAXN];
int w[MAXN],t[MAXN];
int n,a,b;
int main()
{
scanf("%d%d%d",&n,&a,&b);
for (int i=1;i<=n;i++)
scanf("%d",&w[i]);
for (int i=1;i<=n;i++)
t[i]=w[i];
sort(t+1,t+n+1);
int m=unique(t+1,t+n+1)-t-1;
for (int i=1;i<=n;i++)
w[i]=lower_bound(t+1,t+m+1,w[i])-t;
memset(f,0x3f,sizeof(f));
memset(g,0x3f,sizeof(g));
for (int i=1;i<=n;i++)
g[i][i][w[i]][w[i]]=f[i+1][i]=0;
f[1][0]=0;
for (int i=n;i>=1;i--)
for (int j=i;j<=n;j++)
for (int x=1;x<=m;x++)
for (int y=x;y<=m;y++)
{
if (g[i][j][x][y]==INF) continue;
for (int k=j+1;k<=n;k++)
update(g[i][k][min(x,w[k])][max(y,w[k])],g[i][j][x][y]+f[j+1][k-1]);
for (int k=j;k<=n;k++)
update(f[i][k],g[i][j][x][y]+f[j+1][k]+a+b*(t[y]-t[x])*(t[y]-t[x]));
}
printf("%d\n",f[1][n]);
return 0;
}
【20181027T3】山河令【DP套DP】的更多相关文章
- 【BZOJ3864】Hero meet devil DP套DP
[BZOJ3864]Hero meet devil Description There is an old country and the king fell in love with a devil ...
- bzoj 3864: Hero meet devil [dp套dp]
3864: Hero meet devil 题意: 给你一个只由AGCT组成的字符串S (|S| ≤ 15),对于每个0 ≤ .. ≤ |S|,问 有多少个只由AGCT组成的长度为m(1 ≤ m ≤ ...
- [模板] dp套dp && bzoj5336: [TJOI2018]party
Description Problem 5336. -- [TJOI2018]party Solution 神奇的dp套dp... 考虑lcs的转移方程: \[ lcs[i][j]=\begin{ca ...
- luogu 4158 粉刷匠 dp套dp
dp套dp 每个木板是个递推的dp,外部是个分组背包 #include<bits/stdc++.h> #define rep(i,x,y) for(register int i=x;i&l ...
- DP套DP
DP套DP,就是将内层DP的结果作为外层DP的状态进行DP的方法. [BZOJ3864]Hero meet devil 对做LCS的DP数组差分后状压,预处理出转移数组,然后直接转移即可. tr[S] ...
- Codeforces 372B Counting Rectangles is Fun:dp套dp
题目链接:http://codeforces.com/problemset/problem/372/B 题意: 给你一个n*m的01矩阵(1 <= n,m <= 40). 然后有t组询问( ...
- codeforces 979E(dp套dp)
题意: 有n个点,编号为1~n.有的点颜色是黑色,有的点颜色是白色,有的点的颜色待涂.你还可以连一些边,但这些边一定是从小编号连到大编号的点. 对于一个确定的图,我们去统计有多少条路径满足“该路径经过 ...
- dp 套 dp扯谈
1.[扯谈概念] \(dp\) 套 \(dp\) 其实也就是 \(dp\) . 这里就定义下面两个概念: 内层 \(dp\) 表示的是被套在里面的那个 \(dp\) 外层 \(dp\) 表示的是最外面 ...
- P4590-[TJOI2018]游园会【dp套dp】
正题 题目链接:https://www.luogu.com.cn/problem/P4590 题目大意 给出一个长度为\(m\)的字符串\(s\). 对于每个\(k\in[0,m]\)求有多少个长度为 ...
- 洛谷 P5279 - [ZJOI2019]麻将(dp 套 dp)
洛谷题面传送门 一道 dp 套 dp 的 immortal tea 首先考虑如何判断一套牌是否已经胡牌了,考虑 \(dp\).我们考虑将所有牌按权值大小从大到小排成一列,那我们设 \(dp_ ...
随机推荐
- struts获得参数(属性,对象,模型驱动)
0. strutsMVC
- 使用linux下的C操作SQLLITE
from: http://baike.so.com/doc/1529694.html 由于Linux下侧重使用命令,没有win的操作容易上手,所以在测试C操作SQLITE时会比较容易出现错误,给大家做 ...
- (转)USB的描述符及各种描述符之间的依赖关系
全文链接:http://justmei.blog.163.com/blog/static/11609985320102421659260/?latestBlog 1 推荐 [原创] USB入门系列之七 ...
- 图解IIS8上解决ASP.Net第一次访问慢的处理
- 无状态Http
无状态的根本原因 浏览器和服务器使用socket通信,服务器将请求结果返回给浏览器后,会关闭当前socket连接.而且服务器会在处理页面完毕后销毁页面对象. 应用层面的原因 浏览器和服务器之间通信都遵 ...
- Homestead在windows7 下的搭建
遇到的问题有 1.Homestead 的版本问题,教程git版本是 v5,最新是v7的,如果用最新,就要求vagrant的版本是 2.0的: 2.启动homestead后,出现 No input fi ...
- 理解 pkg-config 工具(linux编译辅助工具)
转:http://www.jb51.net/LINUXjishu/86519.html 你在 Unix 或 Linux 下开发过软件吗?写完一个程序,编译运行完全正常,在你本机上工作得好好的,你放到源 ...
- Hadoop(八)Hadoop数据压缩与企业级优化
一 Hadoop数据压缩 1.1 概述 压缩技术能够有效减少底层存储系统(HDFS)读写字节数.压缩提高了网络带宽和磁盘空间的效率.在Hadood下,尤其是数据规模很大和工作负载密集的情况下,使用数据 ...
- gym101431B
以此纪念我都快忘了的后缀自动机(捂脸) 不过这题有两种做法: 用后缀自动机,先把原串再接遍中间加入特殊连接字符再把原串反接两遍,对这个新构造出的串做后缀自动机.(或者直接建立广义后缀自动机) 下面只要 ...
- 《构建高性能 Web站点》笔记
书名:构建高性能Web站点 出版社: 电子工业出版社 ISBN:9787121170935 一 绪论 等待的时间: (1) 数据在网络上的传输时间 (2) 站点服务器处理请求并生成回应数据的时间 ( ...