【数据结构】队列与单调队列
文章平均质量分 64
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【BZOJ1758】【WC2010】重建计划
【题目链接】点击打开链接【思路要点】首先,题目要求求解平均值的最大值,考虑分数规划。二分答案\(Mid\),将树上每条边权减去\(Mid\),问题变为树上是否存在边数在\(L\)到\(R\)之间的权值之和非负的路径。考虑点分治。记录\(Dist\)数组,\(Dist_{i}\)表示边数为\(i\)的从分治根节点出发的路径的最大权值。对于每一个分治子树进行BFS,记当前BFS深度为\(i\),在\(原创 2018-01-18 13:57:28 · 429 阅读 · 0 评论 -
【校内训练2019-06-24】Arithmetic
【思路要点】 序列能够变为等差数列,当且仅当其中所有元素模 ddd 余数相等,且不存在重复元素。 此时,记 [l,r][l,r][l,r] 中最大值为 MaxMaxMax ,最小值为 MinMinMin ,有 f(S[l,r])=Max−Mind−(r−l)=⌊Maxd⌋−⌊Mind⌋−(r−l)f(S[l,r])=\frac{Max-Min}{d}-(r-l)=\lfloor\frac{Ma...原创 2019-06-24 14:05:39 · 260 阅读 · 0 评论 -
【省内训练2019-06-07】选举
【思路要点】 显然有 dpi=∑j=i−ri−ldpj+sign(si−sj)dp_i=\sum_{j=i-r}^{i-l}dp_j+sign(s_i-s_j)dpi=∑j=i−ri−ldpj+sign(si−sj) 。 令 Max=maxj=i−ri−l{dpj}Max=max_{j=i-r}^{i-l}\{dp_j\}Max=maxj=i−ri−l{dpj} ,可以发现, d...原创 2019-06-11 18:05:38 · 186 阅读 · 0 评论 -
【省内训练2019-06-02】互膜
【思路要点】 记 aia_iai 为卡牌的当前价值, Mini=Min{ai,ai+1,…,aN}Min_i=Min\{a_i,a_{i+1},\dots,a_N\}Mini=Min{ai,ai+1,…,aN} 。 引理: Ans=Min1+∑i≡1 (mod 2)Max{ai,Mini+1}Ans=Min_1+\sum_{i\equiv1\ (mod\ 2)}M...原创 2019-06-04 17:00:39 · 271 阅读 · 0 评论 -
【LOJ2390】「JOISC 2017 Day 1」开荒者
【题目链接】 点击打开链接 【思路要点】 首先,风的顺序是不重要的,因此我们只需要考虑各个方向的风的次数。 考虑枚举南北方向的风的次数 w,sw,sw,s ,则网格的每一行将由长草的方格 a1,a2,…,ana_1,a_2,\dots,a_na1,a2,…,an 分成若干段,对东西风产生如下限制:东风至少 a1−1a_1-1a1−1 次,西风至少 c−anc-a_nc−an ...原创 2019-06-13 21:03:51 · 1106 阅读 · 0 评论 -
【CodeChef】Graph on a Table
【题目链接】 点击打开链接 【思路要点】 注意到一步使得两维坐标均增大 222 或以上的走法一定是不优的,我们只需要考虑每一步某一维增量为 111 的情况。 预处理 Li,j,Ui,jL_{i,j},U_{i,j}Li,j,Ui,j 分别表示最左侧的可以转移到 (i,j)(i,j)(i,j) 的位置和最上方的可以转移到 (i,j)(i,j)(i,j) 的位置,可以发现, Li,jL...原创 2019-04-18 16:01:57 · 254 阅读 · 0 评论 -
【BZOJ5077】【UOJ198】【CTSC2016】时空旅行
【题目链接】BZOJUOJ【思路要点】我们发现所有星球的\(y\)和\(z\)坐标没有实质作用,问题仅和\(x\)和\(c\)有关。令询问给出的横坐标为\(qx\),那么一个属性为\((x,c)\)的星球被探索的代价为\((qx-x)^2+c=qx^2-2x*qx+(x^2+c)\)。显然\(qx^2\)只和询问有关,因此我们需要求\(-2x*qx+(x^2+c)\)的最小值,令\(k=-2x,b...原创 2018-06-04 13:38:24 · 285 阅读 · 0 评论 -
【BZOJ3242】【UOJ126】【NOI2013】快餐店
【题目链接】BZOJUOJ【思路要点】DFS找到环,简单DP一遍,得出每个点的子树的深度\(Depth_i\)。首先考虑在环上建快餐店。将环上的每个点投射到其在环上与其相对的位置,建立一个虚点。将环上点和虚点按照位置排序,并倍长。枚举快餐店建立在哪两个点之间,那么这两个点对应的虚点逆时针方向的点到快餐店的最远距离应当为\(max\{Depth_i+pos_{restaurant}-pos_i\}\...原创 2018-05-25 19:58:27 · 253 阅读 · 0 评论 -
【BZOJ1023】【SHOI2008】仙人掌图
【题目链接】点击打开链接【思路要点】建立圆方树,并进行树形DP,求出每个圆点到其子树内最远的圆点的距离\(dp_{i,0}\),以及在不同的子树内距离最远的圆点的距离\(dp_{i,1}\)。考虑枚举直径上离根最近的点:若该点为圆点,那么该圆点对答案的贡献显然为\(dp_{i,0}+dp_{i,1}\)。若该点为方点,那么问题便转化为了“在一个\(N\)个点的环上有一系列点,每个点有权值\(val...原创 2018-05-20 18:14:44 · 205 阅读 · 0 评论 -
【BZOJ4721】【NOIP2016】蚯蚓
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h> using namespace std; #define MAXN 100005 #define INF 2e9 template <typename T> void read(T &x) { x = 0; int f = 1; char c = get...原创 2018-05-19 13:50:09 · 186 阅读 · 0 评论 -
【BZOJ4476】【JSOI2015】送礼物
【题目链接】点击打开链接【思路要点】单独统计区间每个长度为\(L\)的区间的最大值和最小值,更新答案,这部分复杂度可以用单调队列做到\(O(N)\)。二分答案,问题转化为是否存在\(L≤j-i+1≤R\)使得\(\frac{M(i,j)-m(i,j)}{j-i+K}≥Ans\),即\((M(i,j)-Ans*j)-(m(i,j)-Ans*i)≥K*Ans\)。可以证明,区间的两个端点不是区间最小/...原创 2018-04-20 15:45:59 · 431 阅读 · 0 评论 -
【BZOJ4700】适者
【题目链接】点击打开链接【思路要点】显然的一点是可以将各点的\(D_i\)替换为\(\lfloor\frac{D_i-1}{ATK}\rfloor+1\),即需要的攻击次数。首先考虑没有秒杀怎么做,我们需要确定一个攻击顺序,依次攻击并消灭敌人。如果我们已经确定了一个顺序,如果交换\(i\)和\(i+1\)能够使得方案更优,那么应当有\(A_{i+1}*D_i>D_{i+1}*A_i\),即\...原创 2018-03-26 16:06:32 · 648 阅读 · 0 评论 -
【BZOJ4540】【HNOI2016】序列
【题目链接】点击打开链接【思路要点】询问一个区间内不方便用线段树维护信息,可离线,考虑莫队。这样的话,我们希望支持快速询问\(f(l,r)=\sum_{i=l}^{r}Min_{j=l}^{i}\{a_i\}\)和\(g(l,r)=\sum_{i=l}^{r}Min_{j=i}^{r}\{a_j\}\)。用单调栈处理出每个数向左/向右第一个小于它的数,并倍增。询问时在倍增数组上二分,可以得到\(O...原创 2018-03-20 19:57:46 · 247 阅读 · 0 评论 -
【CodeForces】CodeForces Round #464 (Div. 2) 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【A】Love Triangle【思路要点】按照题意寻找三角形即可。即若存在一个点\(i\)使得\(f[f[f[i]]]==i\),答案为Yes,否则为No。时间复杂度\(O(N)\)。【代码】#include<bits/stdc++.h> using namespace std; const int MAXN = 5005; templ...原创 2018-02-18 11:05:43 · 1106 阅读 · 0 评论 -
【BZOJ1233】【Usaco2009 Open】干草堆tower
【题目链接】点击打开链接【思路要点】有这样一个性质:对于最顶部的一些列干草堆,一定存在一种最优方案既满足高度最高,又满足底边最短。由这个性质,DP即可。DP转移可以被单调队列优化。时间复杂度\(O(N)\)。【代码】#include<bits/stdc++.h> using namespace std; #define MAXN 100005 int main() { int n;...原创 2018-02-27 13:54:46 · 350 阅读 · 0 评论 -
【CodeForces671D】Roads in Yusland
题目链接 点击打开链接 题目解法 记 dpi,jdp_{i,j}dpi,j 表示仅考虑一端在 iii 子树内的路径,覆盖 iii 的子树,并且向上覆盖至深度 jjj 的最小代价,不难得到一个 O(N2)O(N^2)O(N2) 的动态规划解法。 注意到动态规划的数组具有单调性,可以用平衡树维护对应的单调队列,在转移时启发式合并即可。 时间复杂度 O(N+MLog2M)O(N+MLog^2M)O(N...原创 2019-08-28 14:09:56 · 277 阅读 · 0 评论