
分治
LowestJN
强省弱OIer
展开
-
[BZOJ4449][Neerc2015][分治][最短路]Distance on Triangulation
题意给定一个凸n边形,以及它的三角剖分。再给定q个询问,每个询问是一对凸多边行上的顶点(a,b),问点a最少经过多少条边(可以是多边形上的边,也可以是剖分上的边)可以到达点b。这道题刚了3个小时啊 然而因为一句swap没打只有45分……类似于zjoi2016的旅行者对于当前的图,找到一条边能够把图分成左右两半,比如图中2-5这条边 对于询问(x,y),若x在这条边的左边,y在这条边的右边,那么这原创 2017-03-06 20:42:34 · 1118 阅读 · 0 评论 -
[分治最短路 && 树链剖分]Codechef September Challenge 2017 QGRID. Querying on a Grid
传送门 代码能力大屠杀系列 挺套路的题。 这个一个网格图,mm 只有3,那么第一想法就是对网格图分治。 对于分治到的区间 [l,r][l,r] ,令 mid=l+r2mid={l+r\over 2} ,就是中线。我们可以对中线上的 mm 个点各做一遍最短路,如果一个修改操作的两个点 x,yx,y 的最短路径在这个区间内,又跨越了中线,那么这个最短路径肯定要经过中线上的 mm 个点之一。所以我原创 2017-09-13 19:06:11 · 516 阅读 · 0 评论 -
[DP 决策单调性] Codeforces Gym 101002H .Jewel Thief
体积很小,可以把物品按体积分类。枚举每种体积,做背包。 对于体积 SS ,把体积为 SS 的物品案价值从大到小排序,VSV_S 为前缀和 fi,j=max{fi−1,j−k×S+Vk×S}f_{i,j}=\max\{f_{i-1,j-k\times S }+V_{k\times S}\}然后看Manchery博客可以发现这个东西是有决策单调性的…分治一下。#include <cstdio>#i原创 2017-09-02 09:25:49 · 783 阅读 · 0 评论 -
[DP 决策单调 分治]Codeforces 868F .Yet Another Minimization Problem
DP 令 fi,jf_{i,j} 表示前 ii 个数分成 jj 个区间的最小代价那么 fi,k=min{fj,k+cost(j+1,i)}f_{i,k}=\min\{f_{j,k}+cost(j+1,i)\} 这东西很想之前CF833B那种可以用线段树维护的套路但是因为 cost()=∑ai∗(ai−1)2cost()=\sum \frac{a_i*(a_i-1)}{2},这东西用线段树不好维护原创 2017-10-05 21:44:27 · 1246 阅读 · 0 评论 -
[分治 Floyd] 计蒜之道2016复赛 .百度地图的实时路况
对 yy 分治假设处理到 [l,r][l,r] 区间,如果 l=rl=r ,n2n^2 扫一遍 disdis 数组记录答案。否则把 [l,mid][l,mid] 的边加入图中,递归做 [mid+1,r][mid+1,r],再把 [mid+1,r][mid+1,r] 的边加入图中,递归做 [l,mid][l,mid]#include <cstdio>#include <iostream>#inc原创 2017-10-20 21:11:01 · 669 阅读 · 0 评论 -
[xor最小生成树 分治 字典树合并] BNUOJ52318 Be Friends
二进制从高到低分治,当前分治到第 ii 位那么肯定是把第 ii 位为0的放一起,为1的放一起,这两块分别成一个联通块,然后之间连一条边是最优的两块分治下去。找最小边的话一边建字典树,另一边的数在字典树上找#include <cstdio>#include <iostream>#include <algorithm>using namespace std;const int N=100010;ty原创 2017-10-23 20:06:40 · 533 阅读 · 0 评论 -
[分治FFT] LOJ#6183. 看无可看
推一推 fn" role="presentation">fnfnf_n 的通项fn=a×3n−b×(−1)n" role="presentation">fn=a×3n−b×(−1)nfn=a×3n−b×(−1)nf_n=a\times 3^n-b\times (-1)^na" role="presentation">aaa 和 b"原创 2018-02-03 16:44:33 · 782 阅读 · 0 评论 -
[启发式分裂] BZOJ5200 [NWERC2017]Factor-Free Tree
当找到一个根的时候会把区间分成两个部分,然后递归做问题就是怎么找根了可以用bzoj4059那种思路,大概叫启发式分裂吧对每个数,可以预处理一下在它左边第一个与他不互质的数和在它右边第一个与它不互质的数然后就 O(nlogn)O(nlogn)\mathcal{O}(n\log n) 搞就可以了#include <cstdio>#include <iost...原创 2018-03-07 08:28:27 · 868 阅读 · 0 评论 -
[决策单调 分治] LOJ#535. 「LibreOJ Round #6」花火
如果 i&lt;ji&lt;jiai&gt;ajai&gt;aja_i>a_j 那么 iii 作为左端点比 jjj 优,右端点同理那么搞出两个上升序列,发现右端点递增的时候左端点也是单调上升的,也就是gjghfd和vector说的具有决策单调分治就好了#include &lt;cstdio&gt;#include &lt;iostream&gt;#in原创 2018-03-09 13:30:13 · 959 阅读 · 2 评论