O(1) 的小乐
豆瓣账号:http://www.douban.com/people/sosisarah/
摘要: 每一种货物都是独立的,分成k次最小费用最大流即可! 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: #include ... 阅读全文
posted @ 2014-05-07 15:32 O(1)的小乐 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 主要的子问题是每一个队伍有一个做出题目的概率,求做出k个题目的概率。简单的简单的组合数DP。想清楚即可。 1: #include 2: #include 3: #include 4: using namespace std; 5: 6: double dp[35][35]; 7: double p[1005][35]; 8: int mai... 阅读全文
posted @ 2014-04-30 16:26 O(1)的小乐 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 给定2^n 支足球队进行比赛,n 3: #include 4: #include 5: #include 6: #include 7: using namespace std; 8: 9: double p[135][135]; 10: double dp[135][10]; 11: 12: pair range(int idx, ... 阅读全文
posted @ 2014-04-30 15:23 O(1)的小乐 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 主要操作为Splay中插入节点,查找前驱和后继节点。 1: #include 2: #include 3: #include 4: using namespace std; 5: #define MaxL 100005 6: #define INF 0x7ffffff 7: #define keyTree sp[sp[root].child[1... 阅读全文
posted @ 2014-04-30 11:26 O(1)的小乐 阅读(407) 评论(0) 推荐(0) 编辑
摘要: TCO round 1C的 250 和500 的题目都太脑残了,不说了。 TCO round 1C 950 一个棋子,每次等概率的向左向右移动,然后走n步之后,期望cover的区域大小?求cover,肯定就是dp[l][r][n], 走了n步之后,左边cover了l,右边cover了r。 一开始DP没有搞清楚,这个要画一下图就更清楚了。 转移方程就是概率的传递方向. 1: double d... 阅读全文
posted @ 2014-04-29 13:01 O(1)的小乐 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 插入操作,删除操作和置换操作都是单点的,所以不需要lazy标记。这个很简单,都是两次RotateTo,一次Splay操作就搞定。 求最大连续字段和的操作和线段树的题目类似,只需要保存最左边的连续最大字段和,最右边的连续最大字段和,整个子树的连续最大字段和就OK,整个子树的和就OK。 注意PushUp函数的写法就OK//Problem Specific Function void PushUp... 阅读全文
posted @ 2014-04-28 20:18 O(1)的小乐 阅读(796) 评论(0) 推荐(0) 编辑
摘要: 给定两种操作,一种是把一个数列的某一段切下来插到剩余数列的某一个位置上。 一种是翻转操作,把数列的某一段进行翻转。 都是Splay的基本操作。标准的Rotateto调整出 [a,b]区间。然后对[a,b]区间修改parent标记和child标记。然后记住PushUp把修改标记推到树根上。简单一点就直接对某个节点spaly(x,0)就OK! 1: #include 2: #incl... 阅读全文
posted @ 2014-04-28 15:13 O(1)的小乐 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一个从小到大的货币面值,每一个面额都是其前面面额的倍数(倍数大于等于2),每一种货币面值对应一种颜色,目前不清楚面值与颜色的对应关系。要求用最少的查询次数来确定面额与颜色的对应关系。(一次查询是要求给出面额总数某一个值的货币即可,假设给出的货币数目总是最少的,而且是可行的) 官方题解:http://apps.topcoder.com/wiki/display/tc/SRM+616 key... 阅读全文
posted @ 2014-04-24 16:03 O(1)的小乐 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 今天早上在Quora上看到的一个题目,很不错的!最直观的是枚举n^3,但稍微进步一点的观察是找出3个数,然后最大的减去最小的2倍的结果,然后就有了线性扫一遍就OK。 Given three arrays, A, B, and C, what is the best algorithm to find the minimum value of , where ? 解答: Assuming that ... 阅读全文
posted @ 2014-04-18 13:13 O(1)的小乐 阅读(281) 评论(2) 推荐(0) 编辑
摘要: 这个题目非常赞! 给定一个矩形,要求用1*2 的格子进行覆盖,有多少种覆盖方法呢? dp[i][j] 当状态为j,且第i行已经完全铺满的情况下的种类数有多少种?j中1表示占了,0表示没有被占。 很显然,当每行被放了之后,有一些状态是不可能的,我们这里用1 表示竖着放,0表示横着放。 所以两个0 要相邻,这是程序中的s。 我们每一状态转移,枚举每一个可能的状态,我们希望dp[i][j] 中的j呈现出... 阅读全文
posted @ 2014-04-17 13:06 O(1)的小乐 阅读(166) 评论(0) 推荐(0) 编辑