HDU - 3516

思路:

平行四边形不等式优化dp

:)

代码:

#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(4)
#include<bits/stdc++.h>
using namespace std;
#define y1 y11
#define fi first
#define se second
#define pi acos(-1.0)
#define LL long long
#define LD long double
//#define mp make_pair
#define pb push_back
#define ls rt<<1, l, m
#define rs rt<<1|1, m+1, r
#define ULL unsigned LL
#define pll pair<LL, LL>
#define pli pair<LL, int>
#define pii pair<int, int>
#define piii pair<int, pii>
#define pdd pair<long double, long double>
#define mem(a, b) memset(a, b, sizeof(a))
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
//headconst int N = 1e3 + 5;
int dp[N][N], s[N][N], x[N], y[N], n;
int main() {while(~scanf("%d", &n)) {for (int i = 1; i <= n; ++i) scanf("%d %d", &x[i], &y[i]);for (int i = n; i >= 1; --i) {dp[i][i] = 0;s[i][i] = i;for (int j = i+1; j <= n; ++j) {dp[i][j] = 0x3f3f3f3f;for (int k = s[i][j-1]; k <= s[i+1][j]; ++k) {if(k+1 <= j && dp[i][k]+dp[k+1][j]+y[k]-y[j]+x[k+1]-x[i] < dp[i][j]) {dp[i][j] = dp[i][k]+dp[k+1][j]+y[k]-y[j]+x[k+1]-x[i];s[i][j] = k;}}}}printf("%d\n", dp[1][n]);}return 0;
}

转载于:https://www.cnblogs.com/widsom/p/10955045.html

HDU - 3516 Tree Construction相关推荐

  1. hdu 5370 Tree Maker(catalan+dp)

    题目链接:hdu 5370 Tree Maker n个节点的二叉树种类为Catalan数的第n项 对于一棵子树而言,被移动过的节点就是确定的位置,所以只要知道已经确定位置的K个节点有多少个空孩子指针M ...

  2. Tree Construction(四边形优化dp)

    原题: http://acm.hdu.edu.cn/showproblem.php?pid=3516 题意: 给出n个左上角到右下角的点,用向右和向上的边连起来,问边长和的最小值. 解析: 一开始以为 ...

  3. HDU 3333-Turing Tree(线段树解决离线询问)

    题意: 给定一个长度为n的序列,给定m个查询,每次查询区间[L,R]范围内不同元素的和. 题解: x,yx,yx,y为查询的区间左右端点 用一个数组left[i]left[i]left[i],表示左边 ...

  4. HDU 5606 tree 并查集

    tree 把每条边权是1的边断开,发现每个点离他最近的点个数就是他所在的连通块大小. 开一个并查集,每次读到边权是0的边就合并.最后Ans​i​​=size[findset(i)],size表示每个并 ...

  5. hdu 5909 Tree Cutting——点分治(树形DP转为序列DP)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5909 点分治的话,每次要做一次树形DP:但时间应该是 siz*m2 的.可以用 FWT 变成 siz*ml ...

  6. HDU 3534 Tree (经典树形dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3534 题意: 给你一棵树,问你有多少对点的距离等于树的直径. 思路: dp[i][0]表示在i的子树中 ...

  7. HDU 6446 Tree and Permutation(赛后补题)

    >>传送门<< 分析:这个题是结束之后和老师他们讨论出来的,很神奇:刚写的时候一直没有注意到这个是一个树这个条件:和老师讨论出来的思路是,任意两个结点出现的次数是(n-1)!, ...

  8. HDU - 5370 Tree Maker dp

    HDU - 5370 f[ i ] 表示顶点数为  i 的二叉树的种数, 其实就是卡特兰数. dp[ i ][ j ] 表示 i 个顶点分给 j 个二叉树的方案数, 这个是个 n ^ 3 的dp. 然 ...

  9. HDU 5044 Tree 树链剖分

    树链剖分离线处理所有的增加操作.考虑如果在线性结构上面处理这样的问题,只要把增加区域的起始点+w,结束点的后面一个点-w,最终输出答案的时候只要扫描一遍就好了,现在通过树链剖分把树转化为类似的线性结构 ...

最新文章

  1. 同样是AI技术,为什么只有一加6称得上“全速”旗舰?
  2. 百度开放AI应用学习!
  3. 地图不显示_地图不显示脚步,枪声没有方向标记,职业比赛有何不同?
  4. SQL游标使用方法SQL游标使用方法(转)
  5. mysql全套基础知识_Mysql基础知识整理
  6. 通过改变innerHTML的内容,动态增加选择项
  7. 计算机与工程建设项目结合,计算机科学与技术在工程建设项目管理中应用.doc...
  8. 《重构-改善既有代码的设计》——读后总结
  9. LINUX SHELL使用变量控制循环
  10. 三款小工具:Resource Hacker、PE Explorer、SWF Converter
  11. matlab实现icp算法,ICP算法(Iterative Closest Point)及VTK实现
  12. 航天飞机电子计算机象征是什么,航天飞机的特点是什么
  13. [HBase进阶]--rowkey设计要点(官方文档介绍)
  14. HDFS(下):NameNode和SecondaryNameNode、HDFS工作机制、故障处理、集群安全模式、服役退役节点、集群黑白名单、DataNode多目录详解、HDFS2.x新特性
  15. 如果你有一台超级计算机_你会用它来做什么?
  16. 读书印记 - 《反脆弱》
  17. html制作日历备忘录,CSS3制作日历备忘录
  18. 第一个python自动化程序
  19. 科普:24时区,GMT,UTC,DST,CST时间详解
  20. 程序员编程艺术:第九章、闲话链表追赶问题

热门文章

  1. 160 - 33 Cruehead.1
  2. 160 - 10 Andrénalin.3
  3. pfa是什么意思_PFA的完整形式是什么?
  4. Java LocalDate类| minusYears()方法与示例
  5. Java DataOutputStream writeUTF()方法及示例
  6. 用计算机怎么打出狂浪字谱,狂浪歌曲简谱
  7. 宜昌宝塔河项目_宜昌城区首个垃圾分类定时定点投放点启用 厨余垃圾破袋投放...
  8. c++实现任意类型数组类的封装
  9. ubuntu下搭建nfs服务器
  10. 每日一题:leetcode1319.联通网络的操作次数