https://cn.vjudge.net/problem/HDU-6024

分开考虑某一点种与不种,最后取二者的最小值。

dp[i][1] = min(dp[i-1][0], dp[i-1][1])+c[i];

dp[i][0]则是j从i-1~1递减,判断当j种是,i的最小值,然后取总的最小。

注意dp初始化为INF,以及要开long long

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#define lson l, m, rt<<1
#define rson m+1, r, rt<<1|1
#define IO ios::sync_with_stdio(false);cin.tie(0);
#define INF 1e9
typedef long long ll;
using namespace std;
int n, m;
ll dp[][];
typedef struct {
ll x, c;
}Node;
Node node[];
bool cmp(const Node a, const Node b)
{
return a.x<b.x;
}
int main()
{
while(cin >> n){
for(int i = ; i <= n; i++){
cin >> node[i].x >> node[i].c;
}
for(int i = ; i <= n; i++){
dp[i][] = INF;
dp[i][] = INF;
}
dp[][]=;dp[][]=;
sort(node+, node+n+, cmp);
for(int i = ; i <= n; i++){
dp[i][] = min(dp[i-][], dp[i-][])+node[i].c;
ll tmp = ;
for(int j = i-; j >= ; j--){
tmp += (i-j)*(node[j+].x - node[j].x);//次数*长度
dp[i][] = min(dp[i][], dp[j][]+tmp);
}
}
cout << min(dp[n][], dp[n][]) << endl;
}
return ;
}

最新文章

  1. js实现蛇形矩阵
  2. Akka-remote使用入门
  3. 解决使用Skia图形库时遇到的几个问题
  4. HttpClient, HttpClientHandler, and WebRequestHandler Explained
  5. c++ 顺序容器学习
  6. RSA加密算法原理及RES签名算法简介
  7. SQLAlchemy指南(tutorial)
  8. jQuery_easyUI 合并单元格 (DataGrid 数据表格)
  9. win32用GDI+加载png图片作为背景图
  10. DB2 HADR备库归档问题
  11. 第6章 Overlapped I/O, 在你身后变戏法 ---1
  12. CentOS7下安装Docker-Compose
  13. 从零认识Java Package
  14. Linux下使用Kickstart自动化安装平台架构
  15. hdu4746 Mophues (莫比乌斯进阶)
  16. 【LeetCode每天一题】Reverse Linked List(链表反转)
  17. 迁移桌面程序到MS Store(7)——APPX + Service
  18. C++ STL中的 Set的用法
  19. saltstack之crontab管理用法
  20. 青蛙的约会----POJ1061

热门文章

  1. 【loj6029】「雅礼集训 2017 Day1」市场&amp;&amp;【uoj#228】基础数据结构练习题
  2. Bootstrap 框架、插件
  3. Ubuntu16.04中nginx除80之外其他端口不能访问
  4. c#生成连续单号
  5. 001_JavaScript学习
  6. webstrom中如何将npm菜单调出?
  7. BroadcastReceiver插件化解决方案
  8. 【Excel】SUMIF 或用 筛选器 实现挑选含有某些字段的值,然后把这些值所对应的后面某列上的值相加
  9. [OC] 使用 cocoaPods 导入 AFNetworking
  10. 关于ugc的一点思考