loj2292 「THUSC 2016」成绩单
我是傻逼,我啥也不会,这是我抄的。
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int n, a, b, w[55], tot, dy[1005], g[55][55], f[55][55][55][55], va[55];
bool isAll(int i, int j, int l, int r){
for(int k=i; k<=j; k++)
if(w[k]<l || w[k]>r)
return false;
return true;
}
bool isAny(int i, int j, int l, int r){
for(int k=i; k<=j; k++)
if(w[k]>=l && w[k]<=r)
return true;
return false;
}
int F(int, int, int, int);
int G(int, int);
int F(int i, int j, int l, int r){
int &re=f[i][j][l][r];
if(re!=-1) return re;
re = 0x3f3f3f3f;
if(isAll(i, j, l, r)){
re = 0;
return 0;
}
if(!isAny(i, j, l, r)){
re = G(i, j);
return re;
}
for(int k=i; k<j; k++){
re = min(re, F(i,k,l,r)+F(k+1,j,l,r));
re = min(re, G(i,k)+F(k+1,j,l,r));
}
return re;
}
int G(int l, int r){
int &re=g[l][r];
if(re!=-1) return re;
re = 0x3f3f3f3f;
for(int i=1; i<=tot; i++)
for(int j=i; j<=tot; j++)
if(isAny(l, r, i, j)){
int u=va[j], v=va[i];
re = min(re, F(l, r, i, j) + a + b * (v - u) * (v - u));
}
return re;
}
int main(){
cin>>n>>a>>b;
for(int i=1; i<=n; i++){
scanf("%d", &w[i]);
dy[w[i]] = 1;
}
for(int i=1; i<=1000; i++)
if(dy[i]){
va[++tot] = i;
dy[i] = tot;
}
for(int i=1; i<=n; i++)
w[i] = dy[w[i]];
memset(f, -1, sizeof(f));
memset(g, -1, sizeof(g));
cout<<G(1, n)<<endl;
return 0;
}
loj2292 「THUSC 2016」成绩单的更多相关文章
- 【LOJ】#2292. 「THUSC 2016」成绩单
题解 神仙dp啊><(也有可能是我菜) 我们发现,想要拿一段区间的话,只和这个区间的最大值和最小值有关系,那么我们考虑,如果一个区间[l,r]我们拿走了一些数后,使它的最小值是a,最大值是 ...
- 「THUSC 2016」成绩单 & 方块消除 (区间dp)
成绩单 $f[l][r][mi][mx]$表示从l到r发到还没发的部分的最小值为mi最大值为mx时的最小代价. $f[l][r][0][0]$表示从l到r全部发完的代价. 自己写的无脑dp,枚举中转点 ...
- LOJ 2292 「THUSC 2016」成绩单——区间DP
题目:https://loj.ac/problem/2292 直接 DP 很难做,主要是有那种 “一个区间内部有很多个别的区间” 的情况. 自己想了一番枚举 max-min 的最大限制,然后在该基础上 ...
- 2018.10.27 loj#2292. 「THUSC 2016」成绩单(区间dp)
传送门 g[i][j][k][l]g[i][j][k][l]g[i][j][k][l]表示将区间l,rl,rl,r变成最小值等于kkk,最大值等于lll时的花费的最优值. f[i][j]f[i][j] ...
- loj 2292「THUSC 2016」成绩单
loj 看着就很区间dp,所以考虑求\(f_{i,j}\)表示区间\([i,j]\)的答案.注意到贡献答案的方式是每次选一个连续段,拿走后剩下的段拼起来继续段,所以转移就考虑从最后一次选的方法转移过来 ...
- 【LOJ】#2291. 「THUSC 2016」补退选
题解 在trie树上开vector记录一下这个前缀出现次数第一次达到某个值的下标,以及记录一下现在这个前缀有多少个 为什么thusc有那么水的题--是为了防我这种cai ji爆零么= = 代码 #in ...
- loj2291 「THUSC 2016」补退选
ref pkusc 快到了,做点 thusc 的题涨涨 rp-- #include <iostream> #include <cstring> #include <cst ...
- LOJ 2991 「THUSC 2016」补退选——trie+线段树合并或vector
题目:https://loj.ac/problem/2291 想了线段树合并的做法.就是用线段树维护 trie 的每个点在各种时间的操作. 然后线段树合并一番,线段树维护前缀最大值,就是维护最大子段和 ...
- LOJ#2799. 「CCC 2016」生命之环
题意 给你一个 \(n\) 个 \(\rm 01\) 组成的环,每次操作之后每个位置为1当且仅当他的左右恰好有1个1.输出进行 \(T\) 次操作之后的环. \(n\leq 10^5, T\leq 1 ...
随机推荐
- Android-->RxJava2更新体验
截止日前最新版2017-3-15: RxJava compile ‘io.reactivex:rxjava:’ compile ‘io.reactivex:rxandroid:’ RxJava2 co ...
- 关于HTML中时间格式以及查询数据库的问题
1.默认时间格式,加入属性dateFormate="yyyy-MM-dd" 2.设置默认值,value="2017-6-22" 3.在JavaScript中将获 ...
- JFinal常量配置学习笔记
在继承 JFinalConfig 类时,需要 实现 /** * Config constant */ public abstract void configConstant(Constants me) ...
- Yii2 Working with Relational Data at ActiveDataProvider
Yii2 Working with Relational Data at ActiveDataProvider namespace common\models; use Yii; use yii\ba ...
- 修复SQL中的孤立账户
EXEC sys.sp_change_users_login 'AUTO_FIX','登录名',NULL,'登录密码'
- 景安快云VPS挂载数据盘至指定目录 使得系统与数据分离
如果我们细心的用户会发现购买景安快云VPS主机后,通过df检测看到系统盘大小与我们购买时候给的不一样,这个是很正常的事情.一般VPS主机商会通过给予系统盘和数据盘一并的数据磁盘给我们,但是默认我们看到 ...
- 远程登录事件ID
4672.4624 删除本机记录 HKEY_CURRENT_USER \ Software\Microsoft \ Terminal ServerClientDefault: 删除“此电脑\文档”下 ...
- java Vamei快速教程13 String类
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 之前的Java基础系列中讨论了Java最核心的概念,特别是面向对象的基础.在Jav ...
- 一个普通 iOS 码农的几个小项目相关知识点总结
题记:在开发的路途上,有的人走的很深很远,而对于停留在初级阶段的我来说,还要学的.经历的还有很多... list sqlite 数据库中,当把表里的数据都清空时,下次插入的数据的 id 主键不会从 0 ...
- Extjs4.1+desktop+SSH2 定义程序入口
app.js定义程序入口: MainController.js: 加载控制器: 外部组件引用入口loader.js 时间组件 静态变量组件: 引入comm.js index.jsp 验证打印 comm ...