bzoj3922 Karin的弹幕

迷之数据结构.我的想法比较简单,确定一个值b,对所有小于b的k建线段树维护,对大于b的k直接朴素找. 于是时间复杂度算起来比较迷. 试了一下发现b取20的时候能过.虽然还是跑得最慢的一个.无语喽.大概我不是正解.

March 29, 2015 · 1 min · laekov

bzoj2289 POJ Challenge圆,圆,圆

白天讲课讲到的题。感觉比较有意思于是就去写了。然后这也是我超过于教授的题。感觉还是挺有意义的。 之前遇到过这个题。不过没有想出比较靠谱的方法。然后就用黑暗水过了。这回算是来对地方了。 做法比较简单。二分一个xo,看x=xo这条直线上有没有一部分被所有圆覆盖。如果有就ok。没有的话,如果有圆完全在它左或者它右,那么可以确定二分往哪边走或者无解。否则去随便找两个不相交的圆。如果它们在不同侧那就没有解了。在同一侧也可以确定方向。虽然我觉得没解这个地方需要再想想严格的证明。 不过反正填了2个点分之后终于写了道有意思的题,开心ing。 Historical Comments Unknown friend at 2016-01-18T08:27:34 @bzoj2289: “否则去随便找两个不相交的圆。如果它们在不同侧那就没有解了。” QAQ这里是有反例的……! —- anonymous Unknown friend at 2016-01-18T08:27:34 @bzoj2289: “否则去随便找两个不相交的圆。如果它们在不同侧那就没有解了。” QAQ这里是有反例的……! —- anonymous Unknown friend at 2016-01-18T22:40:55 @bzoj2289: 也许是吧= =表示高考解析几何比这玩意好玩多了ovo还有啊匿名是几个意思ovo —- laekov Unknown friend at 2016-01-18T22:40:55 @bzoj2289: 也许是吧= =表示高考解析几何比这玩意好玩多了ovo还有啊匿名是几个意思ovo —- laekov

March 28, 2015 · 1 min · laekov

bzoj3784 树上的路径

又是idy开的坑。感觉回去要被他吊打致残。 树分治。最开始想用二分,然后直接去每个分治点上查询。这样的总复杂度是O(n*log3n)的。不过感觉常数比较小而且绝对省代码,只用二分不用数据结构。然后发现要输出所有的边。这个算法要用容斥一样的东西来减,根本搞不定。 于是向mhy学习。使用类似noi那个超级钢琴的思路,每次把最大的一条路径找出来,然后找它的替代品。树分治后,对于每一个树上的团,算出它的dfs序。默认一个点与dfs序在它前面的区间中最深的连边。这样就可以保证不重,也比较好写。然后用堆来维护。堆中一个点需要记录的信息是这个点的答案,线段树的根,左右端点,这个点到分治团的根的距离。然后每次找出一个最大的之后把它的区间再折成两半扔回堆里就好啦。 比较神的做法。感觉我自己是想不出来的。要是考场上遇到还真会出事呢。郁闷ing。

March 27, 2015 · 1 min · laekov

bzoj2698 染色

没有五笔好烦。 无语的期望题。AC第一页最长。 首先用像借教室一样的做法去求每个位置被覆盖了多少次。然后一个下降的序列需要求导再积回来。然后发现要加回来,这个东西是不能积的。于是坑了我好久。 最后期望就是∑1-Pim。其中Pi表示第i个点被任意一个区间覆盖的概率。 水过去啦。

March 27, 2015 · 1 min · laekov

bzoj1095 [ZJOI2007]Hide 捉迷藏

迷一样的欧拉序列的题。然后似乎只有岛君的题解能看啊233。 其实就是在欧拉序列上,两点u,v之间的距离=(dfb[u], dfe[v]]之间未匹配的括号数(左开右闭)。其中dfb表示左括号的位置,dfe表示右括号的位置。 然后就是写一个线段树去维护了。写得比较丑,把所有数对都记下来了。其实只用记和跟差就行了。然后要强制如果一端是空的那么这个点就不能作为端点。完了。 然后dfs这一步越写越短了,开心hhh。 于是代码巨长还巨丑还巨慢。

March 26, 2015 · 1 min · laekov

bzoj2806 ctsc2012 Cheat

我的SAM第一题。按照惯例几乎是照着std抄的OVO。本来以为是要在SAM上DP,后来发现好像是并列的,于是比较开心。 SAM这个东西主要就是用来匹配子串用的。建法详见clj的课件,然后现在我还处于消化状态中。 SAM匹配多个串的话也比较好弄,直接在串末再加一个字符集里没有的元素就好了。 现在假设已经用SAM匹配出了第i个位置往左ml[i]个位置都是可以匹配的,那么可以二分一个答案,然后用单调队列来DP判断。写法比较简单,虽然我急着去写SAM所以这部分也是蒙过去的。 然后网上的2个std就有2种不同的答案还和我不一样。最后还是wd学长的代码靠谱orz。 现在我可以说我是写过SAM的人了哈哈。

March 25, 2015 · 1 min · laekov

bzoj3221 Codechef FEB13 Obserbing the tree树上询问

很早之前就看过的题。一直被数据范围吓到,然后感觉也比较难写所以都没写。后来发现还是挺好的。 就重链dfs序维护一下每个位置的和,然后可持久化一下就完了。然后一个常数优化是如果这个点是在这次修改的时候建的,那么就直接覆盖而不是新建点。然后跑得就比较快了。

March 23, 2015 · 1 min · laekov

bzoj3328 PYXFIB

上课讲的神题。构造公式。本来用HTML写了一堆公式的。然后天杀的网就断了要我重新开然后就没了。很想骂人。那就不写了呗,自行翻课件或者yy。

March 22, 2015 · 1 min · laekov

bzoj2700 聚会

比较基础的dp。不过因为权限的原因好像做的人不多。 首先肯定先泡便宜的茶再泡贵的茶。 然后记一下上一种茶是啥,连续泡了几次。 于是用f[i][j][k][l]表示泡了i个红茶,j个绿茶,上一种茶是k,连续泡了l次的最小花费。转移是O(1)的。然后后两个反正都要手拆开,所以干脆压下来了。 似乎很水的样子。

March 20, 2015 · 1 min · laekov

bzoj2683 简单题

水水的cdq。久了不写练一下手。然后发现犯了一堆逗错。幸好没过样例不然就do big die了。

March 20, 2015 · 1 min · laekov