洛谷P3246 [HNOI2016]序列】的更多相关文章

题面传送门 这道题为什么我就没想出来呢/kk 对于每组询问 \([l,r]\),我们首先求出区间 \([l,r]\) 中最小值的位置 \(x\),这个可以用 ST 表实现 \(\mathcal O(n\log n)-\mathcal O(1)\) 维护,那么显然 \(\forall l'\in[l,x],r'\in[x,r],\min\limits_{t\in[l',r']}a_t=a_x\),产生的贡献为 \((r-x+1)(x-l+1)a_x\),于是我们只用计算 \([x+1,r],[l,…
题意 题目链接 Sol 好像搞出了一个和题解不一样的做法(然而我考场上没写出来还是爆零0) 一个很显然的思路是考虑每个最小值的贡献. 预处理出每个数左边第一个比他小的数,右边第一个比他大的数. 那么\([L_i + 1, i]\)对\([i, R_i]\)中的每个数都会有\(a[i]\)的贡献. 我们可以抽象成一个二维平面内的矩形加. 询问就是询问最下角为\((l, l)\),右上角为\((r, r)\)的矩形内的权值 也就是我们需要解决这么一个问题:两个操作, 矩形加矩形求和,而且前者都在后者…
传送门 思路 看到可离线.无修改.区间询问,相信一定可以想到莫队. 然而,莫队怎么转移是个大问题. 考虑\([l,r]\rightarrow[l,r+1]\)时答案会怎样变化?(左端点变化时同理) \(ans+=\sum_{i=l}^r \min\{a_i,a_{i+1} ,\dots ,a_r\}\). 那么这东西如何快速统计呢? 考虑使用前缀和. 首先,显然要用单调栈预处理每个点左边最靠右的第一个比它小的数的位置\(L_i\),和ST表处理出RMQ的位置. 预处理出对于每一个\(r\),\(…
传送门 题解 //minamoto #include<iostream> #include<cstdio> #define ll long long using namespace std; #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++) <<],*p1=buf,*p2=buf; int read(){ #define num c…
洛谷 P1628 合并序列 题目传送门 题目描述 有N个单词和字符串T,按字典序输出以字符串T为前缀的所有单词. 输入格式 输入文件第一行包含一个正整数N: 接下来N行,每行一个单词,长度不超过100: 最后一行包含字符串T. [数据规模] 对于60%的数据,满足1≤N≤1000: 对于100%的数据,满足1≤N≤100000且所有字符均为小写字母; 输出格式 按字典序升序输出答案. 输入输出样例 输入 #1复制 输出 #1复制 题解: 这道题有多种方法: 字典树(Trie树).排序.二叉堆..…
洛谷题面传送门 好几天没写题解了,写篇题解意思一下(大雾 考虑反悔贪心,首先我们考虑取出 \(a,b\) 序列中最大的 \(k\) 个数,但这样并不一定满足交集 \(\ge L\) 的限制,因此我们需要调整,我们假设 \(L-\) \(a,b\) 序列中最大的 \(k\) 个数的交集为 \(L'\),如果 \(L'\le 0\) 那不用调整直接输出即可.否则我们考虑每次调整部分 \(a_i,b_i\) 的取值使得 \(a,b\) 的交集加 \(1\),不难发现每次调整可能有以下可能: 选择两个下…
洛谷 思路 显然,为了达到这个最小公倍数,只能走\(a,b\)不是很大的边. 即,当前询问的是\(A,B\),那么我们只能走\(a\leq A,b\leq B\)的边. 然而,为了达到这最小公倍数,又需要有\(\max\{a\}=A,\max\{b\}=B\). 那么暴力做法就很显然了:并查集维护连通块的\(\max\{a\},\max\{b\}\),询问时把满足条件的边全都连上,看最终是否满足条件. 如何优化呢? 把边按\(a\)排序,撒\(\sqrt m\)个关键点,每个关键点把它前面的边按…
BZ链接 洛谷链接 这道题真是丧心病狂.... 应该很容易就可以看出做法,但是写代码写的....... 思路很简单,用一个平衡树维护一下所有的操作就好了,重点讲解一下代码的细节 首先如果按照常规写法的话,splay的节点要开到4000000, 直接炸飞, 由于任意时刻splay中的节点最多只有500000个,我们只需要开500000个节点就好了 然后将没有用的节点回收起来,下一次插入是插入到这些节点中 然后就是插入是将要插入的所有数字build成一颗平衡树,直接接在要插入的位置,这样会快很多 维…
洛谷题面传送门 u1s1 在我完成这篇题解之前,全网总共两篇题解,一篇使用的平衡树,一篇使用的就是这篇题解讲解的这个做法,但特判掉了一个点,把特判去掉在 BZOJ 上会 WA 一个点. 两篇题解都异常简略,前一篇题解甚至只有代码没有说明,所以这里我来写篇比较详细题解造福人类了(大雾 建议没做过这题的同学先看看这道题,看题解区第一个做法,对这题有比较大的启发. 注:下文中分别用 \(a,b,l,r\) 代替题面中的 \(X,Y,A,B\). 首先关于这题咱们可以想到一个非常 naive 的 DP,…
正解:莫队/线段树+扫描线 解题报告: 传送门! 似乎是有两种方法的,,,所以分别港下好了QAQ 第一种,莫队 看到这种询问很多区间之类的就会自然而然地想到莫队趴?然后仔细思考一下,发现复杂度似乎是欧克的,而且好像也是能做的,那就试着做下呗 首先考虑到怎么从[l,r]转移到[l,r+1],可以想到这个之间的增量=就是区间内最小值之和,于是用个st表搞rmq就好,这里具体港下QwQ 首先如果已经求出来了[l,r]内部的最小值的位置pos,这里不过多阐述了rmq就成了 那么分情况讨论下咯 如果a[r…