
紫书 第八章 习题
文章平均质量分 79
Chen丶HC
这个作者很懒,什么都没留下…
展开
-
习题8-1 装箱(Bin Packing, SWERC 2005, UVa1149)
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define SF(a) scanf(原创 2017-12-09 09:14:21 · 271 阅读 · 0 评论 -
UVA 1153 Keep the Customer Satisfied(贪心+优先队列)
思路:题目等价于已知n个任务的长度与右端点,求最多任务数。非常明显的贪心,按q选取?按d选取?都不能得到正确的解。贪心策略:1. 按照截止时间d排序,优先考虑更早截止的。2. 符合条件的便直接加入选择的队列中。3.不符合条件时,尝试与选择队列中时间最长交换,这样只会产生更优的解。#include #include #include #include #include原创 2017-12-30 14:10:41 · 213 阅读 · 0 评论 -
习题8-8 猜名次(Guess, ACM/ICPC Beijing 2006, UVa1612)
思路:贪心法,注意精度的控制,可以采取*100再四舍五入的方式转化为int求解value round floor ceil trunc----- ----- ----- ---- -----2.3 2.0 2.0 3.0 2.03.8 4.0 3.0 4.0 3.05.5原创 2017-12-30 09:30:51 · 375 阅读 · 0 评论 -
习题8-7 生成排列(Generating Permutations, UVa11925)
思路:冒泡排序的思想。题目要求从123 -> 到213,可以转换一下 从无序到有序可以用冒泡解决123 -> 213, 213变为123则123->213,同理123 -> 231等价于312 -> 123。注意处理多余的2操作即可。#include #include #include #include #include #include #include #incl原创 2017-12-29 17:30:55 · 312 阅读 · 0 评论 -
习题8-6 起重机(Crane, ACM/ICPC CERC 2013, UVa1611)
思路:选择排序的思想,每个数最多经过两次翻转到达正确位置。有点疑问:复杂度不是n方么。。。怎么能过。。。#include #include #include #include #include #include #include #include #include #include #include #include #include #include #inc原创 2017-12-29 11:39:04 · 368 阅读 · 0 评论 -
习题8-5 折纸痕(Paper Folding, UVa177)
思路:典型的递归分形问题。第一步要找规律,开始时,我从旋转的角度思考,无法求解。之后发现以方向标画图: r -> ru -> rulu...发现每次增加的部分为原有部分逆序逆时针转90°。#include #include #include #include #include #include #include #include #include #include #i原创 2017-12-27 19:04:56 · 532 阅读 · 0 评论 -
习题8-4 奖品的价值(Erasing and Winning, UVa11491)
思路:贪心,由于数的特性,显然贪心可得正解,每次选取可选的最大值。#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #incl原创 2017-12-23 15:52:52 · 269 阅读 · 0 评论 -
UVA 1615 Highway (贪心, 区间选点)
思路:求出每个圆与x轴上交点,即可转化为区间选点模型。实现:按r排序,每次选取最右端放点。#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #原创 2017-12-30 19:25:28 · 324 阅读 · 0 评论 -
UVA 1614 Hell on the Markets (思维 + 构造)
思路:关键在于1 结论:[1, sum(i)] 可以由 [a1, ai]组成。证明 : 数学归纳法,n = 1显然成立,假设n = i成立对n = i + 1时,需要凑出[sum(i) + 1, sum(i) + a(i +1)]由于sum(i) >= i, 1 实现:排序后从大往小取,由结论sum/2可得,进而sum/2 - ai, 可由[a1, ai-1]得到,可知最原创 2017-12-30 18:23:12 · 202 阅读 · 0 评论 -
习题8-3 比特变换器(Bits Equalizer, SWERC 2012, UVa12545)
思路:我还蛮怕这种题的。。。。首先计算1的个数,若s多余t显然无解,之后先假设所有的问号变为t中对应字符。再次计算st中1的个数,若不等说明问号处有问题,则问号处部分不变为1。dif为不同数,dif += abs(s1 - t1)为总的不同处,ans = ? + dif/2。#include #include #include #include #include #inc原创 2017-12-23 15:38:13 · 280 阅读 · 0 评论 -
习题8-2 聚会游戏(Party Games, Mid-Atlantic 2012, UVa1610)
思路:构造题,挫败感max。orz。。。。容易想到ans为sort后中间两个字符串a,b之间的串。由于要求长度以及字典序最小,可以按照这两个来枚举构造。若某长度无解,则ans加上a串的当前字符。#include #include #include #include #include #include #include #include #include #incl原创 2017-12-22 22:12:44 · 287 阅读 · 0 评论 -
UVA 1616 Caravan Robbers (暴力 + 二分)
思路:二分法 + 暴力由于每个区间长度相同,所以对单位长度的区间必然最多被分为n份。这也就使得暴力枚举分母成为可能。#include #include #include #include using namespace std;const int maxn = 1e5 + 5;const double inf = 1e6 + 5;typedef long long原创 2018-01-26 14:13:03 · 301 阅读 · 0 评论