03 2017 档案

摘要:设$f[i][j][k]$表示从房间$j$的第$k$扇门进去探索不超过$i$步的情况。 对于$0$步的情况,可以用每个房间的度数来表示。 否则可以绕着那个房间走一圈,将所有情况依次hash来表示。 最后对于每个房间求出$f$的最小表示,即可完成hash。 时间复杂度$O(n^4)$。 阅读全文
posted @ 2017-03-31 14:36 Claris 阅读(304) 评论(0) 推荐(0)
摘要:A. Count The Ones $ans=b-c+1$。 B. Craters 求出凸包,然后枚举凸包上两个点,对第三个点旋转卡壳。因为随机数据凸包期望点数为$O(\sqrt{n})$,故时间复杂度为$O(n\log n)$。 C. MSTrikes back! 记录最后$5$个点连通性的最小表 阅读全文
posted @ 2017-03-30 23:37 Claris 阅读(456) 评论(0) 推荐(0)
摘要:将所有点投射到二维平面上,枚举形成答案的两个$1$类点作为端点,以及过这两点的两条平行直线,那么答案就是直线边上以及内部的点数。 显然只需要枚举$1$类点形成的凸包上的点。 如果只有一个$1$类点,那么答案是$1$。 如果凸包大小为$1$,那么只有和它重合的$0$类点会被计入答案。 如果凸包大小为$ 阅读全文
posted @ 2017-03-27 01:36 Claris 阅读(306) 评论(0) 推荐(0)
摘要:对于每条河流,要让它排名最靠前,那么显然它必须要延伸到根。 设第$i$条河流到根的距离为$d[i]$,对于每个节点,如果存在一条河流比$d[i]$长,那么让它延伸会使答案最小,否则要选择一条最短的河流来进行延伸。 设$f[i]$表示每个节点往外延伸的河流的长度的最小值,可以通过树形DP求出。 从小到 阅读全文
posted @ 2017-03-25 01:05 Claris 阅读(406) 评论(0) 推荐(0)
摘要:将球员按限制从大到小排序,那么最优解中每支球队都是一个连续的区间。 设$f[i]$表示前$i$大的球员成功组队时,最多能组的队伍数,$g[i]$表示此时最大人数的最小值。 那么$f[i]=\max(f[j]+1),a[j]\geq i-j$,即$a[j]+j\geq i$。 注意到$a[j]+j>j 阅读全文
posted @ 2017-03-23 02:47 Claris 阅读(270) 评论(0) 推荐(0)
摘要:从右往左扫描线,用线段树维护扫描线上每一个点能达到的花的数量,并支持最近篱笆的查询。 对于一朵花,找到它上方最近的篱笆,那么它对这中间的每头牛的贡献都是$1$。 当扫到一个篱笆的右边界时,这中间的答案都要清零。 当扫到一个篱笆的左边界时,这中间的答案同理都要清零,但是要向上直到最近的篱笆为止都加上下 阅读全文
posted @ 2017-03-14 21:47 Claris 阅读(415) 评论(1) 推荐(1)
摘要:从$(0,0)$开始BFS$2\times10^6$步,那么迷宫的形状有三种: 1.走不完$2\times10^6$步,直接判定即可。 2.可以走到$(n,0)$以及$(0,m)$,那么直接把询问点平移到一开始的小迷宫里即可。 3.可以沿着$(dx,dy)$这个向量达到某些左上角,那么先三分沿向量走 阅读全文
posted @ 2017-03-14 10:50 Claris 阅读(449) 评论(0) 推荐(0)
摘要:对于高度相同的一段可以合并,用链表从左往右维护这些连续段,每段维护以下信息: $l,r$:表示区间的左右端点。 $t,a$:表示在第$t$天结束时它的高度是$a$。 $b$:当阳光在左边时它是否会长高。 $c$:当阳光在右边时它是否会长高。 令$sa[i],sb[i]$分别表示前$i$天中阳光在左/ 阅读全文
posted @ 2017-03-13 22:39 Claris 阅读(870) 评论(3) 推荐(2)
摘要:求出前缀和$s[]$,那么区间$[l,r]$的几乎平均数$=\frac{s[r]-s[l-1]}{r-l}$。 若只有一个询问,那么可以维护$(i,s[i-1])$的凸壳,在凸壳上二分点$(i,s[i])$的切线。 对于多个询问,考虑分块,那么只需要暴力处理零碎部分即可。 时间复杂度$O(n\sqr 阅读全文
posted @ 2017-03-03 21:55 Claris 阅读(274) 评论(0) 推荐(0)
摘要:首先枚举$n$的每个约数$d$,检查一下$d+1$是否是质数,这些数都有可能作为答案的质因子出现。 考虑爆搜,每次枚举下一个要在答案中出现的质因子$p$,将$n$除以$p-1$,再枚举$p$的指数,然后递归搜索。 需要加一些剪枝: $1.$当$n=1$的时候说明找到了一组合法解,直接返回。 $2.$ 阅读全文
posted @ 2017-03-03 19:57 Claris 阅读(295) 评论(0) 推荐(0)
摘要:长为$A$,宽为$B$的矩阵放$K$个车的方案数$=C(A,K)\times C(B,K)\times K!$。 建立笛卡尔树,那么左右儿子独立,设$f[i][j]$表示$i$子树内放$j$个车的方案数。 合并左右儿子之后,枚举在底部矩形放几个车进行转移即可。 时间复杂度$O(n^3)$。 阅读全文
posted @ 2017-03-01 17:27 Claris 阅读(394) 评论(0) 推荐(0)