摘要: 首先将$n$的约数从小到大排序,设$dfs(x,y,z)$表示当前可以选第$x$个到第$m$个约数,还要选$y$个,之前选的乘积为$z$是否可能。爆搜的时候,如果从$x$开始最小的$y$个相乘也超过了$n$,那么就不合法,加上这个剪枝即可。#include#include#define N 2000... 阅读全文
posted @ 2016-01-12 23:35 Claris 阅读(719) 评论(0) 推荐(0)
摘要: 对于每个询问,首先可以通过扫描线+线段树求出四个方向的第一个点,询问范围等价于框住这些点的最小矩形。对于一个点$i$,预处理出:$A[i][j]$:$i$往左下角按凸壳走到$j$时,凸壳上相邻两点的叉积和。$B[i][j]$:$i$往右下角按凸壳走到$j$时,凸壳上相邻两点的叉积和。$C[i][j]... 阅读全文
posted @ 2016-01-12 22:09 Claris 阅读(465) 评论(0) 推荐(4)
摘要: 首先对所有单词建立AC自动机,$S$是$T$的子串等价于$T$的某个前缀通过$fail$链可以走到$S$的终止节点,即$S$的终止节点是$T$某个前缀在$fail$树上的祖先。设$f[i]$表示考虑了前$i$个单词,且第$i$个单词必选时子序列价值的最大值,则$f[i]=\max(单词i每个前缀的贡... 阅读全文
posted @ 2016-01-12 18:40 Claris 阅读(634) 评论(0) 推荐(0)
摘要: 将选取的$A$看成左括号,$B$看成右括号,那么答案是一个合法的括号序列。那么只要重复取出$k$对价值最小的左右括号,保证每时每刻都是一个合法的括号序列即可。将$($看成$1$,$)$看成$-1$,设$s[]$为前缀和。如果当前取出的是$()$,那么对前缀和的影响为$[A,B-1]$区间加$1$。如... 阅读全文
posted @ 2016-01-12 16:57 Claris 阅读(1837) 评论(1) 推荐(2)