摘要: 人生的第一道树分治,要是早点学我南京赛就不用那么挫了,树分治的思路其实很简单,就是对子树找到一个重心(Centroid),实现重心分解,然后递归的解决分开后的树的子问题,关键是合并,当要合并跨过重心的两棵子树的时候,需要有一个接近O(n)的方法,因为f(n)=kf(n/k)+O(n)解出来才是O(nlogn).在这个题目里其实就是将第一棵子树的集合里的每个元素,判下有没符合条件的,有就加上,然后将子树集合压进大集合,然后继续搞第二棵乃至第n棵.我的过程用了map,合并是nlogn的所以代码速度颇慢,大概6s,题目时限10s,可以改成hash应该会快许多,毕竟用map实在太慢,用vector也. 阅读全文
posted @ 2013-11-07 01:49 chanme 阅读(452) 评论(0) 推荐(0) 编辑
摘要: 过了一个礼拜才写总结,我实在是太懒了,不过也没办法,人总是有点懒的嘛。这次比赛坐了飞机过去,去的时候状态很好,到步的第一天晚上吃了个略丰盛的火锅,虽然我实际上是不停的装蛋炒饭吃饱的。那天晚上稍微做了下去年的同一个大学出的题,那个时候做也YY了不少成果,看出一道题是2-sat,无赖没打过,不过要是真的是现场赛的话还是有可能做出来的,至少是个铜,于是第二天信心十足的打热身赛。 热身赛是个大坑,开篇第一题是个dp,队友负责看,我拿来就看第3题,推了一下,出了个公式,而且数据量极水,问你n=4,已经告诉你n=1,2,3的时候了,不过因为沟通失误,我一来推错公式,二来说错数字,WA了好多好多发,热... 阅读全文
posted @ 2013-10-28 17:21 chanme 阅读(248) 评论(1) 推荐(1) 编辑
摘要: 第一次学怎么用高斯消元法解抑或方程组,思想其实很简单,方法可以看下面的链接:http://blog.csdn.net/zhuichao001/article/details/5440843 有了这种思想之后,一些简单的翻牌问题也算是有了头绪,还记得之前做一到翻一次牌影响曼哈顿距离为k的点的题,现在看来是有思路,但那个貌似是900个点,不好搞呀,自己回头再想想吧。。先贴一记水题的代码#include#include#include#include#includeusing namespace std;int m[10][10];int ans[10][10];int eq[40][40];... 阅读全文
posted @ 2013-10-28 16:59 chanme 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 今天做了一下通化邀请赛的题目重现,有些题都不会呢,想搜一下,感觉都搜不到... 今天自己做了4题吧..我打代码的速度还是太慢了..先是1007的Canon,就是在中国象棋的棋盘里放炮,使得两两都不被吃,最多能放多少个.棋盘上可能原本就放了一些棋子(不是炮的),之前一直敲错,原来理解错了题意,注意是炮不被吃就可以了,原来的棋子是可以吃的.棋盘5*5,很小,搜一下就可以了,每次搜判断可不可以放就很容易过了的~. 然后是1010Dice.学会写递推就好F(n)=F(n-1)+1/6+5/6*(F(n)) 解一下F(n)=(6^n-1)/5 H(n)=G(n-1)+1/6+5/6(1+F(n)) H. 阅读全文
posted @ 2013-08-24 19:29 chanme 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 从昨天开始我就想学这个伸展树了,今天花了一个上午2个多小时加下午2个多小时,学习了一下伸展树(Splay树),学习的时候主要是看别人博客啦~发现下面这个博客挺不错的http://zakir.is-programmer.com/posts/21871.html.在里面有连接到《运用伸展树解决数列维护问题》的文章,里面对伸展树的旋转操作讲得很仔细,而且也讲清楚了伸展树是怎么样维护一个数列的,一开始我是小白,觉得树和数列根本没什么关系,但看了之后就会明白,实际上树上的结点是维护该结点的值的,而这个值是原来数列里的哪一项呢?如果该结点对应的中序遍历数k,那么就是对应原数列a中的a[k]这一项.理解了. 阅读全文
posted @ 2013-08-21 15:49 chanme 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 那么晚才发..说明卡在某题上了..今天终于A掉了3 idiots..FFT是个神奇的东西...不过有些long long的细节没处理好..所以卡了很久..吃浮点的亏,上符号的当,最后死在long long上..long long是个坑爹的东西.好吧,要总结了~总结一下:1.FFT 阅读全文
posted @ 2013-08-20 02:52 chanme 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 好困了,不总结那么多啦,今天看了下高斯消元法,算是一种工具算法,以后碰到解方程的问题就可以用高斯去敲一下咯~.然后几何一直想学半平面交,但是实在太难看懂了目前来说,有空我得补上一些模板,线段与直线交,线段与线段交,直线与直线交之类的,这些基础算法真的到了自己敲的时候可不是随便YY得出来的(各种细节处理),今天还敲了道树dp,对树dp算是有了更深入的了解吧.加油~总结一下:1.高斯消元法2.树形dp 阅读全文
posted @ 2013-08-18 23:19 chanme 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 一道树形dp,写出来是因为最近也做了道类似的.这题是看了分析的思路才做出来的,但感觉很多这样的dp都是利用类似的性质.像这题的话distDown很好想,但distUp的时候就很难想了,其实只要抓住distUp的必然经过父结点或者它的兄弟经过父结点,这周二的多校的那道也是类似的.但是要在线性时间里求出兄弟结点的时候就要注意,我们不可能遍历这个点的所有兄弟结点,所以好的办法就是存最大的两个,当该点是最大的,就用次大的算,其余的都用最大的算.多校的那个也是类似的,不过要存最大,次大,次次大,是有点麻烦.下面贴一记代码初始化为负无穷有点麻烦的样子- -0#include#include#includ. 阅读全文
posted @ 2013-08-18 14:18 chanme 阅读(341) 评论(0) 推荐(0) 编辑
摘要: 看了好久,终于把这题过了..这题的意思也很简单,就是支持3种操作,区间l,r的每个数乘上一个数,加上一个数,令为某个数.维护的信息则是某个区间这些数的1次方和,2次方和,3次方和.这题对于区间修改的线段树的理解很有帮助,以前都是套模板不知其所以然.实际上只要写好两个函数就可以了,一个pushDown,一个是pushUp, pushDown的实际就是将该点的标记往下传,传的时候要更新子结点的标记,以及更新子结点的信息,在有多个标记的时候就要考虑标记的先后顺序的影响,这个体现在标记下传的函数里.pushUp则是写好要维护的信息,这个相对就很简单. 对于本题来说,可以写3个标记或者2个标记.可以写. 阅读全文
posted @ 2013-08-17 20:59 chanme 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 那么久才写一次日记,说明前段阵子我都在偷懒,也不是偷懒吧,感觉自己提高的方向有点不知所措,很多题都搞不出来,没什么信心呢...现在也一样..说好的字符串没学..想好的网络流也没怎么搞..图论学了些基础算法看到题依然是想不出来...复杂的代码我写的话要写好久...队友的速度快好多...所以看到题也没什么信心写呢- -0.要说这几天真的学了什么,那可能是一些无意义的东西吧.线段树的区间修改倒是有了个质上飞跃的理解,对标记与标记下传理解了不少,感觉以前很多不会的线段树其实都可以写的样子,感觉其实只要写好标记,写好pushDown函数,维护好相应的信息,其它的没什么,就是不知道为什么我写的过不了,坑. 阅读全文
posted @ 2013-08-16 23:31 chanme 阅读(141) 评论(0) 推荐(0) 编辑