09 2019 档案
摘要:"K th Closest Distance" 题意:给定长度为$n$的数列,现有m次查询,每组询问给$l,r,p,k$,问对$l using namespace std; const int maxn=100005; int n,m; const int N=1e6; struct node{ i
阅读全文
摘要:"K Subsequence" 题意:给定一个长度为$n$的数字序列,现可以从中选取k个单调上升的子序列,且每个元素至多只能被选中一次,问k个子序列元素和的最大值。 题解:对数列每一项拆点,连接流量为1,费用为$ a[i]$的边,所有项的右端点与其后大于等于这一项的项的左端点连流量1,费用0的边。源
阅读全文
摘要:"Marbles" 题意:长度4e5的数字序列,不同数字个数至多20个,每次操作可选取两个相邻数字并交换位置,现在想要使序列中所有相同数字都排列在一起,问至少需要几次操作。时限4s. 题解:由不同数字个数至多20应该想到状压DP...... 现在假想全部排完之后的状态,根据不同数字块的位置显然有
阅读全文
摘要:"Longest Subarray" 题意:一个数列,每个元素大小都在1到C之间,求一个最长的子串,满足在这个子串中1到C之间的每个数字要么出现0次,要么出现至少K次。 题解:$i$从1到n枚举右端点,维护一个$tree[j]$表示在$i$为右端点时以$j$为左端点可行的个数(这里的可行是指对于1到
阅读全文
摘要:"path" 题意:$n$个点$m$条边的有向图,需要砍掉几条边使从$1$到$n$的最短路变长,问花费的最小值。花费等于砍掉的所有边的权值和。 题解:两遍dij跑出所有属于$1$到$n$的最短路的边(边需要满足的条件为$dis1[u]+w+dis2[v]==dis1[n]$,$dis1$以1为源点,
阅读全文