HDU 4283 You Are the One (12年天津 区间DP)
题意:有一个队列,每个人有一个愤怒值a[i],如果他是第k个上场,不开心指数就为(k-1)*a[i]。但是边上有一个小黑屋(其实就是个堆栈),可以一定程度上调整上场程序
思路:枚举区间和每个人第几个上场
dp[i][j]:[i,j]的最小分数
假设区间[i,j],第i个人第k个出场(1<=k<=j-i+1),如果第i个人第k个出场,则他之前有k-1个人出场:dp[i+1][i+k-1](应为枚举第i个人,所以从i+1开始)
然后后面剩的人又是一个子区间:dp[k+i][j] 当然在这之前有k个人先出场所以还要加上(sum[j]-sum[i+k-1])*k的值;sum[i]表示i之前所有不开心值的和
最后加上第i个人出场前的不开心值a[i]*(k-1)
dp[i][j]=min(dp[i][j],dp[i+1][k+i-1]+dp[k+i][j]+a[i]*(k-1)+(sum[j]-sum[k+i-1])*k);
//#pragma comment(linker, "/STACK:167772160")//手动扩栈~~~~hdu 用c++交
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <queue>
#include <stack>
#include <cmath>
#include <set>
#include <algorithm>
#include <vector>
#include <map>
// #include<malloc.h>
using namespace std;
#define clc(a,b) memset(a,b,sizeof(a))
#define LL long long
const int inf = 0x3f3f3f3f;
const double eps = 1e-;
// const double pi = acos(-1);
const LL MOD = ;
const int N = ; // inline int r(){
// int x=0,f=1;char ch=getchar();
// while(ch>'9'||ch<'0'){if(ch=='-') f=-1;ch=getchar();}
// while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
// return x*f;
// }
int a[N];
int dp[N][N];
int sum[N]; int main(){
int T,n;
int cas=;
scanf("%d",&T);
while(T--){
scanf("%d",&n);
sum[]=;
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
sum[i]=sum[i-]+a[i];
} for(int i=;i<=n;i++){
for(int j=i+;j<=n;j++){
dp[i][j]=inf;
}
dp[i][i]=;
} for(int len=;len<n;len++){
for(int i=;i<n;i++){
int j=len+i;
for(int k=;k<=j-i+;k++){
dp[i][j]=min(dp[i][j],dp[i+][k+i-]+dp[k+i][j]+a[i]*(k-)+(sum[j]-sum[k+i-])*k);
}
}
} printf("Case #%d: %d\n",++cas,dp[][n]);
}
return ;
}
HDU 4283 You Are the One (12年天津 区间DP)的更多相关文章
- [hdu contest 2019-07-29] Azshara's deep sea 计算几何 动态规划 区间dp 凸包 graham扫描法
		今天hdu的比赛的第一题,凸包+区间dp. 给出n个点m个圆,n<400,m<100,要求找出凸包然后给凸包上的点连线,连线的两个点不能(在凸包上)相邻,连线不能与圆相交或相切,连线不能相 ... 
- HDU 4433 locker(12年天津,DP)
		4576 njczy2010 C Accepted 860 KB 140 ms G++ 2063 B 2014-10-16 09:51:19 哎,为啥1000*100*100的复杂度的dp就不敢敲了呢 ... 
- hdu 4283 区间dp
		You Are the One Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ... 
- HDU 4283 You Are the One(区间DP(最优出栈顺序))
		题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4283 题目大意:有一群屌丝,每个屌丝有个屌丝值,如果他第K个上场,屌丝值就为a[i]*(k-1),通过 ... 
- 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 1565&1569 方格取数系列(状压DP或者最大流)
		方格取数(2) Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ... 
- HDU  4293---Groups(区间DP)
		题目链接 http://acm.split.hdu.edu.cn/showproblem.php?pid=4293 Problem Description After the regional con ... 
- hdu 4597 + uva 10891(一类区间dp)
		题目链接:http://vjudge.net/problem/viewProblem.action?id=19461 思路:一类经典的博弈类区间dp,我们令dp[l][r]表示玩家A从区间[l, r] ... 
- HDU 5115 Dire Wolf 区间dp
		题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5115 Dire Wolf Time Limit: 5000/5000 MS (Java/Others ... 
随机推荐
- 如何循环遍历document.querySelectorAll()方法返回的结果
			使用JavaScript的forEach方法,我们可以轻松的循环一个数组,但如果你认为document.querySelectorAll()方法返回的应该是个数组,而使用forEach循环它: /* ... 
- JS中遍历普通数组和字典数组的区别
			// 普通数组 var intArray = new Array(); intArray[0] = "第一个"; intArray[1] = "第二个"; fo ... 
- DeepID人脸识别算法之三代(转)
			DeepID人脸识别算法之三代 转载请注明:http://blog.csdn.net/stdcoutzyx/article/details/42091205 DeepID,目前最强人脸识别算法,已经三 ... 
- C/C++ 框架,类库,资源集合
			很棒的 C/C++ 框架,类库,资源集合. Awesome C/C++ Standard Libraries Frameworks Artificial Intelligence Asynchrono ... 
- 【leetcode】Longest Common Prefix  (easy)
			Write a function to find the longest common prefix string amongst an array of strings. 思路:找最长公共前缀 常规 ... 
- cf 148D 概率DP
			题意:原来袋子里有w只白鼠和b只黑鼠龙和王妃轮流从袋子里抓老鼠.谁先抓到白色老师谁就赢.王妃每次抓一只老鼠,龙每次抓完一只老鼠之后会有一只老鼠跑出来.每次抓老鼠和跑出来的老鼠都是随机的.如果两个人都没 ... 
- jmeter 测试java协议经验总结
			对java协议的良好支持,是jmeter比loadrunner优秀的地方,但是坑也不少,本文将相关点都整理下来备忘 一. 依赖的jar包 使用IDE开发jemter java协议脚本时,需要导入以下几 ... 
- 多线程(一)NSThread
			iOS中多线程的实现方案: 技术 语言 线程生命周期 使用频率 pthread C 程序员自行管理 几乎不用 NSthread OC 程序员自行管理 偶尔使用 GCD C 自动管理 经常使用 NSOp ... 
- JS作用域与闭包--实例
			<script> "use strict" //函数作用域 function func(){ var arr = [1,3,5,7,9]; var sum = 0; f ... 
- [itint5]区间相交
			http://www.itint5.com/oj/#14 要记录原来的索引,所以用了额外的空间,新生成一个结构.如果要省空间,可以用指针来排序,最后拿指针减去索引0的位置就是index,见:http: ... 
