摘要: 嘟嘟嘟 一道说难也难说简单也简单的dp题。 我觉得我的(有篇题解)做法就属于特别简单的。 平时遇到环的问题都是断环为链,但这道题给了一种新的思路。 观察一下,最后的答案无非就这两种:xxx--xx xxxx xxx xx 对于第二种,有一个特别好的做法:正着求一遍最大子串和,再倒着求一遍,然后枚举断 阅读全文
posted @ 2018-10-25 21:42 mrclr 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 这竟然是一道贪心题,然而我在不看题解之前一直以为是dp。 首先最优的配对一定是相邻两个建筑物配对,所以我们求出差分数组,就变成了在n - 1个数中选出不相邻的k个数,使这k个数的和最小。 贪心是在回事呢?首先把所有点放在一个小根堆中,然后如果取出一个点ai,就把ai-1 + ai+1 - a 阅读全文
posted @ 2018-10-25 14:32 mrclr 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 这其实是一道贪心题,而不是dp。 首先我们贪心的取有优惠券中价值最小的,并把这些东西都放在优先队列里,然后看[k + 1, n]中,有些东西使用了优惠券减的价钱是否比[1, k]中用了优惠券的物品更划算,是的话就更新。 1 #include<cstdio> 2 #include<iostre 阅读全文
posted @ 2018-10-25 08:58 mrclr 阅读(374) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 一道最短路好题。 首先明确一点,把一条边的边权变成2,等于删去这条边。因为变成2后最短路肯定不会经过这条边,就相当于删去这条边了。 所以题目变成了依次删去Q条边,求每一次删完边后有几个点的最短路变大了。 多做做题就会有这么个思维:删边不好办,然而逆向加边方便多了。所以30做法就是离线逆向加边 阅读全文
posted @ 2018-10-25 08:18 mrclr 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 首先数据范围那么小,那么算法也是相当暴力的。 对于一个点(x, y)所属的联通块,预处理出从这个点出发到这个块外的所有点的曼哈顿距离。复杂度O(n4)。 然后求答案:最少答案不一定是三个联通块两两相连,可能是两个联通块之间搭了个桥,然后第三个联通块连接在这个桥上。因此我们像floyd一样,枚 阅读全文
posted @ 2018-10-25 07:51 mrclr 阅读(158) 评论(0) 推荐(0) 编辑