O(1) 的小乐
豆瓣账号:http://www.douban.com/people/sosisarah/
摘要: 今天在看GCPC 2013 的时候,遇到了一个简单的任务分配的题目. 即给定一系列任务[l,r], 每个人不能同时做两个, 最多需要几个人来完成? 这个问题的一个标准解法是对所有l,r排序,然后遇到l,就num++, 遇到r就num--,记录num的最大值即是需要的人数的最大值. 在看GCPC 2013题解的时候, 题解提到了一个left edge algorithm. 阅读全文
posted @ 2016-06-08 10:16 O(1)的小乐 阅读(972) 评论(0) 推荐(0) 编辑
摘要: 今天下午偶然瞄了一眼编程之美, 看到了一个问题, 4.4 点是否在多边形内. 为什么关注这个问题呢? 因为在今年给中科院保送研究生机试出题的时候,我也出了一道这样的题目. 看了编程之美的解答之后, 感觉作者没有把这个问题讲清楚, 所以来写这样一个东西. 的两种解答方案都很直观, 一种是 秦九韶海伦公式来做面积判断, 一种是 常用的判断点是否在三角形内. 为什么说 没有讲清楚问题呢? ... 阅读全文
posted @ 2015-07-19 15:27 O(1)的小乐 阅读(2935) 评论(0) 推荐(0) 编辑
摘要: 快一年没有做题了, 今天跟了一下 GCJ Round 1A的题目, 感觉难度偏简单了, 很快搞定了第一题, 第二题二分稍微考了一下, 还剩下一个多小时, 没仔细想第三题, 以为 前两个题目差不多可以晋级了. 切出去玩了一会, 大概剩半小时, 发现自己的排名逐渐快超 1k了, 果断决定搞出第三题的小数据. 然后简单的O(n^3)的枚举过了. 然后有惊无险的晋级了. 第一题,读懂题目,然后计算就很好... 阅读全文
posted @ 2015-04-18 13:55 O(1)的小乐 阅读(817) 评论(0) 推荐(0) 编辑
摘要: 1: #include 2: #include 3: #include 4: #include 5: #include 6: using namespace std; 7: 8: #define LL(a) a>1; 32: sub_build(subl, mid, LL(subidx), idx); 33: ... 阅读全文
posted @ 2014-05-16 17:20 O(1)的小乐 阅读(1063) 评论(0) 推荐(0) 编辑
摘要: 查询树上某个节点的子节点的标号小于其标号的数目. 一个trick是建立线段树之后,从标号小的向标号大的来做更新. 1: #include 2: #include 3: #include 4: #include 5: #include 6: #include 7: using namespace std; 8: #pragma comme... 阅读全文
posted @ 2014-05-11 22:41 O(1)的小乐 阅读(358) 评论(0) 推荐(0) 编辑
摘要: 单点修改树中某个节点,查询子树的性质.DFS序 子树序列一定在父节点的DFS序列之内,所以可以用线段树维护. 1: /* 2: DFS序 +线段树 3: */ 4: 5: #include 6: #include 7: #include 8: #include 9: #include 10: #include 11: ... 阅读全文
posted @ 2014-05-11 20:53 O(1)的小乐 阅读(380) 评论(0) 推荐(0) 编辑
摘要: 1: /** 2: ZOJ 3229 有上下界的最大流 3: 两次求最大流的过程,非二分 4: 有源汇上下界的最大流问题, 首先连接 sink -> src, [0,INF]. 5: 根据net的正负,来建立 Supersrc 与 supersink 之间的边,做一次 maxflow. 6: 若所有的Supersrc ... 阅读全文
posted @ 2014-05-08 17:55 O(1)的小乐 阅读(605) 评论(0) 推荐(0) 编辑
摘要: 1: /** 2: POJ 3801 有上下界的最小流 3: 4: 1、对supersrc到supersink 求一次最大流,记为f1。(在有源汇的情况下,先使整个网络趋向必须边尽量满足的情况) 5: 2、添加一条边sink -> src,流量上限为INF,这条边记为p。(构造无源汇网络) 6: 3、对supersrc到supersink再次求最大... 阅读全文
posted @ 2014-05-08 17:54 O(1)的小乐 阅读(523) 评论(0) 推荐(0) 编辑
摘要: 对于无源汇问题,方法有两种. 1 从边的角度来处理. 新建超级源汇, 对于每一条有下界的边,x->y, 建立有向边 超级源->y ,容量为x->y下界,建立有向边 x-> 超级汇,容量为x->y下界.建立有向边 x->y,容量为x->y的上界减下界. 2 从点的角度来处理. 新建超级源汇,对于每个点流进的下界和为 in, 流出此点的下界和为out.如果in > out. 建立有向边 超级源->i,... 阅读全文
posted @ 2014-05-08 11:17 O(1)的小乐 阅读(674) 评论(0) 推荐(0) 编辑
摘要: 从1走到N然后从N走回来的最短路程是多少? 转换为费用流来建模. 1: /** 2: 因为e ==0 所以 pe[v] pe[v]^1 是两条相对应的边 3: E[pe[v]].c -= aug; E[pe[v]^1].c += aug; 4: 5: */ 6: #include 7: #include 8: #in... 阅读全文
posted @ 2014-05-08 09:26 O(1)的小乐 阅读(280) 评论(0) 推荐(0) 编辑