08 2016 档案

摘要:首先拓扑,每次取出度数为$2$的点,这样可以把所有三角形都找到。 那么建出对偶图,会发现是一棵树。 对这棵树进行点分治,每次取出重心,DFS求出所有在里面的点,然后从重心$3$个点分别做一次BFS。 对于每个询问,如果不经过重心这个区域,那么递归求解,否则用BFS的结果回答即可。 时间复杂度$O(n 阅读全文
posted @ 2016-08-30 22:55 Claris 阅读(863) 评论(0) 推荐(1)
摘要:两个函数相同等价于不存在长度为$3$的下降子序列。 先考虑随意填的部分,设$f[i][j]$表示考虑了$[i,n]$,下降子序列第$2$项的最小值的是这里面第$j$个的方案数,转移则考虑往序列里插数字,可以通过后缀和优化到$O(n^2)$。 然后考虑已固定的部分,设$g[i][j]$表示考虑了$[i 阅读全文
posted @ 2016-08-29 17:21 Claris 阅读(509) 评论(0) 推荐(0)
摘要:如果不存在模糊点,那么答案就是两个串的最长公共子串。 如果模糊点是某个串的开头或者结尾,那么可以暴力枚举另一个串中的某个前后缀更新答案。 否则,假设模糊点在第一个串里是$i$,在第二个串里是$j$,那么此时对答案的贡献为$lcp(i+1,j+1)+lcs(i-1,j-1)+1$。 将两个串用特殊字符 阅读全文
posted @ 2016-08-29 13:42 Claris 阅读(975) 评论(0) 推荐(0)
摘要:二分答案,转化为判定问题。 建立有向图,$a->b$连边表示$a$是$b$的子集,至此可以处理掉$1$和$2$。 对于$5$,则往对应点的集合塞一个元素,即可满足$5$。 首先求出强连通分量进行缩点,再递推出每个集合的必备元素以及每个集合的所有子集,用bitset加速,可以做到$O(\frac{m^ 阅读全文
posted @ 2016-08-28 20:09 Claris 阅读(270) 评论(0) 推荐(0)
摘要:对于每个祭坛,算出每条线段阻碍它的角度区间,然后排序求并看看是否有空位即可,时间复杂度$O(n^2\log n)$。 这题在Main上官方时限是0.2S,因此需要几个常数优化: $1.$为了避免用atan2(y,x)算角度,改成算斜率,所以需要分$4$个方向讨论。 $2.$对区间排序时,不要直接对结 阅读全文
posted @ 2016-08-26 00:15 Claris 阅读(274) 评论(0) 推荐(0)
摘要:题目等价于去掉两条边,使得剩下的图连通,且所有点度数都为偶数。 首先特判掉图一开始就不连通的情况。 求出dfs生成树,对于每条非树边随机一个权值,每条树边的权值为所有经过它的非树边权值的异或和。 那么剩下的图连通等价于两条边权值非$0$,且两条边的权值不等。 如果有$2$个奇点,那么两条边有公共点, 阅读全文
posted @ 2016-08-25 20:32 Claris 阅读(309) 评论(0) 推荐(0)
摘要:对于$mode=0$的情况: 假设已经知道了最终要做哪些成就,那么这些成就一定是按$b$递减做的。 将成就按$b$从大到小排序,考虑往已选集合里新加一个成就。 假设该成就前面有$t$个已选成就,后面成就的$b$的和为$suf$,那么选该成就对答案的增量为$t\times b+a+suf$。 依次贪心 阅读全文
posted @ 2016-08-24 20:48 Claris 阅读(341) 评论(0) 推荐(0)
摘要:考虑枚举哪些人一定不合法,那么方案数可以通过简单的排列组合算出。 于是设$f[i][j]$表示前$i$种糖果,一共有$j$个人一定不合法的方案数,但是这样并不能保证其他人一定合法,所以需要进行容斥。 最后将答案除以每种糖果数量的阶乘,即可保证本质不同。 时间复杂度$O(n^2)$。 阅读全文
posted @ 2016-08-22 19:30 Claris 阅读(363) 评论(0) 推荐(0)
摘要:首先将包含关系建树。 方法是将每个图形拆成上半边和下半边,从左往右扫描线,用Splay从下到上维护扫描线上所有图形。 每次加入一个新的图形$x$的时候,看看它下方第一个图形$y$,如果$y$是上半边,那么$x$的父亲就是$y$,否则是$y$的父亲。用同样的方法可以完成点定位。 然后每次相当于查询两点 阅读全文
posted @ 2016-08-21 22:53 Claris 阅读(499) 评论(1) 推荐(0)
摘要:首先通过分数规划,二分答案$mid$,将每条边边权重置为$t-mid\times s$,用DP求出终点到该点的最短路,若非正则可以更小。 如此可以计算出每个出入口的最小危险值,然后把奇点放在$S$,偶点放在$T$,代价为危险值,对于每个空腔,在相应点之间连无穷边,求最小割即可。 阅读全文
posted @ 2016-08-21 03:21 Claris 阅读(345) 评论(0) 推荐(0)
摘要:A类数据: 将棋盘黑白染色,相邻的点之间连边,求出二分图最大匹配即可。 B类数据: 答案为$\lfloor\frac{n^2-1}{3}\rfloor$,用FFT加速计算即可,时间复杂度$O(L\log L)$。 C类数据: 轮廓线DP,对于轮廓线上每个格子,要么为空,要么被占据,要么被占据且还要向 阅读全文
posted @ 2016-08-21 01:48 Claris 阅读(474) 评论(0) 推荐(0)
摘要:设$f[i][j][k]$表示从最后一行某个$H$走到$(i,j)$且在第$i$行只经过了$(i,j)$,途中经过了$k$次$F$的最小代价。 $A[i][j][k]$表示从下一行$\leq i$的某个$f[old][x][j]$且前$x-1$个有$k$个$F$的位置走过来的最小代价。 $B[i][ 阅读全文
posted @ 2016-08-20 17:38 Claris 阅读(291) 评论(0) 推荐(0)
摘要:枚举剩下的分数个数$k$,设最高的$k$个分数和的分子分母分别为$U$和$D$。 那么在选了的里面找到$A=\min(Dt[x]-Up[x])$,没选的里面找到$B=\max(Dt[x]-Up[x])$。 如果$A<B$,则可以更大。 对于$A,B$的计算,可以利用决策单调性分治求解。 时间复杂度$ 阅读全文
posted @ 2016-08-19 23:36 Claris 阅读(601) 评论(0) 推荐(0)
摘要:将所有点按横坐标排序,那么最长上升子序列和最长下降子序列里必有一个长度不小于$\sqrt{n}$。 因为如果最长上升子序列很短,那么根据Dilworth定理,它的反链长度与它成反比。 因此可以将$n$个点划分为不超过$\sqrt{n}$条链或者反链,每一个部分里都相当于只有一维坐标。 对于每一个部分 阅读全文
posted @ 2016-08-19 19:11 Claris 阅读(384) 评论(0) 推荐(0)
摘要:根据公式$x^k=\sum_{i=1}^k Stirling2(k,i)i!C(x,i)$, 设$f[i][j][k]$表示从$(i,j)$出发的所有路径的$C(路径长度,k)$的和, 根据$C(n,m)=C(n-1,m-1)+C(n-1,m)$,则有: $f[now][k]=\sum(f[nxt] 阅读全文
posted @ 2016-08-14 00:22 Claris 阅读(337) 评论(0) 推荐(0)
摘要:首先拓扑排序,并将障碍点按拓扑序平均分成两半。 那么一条$0$到$1$的路径一定是形如: $0$->前一半点->后一半点->第一个后一半障碍点->后一半点->$1$。 对于两边分别暴力枚举所有情况,设$f[i]$表示$0$出发到达$i$,且到$i$之前不经过任意一个后一半障碍点到达$i$的路径数;$ 阅读全文
posted @ 2016-08-13 19:22 Claris 阅读(495) 评论(0) 推荐(0)
摘要:显然求出每个点到所有关键点的最短路和次短路即可,答案就是每个关键点的次短路。 设$f[i][j][0]$表示左手在$i$,右手在$j$的解,$f[i][j][1]$表示左手在$i$,右手在$j$,且左手已经动了右手还没开始动的解,然后BFS即可。 时间复杂度$O(n(n+m))$。 阅读全文
posted @ 2016-08-13 03:41 Claris 阅读(363) 评论(0) 推荐(0)
摘要:首先旋转坐标系,假设$(x,y)$被$(X,Y)$遮挡等价于$X\leq x$且$Y\leq y$。 对于每种坐标系建立两棵线段树: 第一棵按$x$维护已经加入的点的$y$的最小值; 第二棵按$x$维护看得见的点的$y$的最大值。 对于一块三角板,通过第一棵线段树查询即可知道是否可以放下,然后在第二 阅读全文
posted @ 2016-08-13 02:43 Claris 阅读(224) 评论(0) 推荐(0)
摘要:答案由$3$部分构成: $1$.抛物线的极值。 $2$.询问区间的左端点在抛物线上的值。 $3$.询问区间的右端点在抛物线上的值。 对于$1$,就是某个矩形范围内最大值查询,使用KD-Tree可以在$O(\sqrt{n})$的时间内完成询问。 对于$2$和$3$,对编号建线段树,每个节点维护该区间内 阅读全文
posted @ 2016-08-12 22:54 Claris 阅读(680) 评论(0) 推荐(0)
摘要:考虑以块大小为$32$将序列分块,设$s[i][j]$表示前$i$块和前$j$块矩形相交的对数,$f[i][j]$表示矩形$i$和前$j$块的相交个数。 如果矩形$i$和$j$相交,那么有: $x_1[j] < x_2[i]$ $x_2[j] > x_1[i]$ $y_1[j] < y_2[i]$ 阅读全文
posted @ 2016-08-12 02:19 Claris 阅读(346) 评论(0) 推荐(0)
摘要:每种颜色的点集肯定是独立集,因此可以通过$O(2^n)$枚举每个集合判断出每个集合是否只需要一种颜色即可染色。 设$f[i][S]$表示$i$种颜色覆盖$S$这个集合的方案数,假定两个集合可以相交,那么最优解一定不相交,所以有$f[i][S]=\sum_{u\ or\ v=S}f[1][u]\tim 阅读全文
posted @ 2016-08-11 22:24 Claris 阅读(440) 评论(0) 推荐(0)
摘要:首先通过随机增量法求出最小覆盖圆,作为答案的上界。 然后二分答案,检验的时候枚举每个点作为原点,求出其他每个点被包括在圆内的角度区间,然后扫描线即可。 时间复杂度$O(Tn^2\log n)$。 阅读全文
posted @ 2016-08-10 21:11 Claris 阅读(345) 评论(0) 推荐(0)
摘要:设每个点的权值为和它相连的所有边的权值的异或和,那么等价于选若干个点,使得点权异或和最大,这显然只需要维护一组线性基,然后从高位到低位贪心选取即可。 对于本题,因为有修改操作,所以考虑按时间分治,并用bitset加速,时间复杂度$O(\frac{m\log mL^2}{64})$。 针对插入操作,可 阅读全文
posted @ 2016-08-03 22:19 Claris 阅读(696) 评论(0) 推荐(0)
摘要:设$f_i$表示以$i$结尾的square个数,$g_i$表示以$i$开头的square个数,则$ans=\sum_{i=1}^{n-1} f_ig_{i+1}$。 枚举square中长度的一半$L$,每$L$步取一个关键点,那么每个该长度的square的肯定恰好经过两个相邻的关键点,且位置差距为$ 阅读全文
posted @ 2016-08-03 01:21 Claris 阅读(1933) 评论(0) 推荐(0)
摘要:首先离散化,即相邻关键点之间的部分可以压成一段。 注意到区间互不包含,因此排序后每个位置的清理影响到的是一段连续区间的清理工的工作长度。 这显然可以用线段树维护,支持区间减去一个数,单点加上$inf$,以及查询全局最小值。 对于每次清理,暴力枚举区间内所有没清理过的段,在线段树中区间修改,用并查集进 阅读全文
posted @ 2016-08-02 00:47 Claris 阅读(417) 评论(0) 推荐(0)