03 2016 档案

摘要:很神奇的旋转操作。 目前没看到其他数据结构能实现这个功能。平衡树不好处理区间操作,线段树很难旋转。splay tree搞这个就很简单了。 下面用的这个模板跑了700ms,好慢,估计是删除操作太费时了,是时候去找找其他更快的模板了。 阅读全文
posted @ 2016-03-31 22:52 chenhuan001 阅读(367) 评论(0) 推荐(0) 编辑
摘要:线段树入门题,换成splay tree 来搞搞。 阅读全文
posted @ 2016-03-26 23:57 chenhuan001 阅读(275) 评论(0) 推荐(0) 编辑
摘要:题意就是简单的点更新,成段查询。 splay tree 果真是常数比较大的log(n)操作。 比线段树还慢了这么多。 阅读全文
posted @ 2016-03-26 11:55 chenhuan001 阅读(341) 评论(0) 推荐(0) 编辑
摘要:将整体期望分成部分期望来做。 F. network F. network 时间限制 3000 ms 内存限制 65536 KB 题目描述 A social network is a social structure made up of a set of social actors (such as 阅读全文
posted @ 2016-03-25 16:00 chenhuan001 阅读(188) 评论(0) 推荐(0) 编辑
摘要:平衡树都能做。 阅读全文
posted @ 2016-03-25 12:36 chenhuan001 阅读(573) 评论(0) 推荐(0) 编辑
摘要:相当于用多个O(nlog(n))LIS来做。 阅读全文
posted @ 2016-03-22 20:25 chenhuan001 阅读(224) 评论(0) 推荐(0) 编辑
摘要:坑爹的题目。不过不能说不是一道挺好的题目。 坑主要坑在,妹的我一样的复杂度,写的姿势略差了点然后就一直超时。 比赛的时候我还直接就看错题目,把AND运算看成了OR。。。还敲完交了一发。 这题很容易想到: 因为给出的数字只有13位,所以每位用2位二进制表示。 如: 00 1的个数为偶数,最后的结果为0 阅读全文
posted @ 2016-03-22 12:39 chenhuan001 阅读(472) 评论(1) 推荐(0) 编辑
摘要:小学数学,脑补 一开始看到这题,猜了个规律想写但是我是拒绝的。 因为我无法证明。 好吧,主要还是小学数学没学好吧。 要理解这题,首先得搞懂一个重要问题。假设C=A+B,怎样选择两个正整数使得A*B最大? 学过小学数学的人都知道,A=C/2,B=C-A。 为啥是这样的。我在做这题之前好像就没搞太明白。 阅读全文
posted @ 2016-03-20 16:28 chenhuan001 阅读(436) 评论(0) 推荐(0) 编辑
摘要://网络流SAP模板,复杂度O(N^2*M) //使用前调用init(源点,汇点,图中点的个数),然后调用add_edge()加边 //调用getflow得出最大流 #define N 55 #define M 500500 #define INF 0x3fffff struct Max_Flow { struct node { int to,w,next; ... 阅读全文
posted @ 2016-03-20 14:38 chenhuan001 阅读(312) 评论(0) 推荐(0) 编辑
摘要:这题思路很简单,二分m,求最大流是否大于等于x。 但是比赛过程中大部分的代码都被hack了。。。 精度问题,和流量可能超int 关于精度问题,这题真是提醒的到位,如果是先用二分将精度控制在10^-8左右,最后乘一个10^4,精度只能在10-4,而二分控制精度在10^-11很容易死循环(因为doubl 阅读全文
posted @ 2016-03-20 13:16 chenhuan001 阅读(180) 评论(0) 推荐(0) 编辑
摘要:目前做过的最纠结的一道递推题。 情况比较多,比较复杂。。。 这题最主要的还是要推出当m=2 时和m>2时,用什么方法最优。 给个数据 n=3,m=2 需要48 n=3,m=3 需要81 如果在纸上把这两种情况推出来,这题就容易找到递推。 m=1,就是最基础的汉诺塔递推了。 Time Limit: 2 阅读全文
posted @ 2016-03-19 11:30 chenhuan001 阅读(257) 评论(0) 推荐(0) 编辑
摘要:题意是:给你一个1-n的排列,要你把这个排列分成两个序列,且这个两个序列都满足单调性。 题解: 1.首先假设找出的两个序列都是单调递增的(都是单调递减的同理) 那么很容易可以想到,将新加入的数放入到某个序列尾端,使得另一个序列尾端的数尽量小。 2.如果最后的两个序列为一个递增一个递减。 这种情况下, 阅读全文
posted @ 2016-03-17 22:57 chenhuan001 阅读(356) 评论(0) 推荐(0) 编辑
摘要:莫队算法详解 本文翻译自MO’s Algorithm (Query square root decomposition),作者anudeep2011,发表日期为2014-12-28。由于最近碰到一些莫队算法的题目,找到的相关中文资料都比较简略,而这篇英语文章则讲解的比较详细,故翻译成中文与大家分享。 阅读全文
posted @ 2016-03-15 16:24 chenhuan001 阅读(1270) 评论(0) 推荐(4) 编辑
摘要:bitset这个东西,是c++里面封装好了的处理多位运算的东西。 亲测比自己写快10倍以上。   以下是概念: std::bitset是STL的一部分,准确地说,std::bitset是一个模板类,它的模板参数不是类型,而整形的数值(这一特性是ISO C++2003的新特性),有了它我们可以像使用数 阅读全文
posted @ 2016-03-14 21:13 chenhuan001 阅读(230) 评论(0) 推荐(0) 编辑
摘要:类似于斜率优化的东西,果真CF的E以后才会考点算法啊。 感觉这种优化应该很常见,但这题直线只有第一象限的,但是插入,和查找操作是不变的,按极角排序后就可以直接用这个模板了。 #include <iostream> #include <stdio.h> #include <string.h> #inc 阅读全文
posted @ 2016-03-07 22:18 chenhuan001 阅读(858) 评论(0) 推荐(0) 编辑
摘要:首先,由题意三个数都为正整数,且某两个数的和等于第三个,且第一轮提问中三个人都说不确定可知,三个人中没有两两相同的数存在。 这样就排除了A,D 然后看选项B 站在第三个人的立场,看到其他两个人是36,108则他自己可以为144或72。 这时第三个人如果假设他是72,那么在108那个人的眼中本来为36 阅读全文
posted @ 2016-03-04 20:47 chenhuan001 阅读(220) 评论(0) 推荐(0) 编辑
摘要:void RMQ_init() { for(int i=1; i<=n; i++) dp[i][0]=s[i]; for(int j=1; (1<<j)<=n; j++) for(int i=1;i+(1<<j)-1<=n;i++) dp[i][j]=max(dp[i][j-1],dp[i+(1<< 阅读全文
posted @ 2016-03-04 20:28 chenhuan001 阅读(158) 评论(0) 推荐(0) 编辑
摘要:换了个模板。 O(n)复杂度求P串出现在T串中的所有位置。 void getFail(char* P, int* f) { int m = strlen(P); f[0] = 0; f[1] = 0; for(int i = 1; i < m; i++) { int j = f[i]; while( 阅读全文
posted @ 2016-03-04 08:40 chenhuan001 阅读(155) 评论(0) 推荐(0) 编辑
摘要:扩展KMP指的是 对于给出的串S和T,以O(n)的时间求出。 对于所有0<=i<len(S),S(i,i+1,...,len(s)-1)与T的最长前缀长度。 next[i]为满足B[i..i+z-1]==B[0..z-1]的最大的z值。 以下是模板: #include <iostream> #inc 阅读全文
posted @ 2016-03-04 00:40 chenhuan001 阅读(309) 评论(0) 推荐(0) 编辑
摘要:唉 被秀了。。。 还是太弱,说好的数形结合呢,列个式子出来后就被吓到了,然后就懵逼了。 题意: 有一条狗,从原点出发,沿n个向量走,每个向量只走一次,沿着一个向量(x,y)走时,既可以往(x,y)方向走,也可以往(-x,-y)方向走。 然后问这条狗离原点最远的距离。 如果写成方程: n个向量分别表示 阅读全文
posted @ 2016-03-03 22:42 chenhuan001 阅读(360) 评论(0) 推荐(0) 编辑
摘要:偶然碰到这个算法,学习下。 这样可以在O(n^3)的时间内找出非二分图的最大匹配。 #include <cstdio> #include <algorithm> #include <set> #include <vector> using namespace std; const int NMax= 阅读全文
posted @ 2016-03-03 21:37 chenhuan001 阅读(382) 评论(0) 推荐(0) 编辑
摘要:1.普通素数筛选模板 最普通的方法。。。 2.快速素数筛选 这种方法经证明只需要2n的复杂度,但是因为有*,/,%等运算,所以只比一般素数筛选快3倍左右。 关于复杂度的证明,用整体的思路就很好证明,算法由一层循环O(n)再加上所有产生的合数,可以证明每个合数都会被产生一次且仅一次。 所以这个算法每一 阅读全文
posted @ 2016-03-01 17:20 chenhuan001 阅读(507) 评论(0) 推荐(0) 编辑
摘要:题意无比诡异。 http://acm.timus.ru/problem.aspx?space=1&num=1716 俄罗斯的英文简直把我吓尿。 题意是对于输入:X1X2X3X4(Xi为YES或NO) 装变为 Y X1X2X3 然后问xi对应的错误的期望个数。 每种情况都是等概率的。 然后用dp做 d 阅读全文
posted @ 2016-03-01 11:00 chenhuan001 阅读(214) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示