摘要:
题面 "题目传送门" 解法 $ans$ = 所有的收益 $i$属于$S$割的(雇佣$i$的代价) 不能同时雇佣$i,j$的带价($i$属于$S$割,$j$属于T割) 不雇佣$i$所造成的带价也就是$i$所有的贡献($i$属于$T$割) 那么建图也就出来了:$S\rightarrow i$连$a_i$ 阅读全文
摘要:
题面 "题目传送门" 解法 和bzoj 2561类似 问题转化为,每一次可以使某一条边的权值+1,问最少多少次以后这条边一定在最小生成树上 最小割即可 代码 cpp include define N 1010 using namespace std; template void read(node 阅读全文
摘要:
题面 "题目传送门" 解法 应该是比较显然的最小割了吧 问题可以转化为,只使用边权$ define N 20010 using namespace std; template void read(node &x) { x = 0; int f = 1; char c = getchar(); whi 阅读全文
摘要:
题面 "题目传送门" 解法 记$nxt_i$为$a_i$下一次出现的位置 把所有询问按左端点排序 处理完所有以$i$开始的询问后,我们把$nxt_i$的影响删除,把$nxt_{nxt_i}$加上 这样就能保证计算入答案的必然是这个区间里第二次出现的 树状数组维护即可 时间复杂度:$O(q\ log\ 阅读全文
摘要:
题面 "题目传送门" 解法 并查集的方法感觉十分精妙,见 "dalao题解" 树剖+线段树也比较简单吧 维护区间的答案,合并的时候根据深度判断大小 时间复杂度:$O(q\ log^2\ n)$ 代码 cpp include define N 100010 using namespace std; t 阅读全文
摘要:
题面 "题目传送门" 解法 显然,本题可以说是变形LIS 设$f_i$为以第$i$个位置结尾的最长不下降子序列长度 那么,$f_i=max(f_j+1)\ \ (a_j≤l_i,r_j≤a_i)$ 对于后面的限制条件,显然就是一个二维偏序问题,直接CDQ分治或树套树 然而不知为什么树套树RE了…… 阅读全文
摘要:
题面 "题目传送门" 解法 考虑当所有数都没有限制的时候,答案为$\sum\prod_{i=1}^na_i$ 考虑将式子拆开并且运用乘法分配律,答案显然为$(\frac{n(n+1)}{2})^m$ 有限制类似 注意去重 代码 cpp include define Mod 1000000007 de 阅读全文
摘要:
题面 "题目传送门" 解法 因为是$1 n$一个一个插入,所以每一次插入的时候只会对当前节点的答案产生影响,对于之前已经在序列中的不会有影响 所以只要动态维护这一个序列,并且维护子树中dp值的最大值 splay!!!! 时间复杂度:$O(n\ log\ n)$ 代码 cpp include defi 阅读全文
摘要:
题面 "题目传送门" 解法 可以说是莫队裸题了吧 莫队算法的本质是,将所有询问的区间按照一定顺序排序,然后不断通过已知区间更新后面的区间 假设现在已经做到区间$[l_1,r_1]$,下一个区间是$[l_2,r_2]$ 那么就暴力将区间从$[l_1,r_1]$扩展至$[l_2,r_2]$,并在扩展的时 阅读全文
摘要:
题面 "题目传送门" 解法 异或满足前缀相减性,记$s_i$为$a_1\ xor\ a_2…xor\ a_i$ 然后就可以直接莫队求解了 注意在移动左端点时统计答案应该为$l 1$,而不是$l$ 时间复杂度:$O(n\sqrt q)$ 代码 cpp include define int long l 阅读全文