HDU - 3516 Tree Construction
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相关推荐
- hdu 5370 Tree Maker(catalan+dp)
题目链接:hdu 5370 Tree Maker n个节点的二叉树种类为Catalan数的第n项 对于一棵子树而言,被移动过的节点就是确定的位置,所以只要知道已经确定位置的K个节点有多少个空孩子指针M ...
- Tree Construction(四边形优化dp)
原题: http://acm.hdu.edu.cn/showproblem.php?pid=3516 题意: 给出n个左上角到右下角的点,用向右和向上的边连起来,问边长和的最小值. 解析: 一开始以为 ...
- HDU 3333-Turing Tree(线段树解决离线询问)
题意: 给定一个长度为n的序列,给定m个查询,每次查询区间[L,R]范围内不同元素的和. 题解: x,yx,yx,y为查询的区间左右端点 用一个数组left[i]left[i]left[i],表示左边 ...
- HDU 5606 tree 并查集
tree 把每条边权是1的边断开,发现每个点离他最近的点个数就是他所在的连通块大小. 开一个并查集,每次读到边权是0的边就合并.最后Ansi=size[findset(i)],size表示每个并 ...
- hdu 5909 Tree Cutting——点分治(树形DP转为序列DP)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5909 点分治的话,每次要做一次树形DP:但时间应该是 siz*m2 的.可以用 FWT 变成 siz*ml ...
- HDU 3534 Tree (经典树形dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3534 题意: 给你一棵树,问你有多少对点的距离等于树的直径. 思路: dp[i][0]表示在i的子树中 ...
- HDU 6446 Tree and Permutation(赛后补题)
>>传送门<< 分析:这个题是结束之后和老师他们讨论出来的,很神奇:刚写的时候一直没有注意到这个是一个树这个条件:和老师讨论出来的思路是,任意两个结点出现的次数是(n-1)!, ...
- HDU - 5370 Tree Maker dp
HDU - 5370 f[ i ] 表示顶点数为 i 的二叉树的种数, 其实就是卡特兰数. dp[ i ][ j ] 表示 i 个顶点分给 j 个二叉树的方案数, 这个是个 n ^ 3 的dp. 然 ...
- HDU 5044 Tree 树链剖分
树链剖分离线处理所有的增加操作.考虑如果在线性结构上面处理这样的问题,只要把增加区域的起始点+w,结束点的后面一个点-w,最终输出答案的时候只要扫描一遍就好了,现在通过树链剖分把树转化为类似的线性结构 ...
最新文章
- 同样是AI技术,为什么只有一加6称得上“全速”旗舰?
- 百度开放AI应用学习!
- 地图不显示_地图不显示脚步,枪声没有方向标记,职业比赛有何不同?
- SQL游标使用方法SQL游标使用方法(转)
- mysql全套基础知识_Mysql基础知识整理
- 通过改变innerHTML的内容,动态增加选择项
- 计算机与工程建设项目结合,计算机科学与技术在工程建设项目管理中应用.doc...
- 《重构-改善既有代码的设计》——读后总结
- LINUX SHELL使用变量控制循环
- 三款小工具:Resource Hacker、PE Explorer、SWF Converter
- matlab实现icp算法,ICP算法(Iterative Closest Point)及VTK实现
- 航天飞机电子计算机象征是什么,航天飞机的特点是什么
- [HBase进阶]--rowkey设计要点(官方文档介绍)
- HDFS(下):NameNode和SecondaryNameNode、HDFS工作机制、故障处理、集群安全模式、服役退役节点、集群黑白名单、DataNode多目录详解、HDFS2.x新特性
- 如果你有一台超级计算机_你会用它来做什么?
- 读书印记 - 《反脆弱》
- html制作日历备忘录,CSS3制作日历备忘录
- 第一个python自动化程序
- 科普:24时区,GMT,UTC,DST,CST时间详解
- 程序员编程艺术:第九章、闲话链表追赶问题
热门文章
- 160 - 33 Cruehead.1
- 160 - 10 Andrénalin.3
- pfa是什么意思_PFA的完整形式是什么?
- Java LocalDate类| minusYears()方法与示例
- Java DataOutputStream writeUTF()方法及示例
- 用计算机怎么打出狂浪字谱,狂浪歌曲简谱
- 宜昌宝塔河项目_宜昌城区首个垃圾分类定时定点投放点启用 厨余垃圾破袋投放...
- c++实现任意类型数组类的封装
- ubuntu下搭建nfs服务器
- 每日一题:leetcode1319.联通网络的操作次数