Loading [MathJax]/jax/element/mml/optable/BasicLatin.js

03 2017 档案

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

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