hihoCoder #1157 建造金字塔
这道题我想了一天才想清楚做法。AC 了之后去看别人写的题解,都是三言两语意识流式描述,我并不能读懂。我觉得很自卑,为何人家解这道题如此轻松。不过,我还是决定把我的解法写下来,并且一定要写清楚。
思路
我想多数人见到这个题目的想法都是:先按照某种方式对三角形排序,再设法 DP 。大方向确实如此。我的做法是:「以三角形底边的右端点坐标为第一关键字从小到大,以三角形底边的左端点坐标为第二关键字从大到小」排序。记排序后的 $n$ 个三角形为:$T_1, T_2, \dots, T_n$ ,如此排序使得:
- 所有被 $T_i$ 覆盖且不与 $T_i$ 重合的三角形都排在 $T_i$ 前面
- 设 $0 \le k< j < i \le n$ 且 $T_j \not\subseteq T_i, T_k \not\subseteq T_i$ 那么 $(T_k \cap T_{i}) \subseteq (T_j \cap T_i)$
我不清楚是否还有别的排序方法也能满足上面两个条件,不过其他排序方法只要满足上述两性质,都可进而采用下面要讲的 DP 方法。
DP 状态 $\DeclareMathOperator{\DP}{DP}$
$\DP_i$ 表示「只在前 $i$ 个金字塔(即三角形)中选择一些建造并且一定建造第 $i$ 座金字塔,所能获得的最大收益」。
边界条件
为了方便我们定义第 $0$ 座金字塔为 $(-\infty, 0, 0)$ 。
边界条件为 $\DP_0 = 0$ 。
转移方程
$$
\DP_i = \max \left\{ \DP_j + \sum_{j< k< i, T_k \subseteq T_i} T_k.w + T_i.w - \left | T_i \right | + \left| T_j \cap T_i\right|\right\} \quad (0 \le j <i, T_j \not\subseteq T_i)
$$
$\left| T \right|$ 表示(等腰直角)三角形 $T$ 的 面积。
复杂度 $O(N^2)$ 。
这就是我的思路,当然还可以做一些小优化。代码就不贴了,我的目标是把思路说清楚,思路清楚了,代码并不难写。
总结
这道题目应当算作简单题,虽然我解得并不轻松。这个问题中,三角形其实可以简化为底边所表示的线段,设底边长为 $l$,则三角行面积 $s$ 可表为 $s = s(l) =l^2/4$ 。这个问题可一般化为:给定若干条 $x$ 轴上的线段,每条线段有一个收益值,另外给出一个成本函数 $cost(l)$ 。其他部分和原具体问题相似,不赘述。
hihoCoder #1157 建造金字塔的更多相关文章
- hihocoder #1270 建造基地
传送门 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在遥远的未来,小Hi成为了地球联邦外空间联合开发工作组的一员,前往一颗新发现的星球开发当地的重金属资源. 为了能够 ...
- Computer Vision_33_SIFT:Distinctive Image Features from Scale-Invariant Keypoints——2004
此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...
- [swustoj 585] 倒金字塔
倒金字塔(0585) Time limit(ms): 3000 Memory limit(kb): 65535 Submission: 208 Accepted: 48 Description S ...
- [Swust OJ 585]--倒金字塔(LIS最长不下降子序列)
题目链接:http://acm.swust.edu.cn/problem/585/ Time limit(ms): 3000 Memory limit(kb): 65535 SWUST国的一支科学 ...
- [Offer收割] 编程练习赛1
A HihoCoder 1268 九宫 思路: 一般类似于数独的题目都是使用回溯解决,这里由于题目数据较小同样可以直接DFS得出结果.这里我用了一个偷懒的方法(next_permutation),直接 ...
- (纪录片)数学的故事 The Story of Maths (2008)
简介: 导演: Robin Dashwood编剧: Marcus du Sautoy主演: Marcus du Sautoy类型: 纪录片官方网站: www.bbc.co.uk/programmes/ ...
- NEERC 15 (10/12)
NEERC=Not Easy European Regional Contest 据说NEERC天天被搬,赶紧做了好了.在Claris和Google的帮助下做了10题,感谢cls. http://co ...
- Computer Vision_33_SIFT:Object recognition from local scale-invariant features——1999
此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...
- 项目的基本概念(Project)
<Project2016 企业项目管理实践>张会斌 董方好 编著 我一看到这个标题就头疼,好吧,又是概念,好在我不要参加相关的考试,否则文字连同标点符号都得背%¥#%#~ 张同学说,项目& ...
随机推荐
- MovieReview—NINE LIVES(九条命)
Struggle & Family A successful middle-aged man in the movie became a cat by falling from ...
- UVA 1153 Keep the Customer Satisfied 顾客是上帝(贪心)
因为每增加一个订单,时间是会增加的,所以先按截止时间d排序, 这样的话无论是删除一个订单,或者增加订单,都不会影响已经选好的订单. 然后维护一个已经选好的订单的大根堆(优先队列),如果当前无法选择的话 ...
- 2018.5.6 解决问题:oracle------ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务
解决问题:ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 或者是重启电脑之后无法进入控制台企业管理器(OEM)图形化界面(重新添加注入监听器就行了 文件listener.org) ...
- matlab启动
直接在命令行输入matlab会报错 用这两个命令没问题 sudo /usr/local/MATLAB/R2013a/bin/matlab sudo /usr/local/MATLAB/R2013a/b ...
- 《毛毛虫团队》第八次团队作业:ALPHA冲刺
一:实验名称:软件测试与ALPHA冲刺 二:实验目的与要求 (1)掌握软件测试基础技术. (2)学习迭代式增量软件开发过程(Scrum). 三:实验步骤 任务一:各个成员今日完成的任务: 任务二:明日 ...
- python-IE浏览器调用
IE浏览器驱动添加 selenium官网有提供下载http://code.google.com/p/selenium/downloads/list 这里我用的是IEDriverServer_Win32 ...
- Bootstrap历练实例:带链接的警告
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- Servlet的引入(即加入Servlet)
今天讲的Servlet是根据上一章节<创建一个学生信息表,与页面分离>而结合. 一.看图分析 此模式有问题: 1.jsp需要呼叫javabean StudentService stuSer ...
- HTTP无状态协议和session原理(access_token原理)
无状态协议是指协议对务处理没有记忆能力.缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大.另一方面,在服务器不需要先前信息时它的应答就较快. Http协议不 ...
- 【线段树分治 01背包】loj#6515. 「雅礼集训 2018 Day10」贪玩蓝月
考试时候怎么就是没想到线段树分治呢? 题目描述 <贪玩蓝月>是目前最火爆的网页游戏.在游戏中每个角色都有若干装备,每件装备有一个特征值 $w$ 和一个战斗力 $v$ .在每种特定的情况下, ...