上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 38 下一页
摘要: 如果存在$k$使得$i<j<k$,且$a[k]<a[i]<a[j]$,那么$i$和$j$不能在一个栈中。 设$b[i]=\min(a[i..n])$,如果$b[j]<a[i]<a[j]$,那么$i$和$j$不能在一个栈中。 设$c[i]$表示最大的$j$,满足$b[j]<i$,则$i$要向位置在$[ 阅读全文
posted @ 2016-10-07 02:28 Claris 阅读(591) 评论(0) 推荐(0) 编辑
摘要: 将所有数分解质因数,那么第一问就是求指数的最大值,第二问就是$2^{指数最大的质数个数}-1$。 首先将$10^6$以内的质因数全部找到,那么剩下部分的因子$>10^6$,且只有3种情况: 1.大质数 2.大质数的平方 3.两个大质数的乘积 对于1可以用MillerRabin算法判定,对于2可以尝试 阅读全文
posted @ 2016-10-06 02:44 Claris 阅读(308) 评论(0) 推荐(0) 编辑
摘要: A. As Easy As Possible 每个点往右贪心找最近的点,可以得到一棵树,然后倍增查询即可。 时间复杂度$O((n+m)\log n)$。 B. Be Friends 从高位到低位依次考虑,对于每一位,按这一位将数字分成两个集合,显然这两个集合要优先连边,那么只需要找到横跨这两个集合的 阅读全文
posted @ 2016-10-06 00:21 Claris 阅读(455) 评论(0) 推荐(0) 编辑
摘要: A. RPG 首先计算出每个技能对于每个属性值的可行区间,若区间为空则不合法。 枚举两个技能,以及每个属性值,根据区间的关系可以得到哪个必须要在另一个之前学,连边看看是否有环即可。 时间复杂度$O(n^2m)$。 B. Integer in integer 按KMP的next数组进行数位DP即可,时 阅读全文
posted @ 2016-10-05 02:08 Claris 阅读(253) 评论(0) 推荐(0) 编辑
摘要: A. Freestyle 如果逆序对为$0$,那么先手必败。 因为每次只能翻转长度为$4k+2$和$4k+3$的区间,所以每次操作之后逆序对的奇偶性一定会发生改变。 因此如果逆序对个数为偶数,则先手必败。 B. Checkout lines 从后往前贪心构造。 C. Heli-ski 如果$n$比较 阅读全文
posted @ 2016-10-03 00:43 Claris 阅读(273) 评论(0) 推荐(0) 编辑
摘要: A. Graph Coloring 答案为$1$很好判,为$2$只需要二分图染色,对于$3$,首先爆搜哪些边要染成第$3$种颜色,然后二分图染色判定即可。 B. Decimal Fraction 枚举前缀,那么只需要求出后面部分的最小循环节即可,将串翻转之后进行KMP,循环节长度$=i-next[i 阅读全文
posted @ 2016-09-30 20:50 Claris 阅读(371) 评论(0) 推荐(0) 编辑
摘要: 首先把所有串拼起来,后插入的串在前面,得到一个大串。 那么任意时刻,每个串是由这个大串的若干个不相交的子串从左到右拼接而成。 用线段树维护每个串,每个节点维护一个标记,表示区间内的串要加上什么前缀。 用可持久化线段树维护这些串和标记,那么合并就是线段树的合并,因为取值区间互不相交,所以每次合并的复杂 阅读全文
posted @ 2016-09-30 01:55 Claris 阅读(691) 评论(0) 推荐(0) 编辑
摘要: 因为是二分图,所以最大独立集$=$总点数$-$最大匹配。 因为是树,所以具有贪心性质,设$f_i$表示$i$是否与其孩子匹配,$a_i$表示$i$的孩子里$f$为$0$的个数,则$f_i=[a_i>0]$。 加入一个新的叶子的时候,影响的$a$是连续的一段,这一段上与它距离为奇数的点的$a$都要是$ 阅读全文
posted @ 2016-09-29 22:59 Claris 阅读(343) 评论(0) 推荐(0) 编辑
摘要: A. Explosions 注意到将炸弹按坐标排序后,每个炸弹直接引爆和间接引爆的都是连续的一段区间,因此只需要求出每个炸弹能间接炸到的最左和最右的炸弹即可。 建立图论模型,炸弹$i$向炸弹$j$连单向边表示$i$爆炸会直接引起$j$的爆炸,那么建完图后求出SCC缩点然后拓扑排序+DP即可求出答案。 阅读全文
posted @ 2016-09-25 22:29 Claris 阅读(458) 评论(0) 推荐(0) 编辑
摘要: 对于一个固定的区间$[l,r]$,显然只要将里面的数字从小到大排序后将最小的$m$个和最大的$m$个配对。 如果固定左端点,那么随着右端点的右移,$SPD$值单调不降,所以尽量把右端点往右移,贪心分割即可。 为了使得扫过的部分一定被分割下来,考虑倍增枚举区间长度,然后排序检验。 在得到区间长度属于某 阅读全文
posted @ 2016-09-25 02:34 Claris 阅读(511) 评论(0) 推荐(0) 编辑
摘要: 把第一行每个位置设成未知量,对于之后每一行,都可以用第一行的未知量线性表示。 那么只需要加上最后一行的$m$个方程,对于不能按的那$k$个位置也列出对应的方程。 用高斯消元判断是否有解即可,时间复杂度$O(\frac{n^3}{64})$。 阅读全文
posted @ 2016-09-22 20:40 Claris 阅读(390) 评论(0) 推荐(0) 编辑
摘要: 枚举LCP以及下一位变小成什么,统计出剩下的有几个可以在原位置。 然后枚举剩下的至少有几个在原位置,容斥计算答案。 时间复杂度$O(n^3)$。 阅读全文
posted @ 2016-09-21 19:35 Claris 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 考虑枚举回文中心,然后向两边扩展,当匹配到当前串的边界的时候,枚举下一个串接上。 这个过程可以通过记忆化搜索来完成,设: $f[i][0]$表示对于$i$这个位置,$[i,串结尾]$等待匹配的最长回文子串。 $f[i][1]$表示对于$i$这个位置,$[串开头,i]$等待匹配的最长回文子串。 如果在 阅读全文
posted @ 2016-09-21 01:31 Claris 阅读(408) 评论(0) 推荐(0) 编辑
摘要: 建立线段树,设$f[x][l][r]$表示当前考虑$x$点,最左端是$l$,最右端是$r$的最少代价。 如果$a$在$x<<1$,$d$在$x<<1|1$, 设$g[a][c]=\min(f[x<<1][a][b]+w[b][c])$, 则$f[x][a][d]=\min(g[a][c]+f[x<< 阅读全文
posted @ 2016-09-19 23:17 Claris 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 这道题主要是要解决以下两个问题: 问题1: 给定一个点$x$,如何取出所有经过它的下水道? 一条下水道经过$x$等价于它起点在$x$的子树里面且终点不在$x$的子树里面,或者两端点的lca就是$x$。 对于第一种情况,也就是说起点在$x$的dfs序子区间里,终点小于$st[x]$或者大于$en[x] 阅读全文
posted @ 2016-09-14 02:51 Claris 阅读(2763) 评论(0) 推荐(0) 编辑
摘要: 首先将边进行去重,那么有$n\geq\sqrt{m}$。 然后二分答案,转化为判定是否存在两个点它们的出边集合的并集为全集。 那么这两个点必然满足$deg_x+deg_y\geq n$。 不妨设$deg_x\geq deg_y$,那么有$deg_x\times 2\geq n$。 考虑枚举$x$,最 阅读全文
posted @ 2016-09-10 00:25 Claris 阅读(370) 评论(0) 推荐(0) 编辑
摘要: 设$f_i$表示选择的答案区间左端点为$i$时,区间长度最小是多少。 那么每来一批人的时候,设$nxt$为$i$右边最近的一个可行决策,则$f_i=\max(f_i,nxt-i)$。 注意到$f$的形式是一条条斜率为$-1$的线段,且截距单调不下降,故每次修改可以转化为对截距的区间赋值。 用线段树维 阅读全文
posted @ 2016-09-08 09:40 Claris 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 首先将每个平原缩成一个点,建出图,相邻两个点之间的边权为它们高度的较小值。 用Kruskal算法求出这个图的最大生成树,每次合并两个连通块时新建一个点指向它们,得到一棵有根树。 对于每个点,求出它子树内最高的峰,那么对于每个叶子,在它到根的路径上二分查找即可。 时间复杂度$O(nm\log(nm)) 阅读全文
posted @ 2016-09-07 17:26 Claris 阅读(345) 评论(0) 推荐(0) 编辑
摘要: 根据Lucas定理,问题等价于在$P$进制下每一位分别求组合数最后乘积模$P$。 因为答案为$0$的并不好算,所以可以考虑用$n+1$减去其它所有的答案。 那么每一位的组合数都不能是$0$,那么这就保证了$k$的每一位都不大于$n$,所以无需考虑$k\leq n$这个限制。 求出模$P$下每个数的指 阅读全文
posted @ 2016-09-06 16:19 Claris 阅读(315) 评论(3) 推荐(0) 编辑
摘要: 树分治,对于每个分治结构,维护两棵线段树。 第一棵按dfs序维护所有点到重心的距离,第二棵维护每个分支的最长链。 那么当前结构对答案的贡献就是第二棵线段树的最大值$+$次大值。 对于操作$0$,如果是激活某个点,则直接把它距离$+=inf$,隐藏某个点则是$-=inf$。 对于操作$1$,相当于子树 阅读全文
posted @ 2016-09-06 11:10 Claris 阅读(226) 评论(0) 推荐(0) 编辑
上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 38 下一页