摘要:
题意:给一个数组,每次给 l ,r, p, k,问区间 [l, r] 的数与 p 作差的绝对值的第 k 小,这个绝对值是多少 分析:首先我们先分析单次查询怎么做: 题目给出的数据与多次查询已经在提示着我们在用数据结构去解决这个问题,对于常见的处理区间的数据结构首选线段树啦: 我觉得这道题的关键在于此 阅读全文
摘要:
题意:给你一个序列,让你找长度最长的字典序最小和最大的单峰序列,单峰序列就是满足先增后降的序列。 思路:先正着求一遍LIS,再反着求一遍LIS,然后用单调栈来模拟。 求字典序最小的话,首先找到第一个顶峰,然后往前找递减的序列中下标较小的,往后就依次找,这样能保证字典序最小。 最大的话找到最后一个顶峰 阅读全文
摘要:
网络流之二者取一式问题: 大致是说有n个人,有两个阵营,把人分成相应的阵营会有对应的价值,可能还会有联立的价值(就是规定如果u号选了A,v号选了B就有额外的价值什么的); 这种问题往往是转换为最小割问题,然后跑出最大流,如果题目要求是求最大的价值那就把全部边的答案相加在减去最大流 1 ) https 阅读全文
摘要:
解析:https://blog.csdn.net/weixin_42165981/article/details/100187841 阅读全文
摘要:
Description维护一个W*W的矩阵,初始值均为S.每次操作可以增加某格子的权值,或询问某子矩阵的总权值.修改操作数M<=160000,询问数Q<=10000,W<=2000000. Input第一行两个整数,S,W;其中S为矩阵初始值;W为矩阵大小 接下来每行为一下三种输入之一(不包含引号) 阅读全文
摘要:
题意 要你找一个最长的区间使得区间内每一个数出现次数都大于等于K。 题解-》https://blog.csdn.net/Ratina/article/details/97503663 #include<bits/stdc++.h> using namespace std; #define lson 阅读全文
摘要:
题目大意:给出一个n个元素的数组A,A中所有元素都是不重复的[1,n]。有两种操作:1.将pos位置的元素+1e72.查询不属于[1,r]中的最小的>=k的值。强制在线。 题解因为数组中的值唯一,且在1到n的范围内,而询问的r和k也在1到n的范围内。 所以对于任意一个被操 作1修改过的值都不会成为询 阅读全文
摘要:
大意: 给定串s, q个询问(l,r,k), 求子串s[l,r]的第kk次出现位置. 这是一篇很好的题解: https://blog.csdn.net/sdauguanweihong/article/details/100063096 加点个人: 我对上面的题解更为详细的解释下: 后缀数组处理出来的 阅读全文
摘要:
后缀数组主要是得出: sa[i]=pos ; 排名第i的是pos位置开始的 (这里用于排名的都是原串中以不同位置开始到最后的字符串按照字典序排序) height[i] 是 suffix(sa[i-1]) 和 suffix(sa[i]) 的最长公共前缀长度,即排名相邻的两个后缀的最长公共前缀长度。 原 阅读全文
摘要:
题意:n个竹子,有高度,q次询问,询问之间是独立的,每次查询输入l,r,x,y代表砍区间[l,r]]内的竹子砍y次,最后一次要砍成0,每次砍掉的总长度相同,问第x次砍的高度是多少。 既然每次要求砍掉的东西都相同,那么就可以直接算出来砍第x次需要砍掉多少(sumh(l~r)/y*x),然后只需要二分这 阅读全文