HDU 4283 You Are the One 【区间DP】
<题目链接>
题目大意:
有$n$个人排成一排要上台表演,每个人有一个屌丝值$pi$。第i个上台表演的人,他的不满意度为$(i-1)*p_i$。现在有一个类似于栈的黑屋子,你可以让某些人进入这个黑屋子。这些人要按照初始顺序来调整,对于排在最前面的人,有两种选择,让他直接上场或者先让他入栈。现在请你选择一个合理的上场顺序,使得最后总的不满意度最小。
解题分析:
因为是根据栈来调整上场顺序,所以将$p_i$大的人安排的尽可能靠前,这个贪心策略是错误的(很容易找到反例)。
考虑用区间DP,dp[l][r]表示区间[l,r]内的最小价值,再枚举第$i$个人的上场次序,同时dp进行状态的转移 $$dp[l][r]=min(dp[l][r],(k-l)*val[l]+dp[l+1][k]+dp[k+1][r]+(sum[r]-sum[k])*(k+1-l));$$详细题解见 >>>
记忆化搜索版
#include <bits/stdc++.h>
using namespace std; const int INF = 0x3f3f3f3f , N = ;
int n;
int dp[N][N],sum[N],val[N]; int DP(int l,int r){
if(l>=r)return ;
if(dp[l][r]!=-)return dp[l][r];
dp[l][r]=INF;
for(int k=l;k<=r;k++) //枚举第i个人是第几个上场的
dp[l][r]=min(dp[l][r],(k-l)*val[l]+DP(l+,k)+DP(k+,r)+(sum[r]-sum[k])*(k+-l)); //因为[k+1,r]的人的上场次序是处理的相对次序,所以这里要加上(sum[r]-sum[k])*(k+1-l)才能表示绝对次序造成的价值
return dp[l][r];
}
int main(){
int T,ncase=;cin>>T;
while(T--){
memset(dp,-,sizeof(dp));
cin>>n;sum[]=;
for(int i=;i<=n;i++){
scanf("%d",&val[i]);
sum[i]=sum[i-]+val[i];
}
printf("Case #%d: %d\n",++ncase,DP(,n));
}
}
普通区间DP
#include <bits/stdc++.h>
using namespace std; const int N = ;
int n,dp[N][N],val[N],sum[N]; int main(){
int T,ncase=;cin>>T;
while(T--){
scanf("%d",&n);
sum[]=;
for(int i=;i<=n;i++)
scanf("%d",&val[i]),sum[i]=sum[i-]+val[i];
memset(dp,,sizeof(dp)); //dp初始化
for(int i=;i<=n;i++)
for(int j=i+;j<=n;j++)dp[i][j]=1e9;
for(int len=;len<=n-;len++){
for(int l=;l<=n-len;l++){
int r=l+len;
for(int k=l;k<=r;k++)
dp[l][r]=min(dp[l][r],(k-l)*val[l]+dp[l+][k]+dp[k+][r]+(sum[r]-sum[k])*(k+-l)); //因为[k+1,r]的人的上场次序是处理的相对次序,所以这里要加上(sum[r]-sum[k])*(k+1-l)才能表示绝对次序造成的价值
}
}
printf("Case #%d: %d\n",++ncase,dp[][n]);
}
}
HDU 4283 You Are the One 【区间DP】的更多相关文章
- hdu 4283"You Are the One"(区间DP)
传送门 https://www.cnblogs.com/violet-acmer/p/9852294.html 题意: 有n个屌丝排成一排,每个屌丝都有一个不开心值a[ i ]( i=1,2,3,.. ...
- HDU 4283 You Are the One ——区间dp
参考了许多大佬 尤其是https://blog.csdn.net/woshi250hua/article/details/7973824这一篇 ,最后我再加一点我的见解. 大意是 给定一个序列,序列 ...
- hdu 4283 You Are the One 区间dp
You Are the One Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HDU 4283 (第k个出场 区间DP)
http://blog.csdn.net/acm_cxlove/article/details/7964594 http://www.tuicool.com/articles/jyaQ7n http: ...
- HDU 4283---You Are the One(区间DP)
题目链接 http://acm.split.hdu.edu.cn/showproblem.php?pid=4283 Problem Description The TV shows such as Y ...
- HDU 5900 QSC and Master (区间DP)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5900 题意:给出序列$A_{i}.key$和$A_{i}.value$,若当前相邻的两个数$A_{ ...
- HDU 5115 (杀狼,区间DP)
题意:你是一个战士现在面对,一群狼,每只狼都有一定的主动攻击力和附带攻击力.你杀死一只狼.你会受到这只狼的(主动攻击力+旁边两只狼的附带攻击力)这么多伤害~现在问你如何选择杀狼的顺序使的杀完所有狼时, ...
- hdu 4632 子字符串统计的区间dp
题意:查找这样的子回文字符串(未必连续,但是有从左向右的顺序)个数. 简单的区间dp,哎,以为很神奇的东西,其实也是dp,只是参数改为区间,没做过此类型的题,想不到用dp,以后就 知道了,若已经知道[ ...
- HDU 2517 / POJ 1191 棋盘分割 区间DP / 记忆化搜索
题目链接: 黑书 P116 HDU 2157 棋盘分割 POJ 1191 棋盘分割 分析: 枚举所有可能的切割方法. 但如果用递归的方法要加上记忆搜索, 不能会超时... 代码: #include& ...
- hdu 2476 (string painter) ( 字符串刷子 区间DP)
String painter Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
随机推荐
- 适配相关:viewpoint,@media,vw/vh,em/rem
从网易与淘宝的font-size思考前端设计稿与工作流: http://www.cnblogs.com/lyzg/p/4877277.html Rem布局的原理解析: https://yanhaiji ...
- [python]python3.7中文手册
https://pythoncaff.com/docs/tutorial/3.7.0
- python之路day04--列表的增删改查,嵌套、元组的嵌套、range、for循环嵌套
列表增删改查 增加 append li = ['taibai','zy','nvshen'] li.append('aa') print(li) #['taibai', 'zy', 'nvshen', ...
- FreeNAS-9.10虚拟机测试安装
虚拟机安装NreeNAS-9.10步骤 需求:网络监控磁盘要扩容 测试环境: CPU 内存 系统盘 共享盘 网卡 2核 2G 20G 20G 桥接 系统版本:FreeNAS-9.10 一.配置虚拟机 ...
- PHP-max_execution_time与fpm.request_terminate_timeout介绍
前段时间一位同事跟我说php脚本超时时间以fpm配置优先.经过自己测试后,其实不然,前面的观点只是在某些情况下成立. php脚本超时时间可以在php.ini的max_execution_time和fp ...
- openstack项目【day24】:keystone部署及操作
阅读目录 一 前言 二 版本信息 三 部署keystone 四 keystone操作 五 验证 六 创建脚本 七 keystone使用套路总结 一 前言 任何软件的部署都是没有技术含量的,任何就部署讲 ...
- ArcGis恢复初始设置(默认设置、出厂设置)的方法
警告:下面的操作涉及更改操作系统的重要组成部分.必要时,请咨询计算机系统专业人士. 重命名 ESRI 文件夹即对 ArcGIS 恢复出厂设置,因此必须重新安装当前安装的所有第三方工具.自定义脚本和自定 ...
- CSS 水平垂直居中的几种实现方法
前言 项目中经常碰到需要实现水平垂直居中的样式.下面就总结几种常用的方法 水平对齐+行高 [思路一]text-align + line-height实现单行文本水平垂直居中 <style> ...
- MyBatis集成到Spring时配置MapperScannerConfigurer出错
问题描述 在web项目中同时集成了spring mvc和mybatis. 将jdbc配置参数独立在外部配置文件中,然后通过<context:property-placeholder>引入. ...
- UML建工工具
本篇博文简单介绍一下自己在搜索UML建模工具的过程中收集到的一些信息. 如果想用中文的,可以考虑楚凡科技的Trufun Plato,不过最近好像没有怎么更新了. 很多前辈以前用的是Rational R ...