题意:

有n个人排队,第i个入场的人x的不愉快度是$D_x*(i-1)$,现在给你n个人在队伍中的位置,

你可以用一个栈让一个人后面的人先进入,问最小的不愉快度是多少。

解法:

考虑注意到用栈调整次序时,如果$x_1$从$l$调整到了$r$的位置,那么如果有$x_2$的位置在$l$,

$r$之间那么一定要满足$l<l_2<=r_2<r$。

这样考虑dp:

$f(i,j)$表示i到j最大可以通过调整减小多少的不愉快度,这样就可以dp了。

(注意在转移不交换的情况下$f(i,j) = max \{ f(i+1,j), f(i,j-1) \}$ 不正确,

因为这样求出来的是一个一个大区间套着小区间的答案,不能表示两个区间相互独立的情况,

应该是$f(i,j) = max \{ f(i,k)+f(k+1,j) \}$)

时间复杂度$O(n^3)$。

 #include <iostream>
#include <cstdio>
#include <cstring> #define N 110 using namespace std; int n,ans;
int D[N],f[N][N],S[N]; int main()
{
int T,Te=;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
S[]=;
ans=;
for(int i=;i<=n;i++)
{
scanf("%d",&D[i]);
S[i]=S[i-]+D[i];
ans+=(i-)*D[i];
}
for(int i=;i<=n;i++) f[i][i]=;
for(int d=;d<=n;d++)
{
for(int i=;i<=n-d+;i++)
{
int j=i+d-;
f[i][j]=;
for(int k=i;k<j;k++)
f[i][j] = max(f[i][j], f[i][k]+f[k+][j]);
f[i][j] = max(f[i][j], f[i+][j]+S[j]-S[i]-D[i]*(j-i));
}
}
printf("Case #%d: %d\n",++Te,ans-f[][n]);
}
return ;
}

随机推荐

  1. mysql truncate table命令使用总结

    truncate使用注意 由于上过truncate table a_table命令一次当,将教训记录下来,以示警戒!     mysql truncate table a_table命令受影响结果说明 ...

  2. Python生成器定义

    通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素 ...

  3. Class doesn&#39;t implement Cloneable之怪象

    1. 报错: -20 ::): threadid=: thread exiting with uncaught exception (group=0x4001d400) -20 ::): FATAL  ...

  4. kubernetes故障现场一之Orphaned pod

    系列目录 问题描述:周五写字楼整体停电,周一再来的时候发现很多pod的状态都是Terminating,经排查是因为测试环境kubernetes集群中的有些节点是PC机,停电后需要手动开机才能起来.起来 ...

  5. 分享一个小工具:Excel表高速转换成JSON字符串

    在游戏项目中一般都须要由策划制作大量的游戏内容,当中非常大一部分是使用Excel表来制作的.于是程序就须要把Excel文件转换成程序方便读取的格式. 之前项目使用的Excel表导入工具都是通过Offi ...

  6. activity fragment 转场动画

    http://www.cnblogs.com/avenwu/p/3372736.html v4 fragment fragmentTransaction.setCustomAnimations(R.a ...

  7. tomcat部署web应用的4种方法以及部署多个应用

    原文: tomcat部署web应用的4种方法 在Tomcat中有四种部署Web应用的方式,简要的概括分别是: (1)利用Tomcat自动部署 (2)利用控制台进行部署 (3)增加自定义的Web部署文件 ...

  8. ElasticSearch(一)什么是全文检索?

    全文检索 全文检索,即倒排索引.

  9. HttpClient访问网络

    HttpClient项目时Apache提供用于访问网络的类,对访问网络的方法进行了封装.在HttpURlConnection类中的输入输出操作,统一封装成HttpGet.HttpPost.HttpRe ...

  10. C++设计模式实现--策略(Strategy)模式

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/L_Andy/article/details/30489331 一. 举例说明 曾经做了一个程序,程序 ...