摘要: 题面 "题目传送门" 解法 显然答案不超过2 直接暴力枚举第一格到底是否有雷即可,后面的状态自然就可以确定了 时间复杂度:$O(n)$ 代码 cpp include define N 10010 using namespace std; template void read(node &x) { x 阅读全文
posted @ 2018-08-14 23:23 谜のNOIP 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 题面 "题目传送门" 解法 暴力显然是把每一行的情况枚举后得到的 但是对于$100×100$显然是不可取的 我们可以发现,每一行每一列最多只会有$2$个炮 那么我们可以设$f_{i,j,k}$表示第$i$行时$j$列放1个,$k$列放2个的方案数 分类讨论一下即可 我使用记忆化搜索,感觉比较直观 时 阅读全文
posted @ 2018-08-14 23:23 谜のNOIP 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 题面 "题目传送门" 解法 假设现在有一个和$S$,那么$1 S$中所有数都可以被表示 不断将$S$加上没有被加过且小于$S$的数 最坏情况为斐波那契数列的时候,但不超过$log\sum a_i$ 用主席树查询即可 时间复杂度:$O(q\ log\ n\ log\sum a_i)$ 代码 cpp i 阅读全文
posted @ 2018-08-14 23:22 谜のNOIP 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 题面 "题目传送门" 解法 ~~可以考虑一种毒瘤方法:二分答案+树剖+BIT套线段树~~ 时间复杂度:$O(q\ log^4\ n)$ 这个写起来麻烦,而且非常丑陋 发现每一次修改只会对子树中的所有点产生影响,而子树的dfs序是连续的 所以考虑单点修改,区间询问,发现可以使用BIT 询问时记录一下所 阅读全文
posted @ 2018-08-14 23:22 谜のNOIP 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 题面 "题目传送门" 解法 本题解法十分精妙 构造矩阵,保证每一行是一个公比为3的数列,每一列是一个公比为2的数列 发现这个矩阵最多不超过17行11列 那么我们可以枚举不是2和3公倍数的数放在$(1,1)$的位置,然后构造出该矩阵 设$f_{i,j}$表示第$i$行选取方案为$j$的方案数 转移一下 阅读全文
posted @ 2018-08-14 23:22 谜のNOIP 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 题面 "题目传送门" 解法 $ans$ = 所有的收益 $i$属于$S$割的(雇佣$i$的代价) 不能同时雇佣$i,j$的带价($i$属于$S$割,$j$属于T割) 不雇佣$i$所造成的带价也就是$i$所有的贡献($i$属于$T$割) 那么建图也就出来了:$S\rightarrow i$连$a_i$ 阅读全文
posted @ 2018-08-14 23:21 谜のNOIP 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 题面 "题目传送门" 解法 和bzoj 2561类似 问题转化为,每一次可以使某一条边的权值+1,问最少多少次以后这条边一定在最小生成树上 最小割即可 代码 cpp include define N 1010 using namespace std; template void read(node 阅读全文
posted @ 2018-08-14 23:20 谜のNOIP 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 题面 "题目传送门" 解法 应该是比较显然的最小割了吧 问题可以转化为,只使用边权$ define N 20010 using namespace std; template void read(node &x) { x = 0; int f = 1; char c = getchar(); whi 阅读全文
posted @ 2018-08-14 23:20 谜のNOIP 阅读(60) 评论(0) 推荐(0) 编辑
摘要: 题面 "题目传送门" 解法 记$nxt_i$为$a_i$下一次出现的位置 把所有询问按左端点排序 处理完所有以$i$开始的询问后,我们把$nxt_i$的影响删除,把$nxt_{nxt_i}$加上 这样就能保证计算入答案的必然是这个区间里第二次出现的 树状数组维护即可 时间复杂度:$O(q\ log\ 阅读全文
posted @ 2018-08-14 23:20 谜のNOIP 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 题面 "题目传送门" 解法 并查集的方法感觉十分精妙,见 "dalao题解" 树剖+线段树也比较简单吧 维护区间的答案,合并的时候根据深度判断大小 时间复杂度:$O(q\ log^2\ n)$ 代码 cpp include define N 100010 using namespace std; t 阅读全文
posted @ 2018-08-14 23:19 谜のNOIP 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 题面 "题目传送门" 解法 显然,本题可以说是变形LIS 设$f_i$为以第$i$个位置结尾的最长不下降子序列长度 那么,$f_i=max(f_j+1)\ \ (a_j≤l_i,r_j≤a_i)$ 对于后面的限制条件,显然就是一个二维偏序问题,直接CDQ分治或树套树 然而不知为什么树套树RE了…… 阅读全文
posted @ 2018-08-14 23:18 谜のNOIP 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 题面 "题目传送门" 解法 考虑当所有数都没有限制的时候,答案为$\sum\prod_{i=1}^na_i$ 考虑将式子拆开并且运用乘法分配律,答案显然为$(\frac{n(n+1)}{2})^m$ 有限制类似 注意去重 代码 cpp include define Mod 1000000007 de 阅读全文
posted @ 2018-08-14 23:16 谜のNOIP 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 题面 "题目传送门" 解法 因为是$1 n$一个一个插入,所以每一次插入的时候只会对当前节点的答案产生影响,对于之前已经在序列中的不会有影响 所以只要动态维护这一个序列,并且维护子树中dp值的最大值 splay!!!! 时间复杂度:$O(n\ log\ n)$ 代码 cpp include defi 阅读全文
posted @ 2018-08-14 23:16 谜のNOIP 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 题面 "题目传送门" 解法 可以说是莫队裸题了吧 莫队算法的本质是,将所有询问的区间按照一定顺序排序,然后不断通过已知区间更新后面的区间 假设现在已经做到区间$[l_1,r_1]$,下一个区间是$[l_2,r_2]$ 那么就暴力将区间从$[l_1,r_1]$扩展至$[l_2,r_2]$,并在扩展的时 阅读全文
posted @ 2018-08-14 23:15 谜のNOIP 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 题面 "题目传送门" 解法 异或满足前缀相减性,记$s_i$为$a_1\ xor\ a_2…xor\ a_i$ 然后就可以直接莫队求解了 注意在移动左端点时统计答案应该为$l 1$,而不是$l$ 时间复杂度:$O(n\sqrt q)$ 代码 cpp include define int long l 阅读全文
posted @ 2018-08-14 23:14 谜のNOIP 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 题面 "题目传送门" 解法 同小Z的袜子 代码 cpp include define int long long define N 50010 using namespace std; template void read(node &x) { x = 0; int f = 1; char c = 阅读全文
posted @ 2018-08-14 23:14 谜のNOIP 阅读(74) 评论(0) 推荐(0) 编辑
摘要: 题面 "题目传送门" 解法 可以直接将所有1全部放置在主对角线上,这样并不会影响答案 然后就是一个比较简单的错位排列了 需要高精度 代码 cpp include using namespace std; template void read(node &x) { x = 0; int f = 1; 阅读全文
posted @ 2018-08-14 23:13 谜のNOIP 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 题面 "题目传送门" 解法 题如其名…… 不妨将多项式的$x^i$变成$10^i$,然后就是一个比较简单的FFT了 md读进来的是一个字符串,并且要倒序 最后注意进位问题 时间复杂度:$O(n\ log\ n)$ 代码 cpp include define N 1 void read(node &x 阅读全文
posted @ 2018-08-14 22:29 谜のNOIP 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 题面 "题目传送门" 解法 如果没有换根,就是树剖+线段树的板子题 如果有换根,看当前的根是否为$x$的后代,如果不是,那么$x$的子树不会受到任何影响,如果是,那么直接删除对应区间然后求最小值即可 时间复杂度:$O(q\ log^2\ n)$ 代码 cpp include define N 100 阅读全文
posted @ 2018-08-14 22:28 谜のNOIP 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 题面 "题目传送门" 解法 可以发现,题目可以转化成求若干个形如$\sum_{i=1}^ni^k$的东西 这个东西可以拉格朗日插值 大概讲一下拉格朗日插值是个什么东西: 显然,$\sum_{i=1}^ni^k$可以用一个$k+1$次多项式表示出来 那么,将$x_i=1,2,…k+1$代入,求得$y_ 阅读全文
posted @ 2018-08-14 22:27 谜のNOIP 阅读(104) 评论(0) 推荐(0) 编辑