![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM 神奇的方法
文章平均质量分 75
kg20006
这个作者很懒,什么都没留下…
展开
-
[漂浮法]POJ2528 Mayor's posters
当初这题用线段树搞爆,离散化然后建树搞搞搞,辛苦AC。 其实这题用漂浮有奇效,不用离散,而且是线段,覆盖写起来简单。 想法很简单,贴在下面的海报就放在下面,然后从下网上浮,遇到其他的海报就断成一截或两截继续上浮。 还有个问题,这题的坐标表示的不是端点,而是一小段。 比如有两张海报,1 3和4 6,那么其实1到6都是被覆盖了的。 所以截断海报的时候加减一处理边界。 用DFS实现。原创 2015-05-21 14:14:41 · 704 阅读 · 0 评论 -
[漂浮法]CSU1589 Shaping Regions
漂浮法主要用于解决一类矩形线段覆盖问题,比如求覆盖后的面积,可见数量等,可以水过一些扫描线题,而且比较好写。 原理类比把矩形按照顺序从底到顶的放进水里,然后让下面的依次上浮,过程中如果被其他矩形挡住就分裂成几个矩形继续上浮,最后到顶的就是这个矩形最后可以看见的部分。 过程用DFS实现。 具体看代码。 最坏复杂度O(n^2),但是常数小,配合2个剪枝,在OJ跑8ms,和扫描线时间差不多,原创 2015-05-21 13:17:01 · 581 阅读 · 0 评论 -
[单调队列DP] HDU3401 Trade
Trade 题意: 炒股,给出第1~t天每天的买入价格Ap[i]和卖出价格Bp[i],每天最多能买入的数量As[i]和最多能卖出的数量Bs[i]。 还有几个限制,任意时刻最多持有Pmax数量的股票,两次交易(买入或卖出)间隔至少w天,如第i天交易,那么下次至少是i+w+1天。问你第t天最大收入。 题解: 首先考虑朴素DP。 令DP[i][j]DP[i][j]表示第i天持有j股票时的最大收原创 2016-04-13 20:55:21 · 544 阅读 · 0 评论 -
[尺取法] CF660 C.Hard Process
C. Hard Process 题意: 给一个01串,最多可以把k个0变成1,求最长连续1的长度,并且要输出最后的串。 题解: two pointers尺取,O(N)O(N)。#include<bits/stdc++.h> using namespace std; const int N = 3e5+5; int num[N]; int main(){ int n, k; s原创 2016-04-10 17:55:24 · 694 阅读 · 0 评论