摘要: 题目链接:http://codeforces.com/contest/612/problem/D 题意:给n条线段,问覆盖至少k次的区间有几个。 扫描线的思想,首先想到的是从左到右扫一遍,遇到出现被覆盖k次的端点,则开始计数,直到覆盖次数小于k为止。 其实可以用线段树做这道题,但是还有更巧妙的办法: 阅读全文
posted @ 2017-05-02 22:11 Kirai 阅读(249) 评论(0) 推荐(1) 编辑
摘要: 题目链接:http://poj.org/problem?id=1195 题意:四种操作: 0:初始化一个S*S的零矩阵 1:点(x,y)是值+A 2:查询一个子矩阵里所有数的和 3:退出 线段树由于不能在两棵树之间传递标记,所以这种求和的操作非常难处理。 改学了一下而为树状数组,发现可是比二维线段树 阅读全文
posted @ 2017-05-02 21:00 Kirai 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 题目链接:https://www.oj.swust.edu.cn/problem/show/1740 看了讨论才发现不能多组输入,真坑。 源点到n个单位,容量是每个单位的人数。 每个单位到每个桌子有1条边,容量为1。代表每个单位只能有一个人可以在那一张桌子。 桌子到汇点建边,容量为桌子最多坐的人数。 阅读全文
posted @ 2017-05-02 20:06 Kirai 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 题目链接:https://www.oj.swust.edu.cn/problem/show/1759 和方格取数一样建模就行了。 阅读全文
posted @ 2017-05-02 19:44 Kirai 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 题目链接:https://www.oj.swust.edu.cn/problem/show/1744 希望取到的点都是不相邻的(相邻:四连通),那么可以用二分图表示相连关系,然后求最大独立集。 最大独立集就是取的点均不相连,并且权值最大。 给两部分的点从1到n*n标号,源汇点分别连点的容量是对应点的 阅读全文
posted @ 2017-05-02 19:11 Kirai 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 题目链接:https://www.oj.swust.edu.cn/problem/show/1738 把每一个数拆成两个点,建图跑最大流,结论是满足最小路径覆盖的路径数=总点数-最小割,即总点数-最大流。 打印路径dfs一下,非递归的时候PE了,但是这个OJ会报WA,哎。 阅读全文
posted @ 2017-05-02 15:02 Kirai 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 题目链接:https://www.oj.swust.edu.cn/problem/show/1742 多重匹配问题,判断有无解可以通过最大流是否等于选的题目类型数量总和。 如下建图: 阅读全文
posted @ 2017-05-02 14:21 Kirai 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5676 题意:输入一个正整数n(n <=10^18),求不小于n的只有4和7组成的数,且4和7数量相同 枚举2~18位偶数位的4、7的组合,01分别代表4或7。存下来后排序,二分查询。 trick就是LL 阅读全文
posted @ 2017-05-02 11:34 Kirai 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 题目链接:https://www.oj.swust.edu.cn/problem/show/1739 从1开始枚举球的个数,每次从残余网络更新总流量,最小路径覆盖刚好大于n时ret-1便是最多球。 之后根据容量为0的边找回匹配边即可。 用x << 1和x << 1 | 1拆点 比较方便。 阅读全文
posted @ 2017-05-02 00:04 Kirai 阅读(174) 评论(0) 推荐(0) 编辑