整理书本(book)

题目描述

小A想把他满屋子的书整理一下。书本分成若干堆。每一堆的书本都有质量w和价值V。小A的任务是将所有书合成一堆。因为小A认为合并i,j两堆的书所需要的力为w[i]-v[i]+w[j]-v[j]。合并后的书堆的质量和价值均为合并前两堆书的质量和价值的总和。也就是说,合并i,j两堆的书后,W=w[i]+w[j],V=v[i]+v[j]。合并只能在相邻两堆书本间进行。书本合并前后,位置不变。如果将1,2,3中的l,2进行合并,那么合并结果为3,3,再将3,3合并为6(1,2,3,6指质量)。请你帮他计算最少需要花费多少力气。

输入

第1行是一个整数n(2≤n≤400)。
第2~n+l行每行两个整数w和v(0<v<w<=1000)

输出

仅1行,只有一个整数,表示花费的最少力气。

样例输入

3
6 5
9 7
11 2

样例输出

15

提示

样例说明:先将前两堆合并,再将合并后的书堆与剩余的一堆合并。

分析:区间dp,简单改下石子归并那题就好;

代码:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <climits>
#include <cstring>
#include <string>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <vector>
#include <list>
#include <ext/rope>
#define rep(i,m,n) for(i=m;i<=n;i++)
#define rsp(it,s) for(set<int>::iterator it=s.begin();it!=s.end();it++)
#define vi vector<int>
#define pii pair<int,int>
#define mod 1000000007
#define inf 0x3f3f3f3f
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define ll long long
#define pi acos(-1.0)
const int maxn=1e3+;
const int dis[][]={{,},{-,},{,-},{,}};
using namespace std;
using namespace __gnu_cxx;
ll gcd(ll p,ll q){return q==?p:gcd(q,p%q);}
ll qpow(ll p,ll q){ll f=;while(q){if(q&)f=f*p;p=p*p;q>>=;}return f;}
int n,m,dp[maxn][maxn],a[maxn];
int main()
{
int i,j,k,t;
scanf("%d",&n);
rep(i,,n)scanf("%d%d",&a[i],&k),a[i]-=k;
for(i=;i<=n;i++)a[i]+=a[i-];
rep(i,,n)dp[i][]=;
rep(j,,n)
{
for(i=;i+j<=n+;i++)
{
dp[i][j]=inf;
rep(k,,j-)dp[i][j]=min(dp[i][j],dp[i][k]+dp[i+k][j-k]+a[i+j-]-a[i-]);
}
}
printf("%d\n",dp[][n]);
//system ("pause");
return ;
}

最新文章

  1. Python之路-(Django进阶二)
  2. jdbc mysql crud dao模型 sql注入漏洞 jdbc 操作大文件
  3. js 字符串拼接
  4. android之AlertDialog 点击其它区域自己主动消失
  5. python学习之操作mysql
  6. 调用WCF Data Service的几点Tips
  7. AngularJS创建新指令directive参数说明
  8. 【笔记】HybridApp中使用Promise化的JS-Bridge
  9. __str__与__repr__
  10. HTTP 03 HTTP 报文
  11. 消息系统kafka原理解析
  12. 如何将打包好的文件做成一个APP
  13. 字符串GZIP压缩解压
  14. VESA时序与BT1120的区别
  15. Java反编译工具CFR,Procyon简介
  16. centos6.9环境下JDK安装
  17. 【week6】团队贡献分
  18. centos/rhel 6.5(更新至centos 7)下rabbitmq安装(最简单方便的方式)
  19. 使用数据库管理工具打开MySql
  20. android 利用 aapt 解析 apk 得到应用名称 包名 版本号 权限等信息

热门文章

  1. HDU 3338 Kakuro Extension
  2. 缺少对象 WScript 问题解决方法
  3. php mysql数据库 分页与搜索
  4. hdu_1403_Longest Common Substring(后缀数组的应用)
  5. 避免IE执行AJAX时,返回JSON出现下载文件
  6. ubuntu 自动获取ip的怎么设置
  7. Android Service学习之IntentService 深入分析
  8. python引入模块时import与from ... import的区别
  9. LightOJ 1259 Goldbach`s Conjecture 素数打表
  10. LightOJ 1341 Aladdin and the Flying Carpet 算数基本定理