目录 @description@ @solution@ @part - 0@ @part - 1@ @accepted code@ @details@ @description@ 小 D 有 n 个 std::queue,他把它们编号为 1 到 n. 小 D 对每个队列有不同的喜爱程度,如果有他不怎么喜欢的队列占用了太大的内存,小 D 就会不开心. 具体地说,如果第 i 个队列的 size() 大于 ai,小 D 就会对这个队列一直执行 pop() 直到其 size() 小等于 ai. 现在这些…
点此看题面 大致题意: 让你维护\(n\)个有限定长度的队列,每次区间往队列里加数,求每次加完后的队列里剩余元素种类数. 核心思路 这道题可以用分块+双指针去搞. 考虑求出每个操作插入的元素在队列中被全部弹完所需要的时间\(Max_i\),最后差分即可求出答案. 我们可以\(O(\sqrt n)\)枚举块,然后\(O(m)\)枚举询问,从而统计每一个块对每一个询问的贡献值. 因此,我们主要要考虑的,就是分别对于整块与非整块,如何求出其对于一个询问的贡献. 整块对询问的贡献 整块对询问的贡献应该是…
#2461. 「2018 集训队互测 Day 1」完美的队列 传送门: https://loj.ac/problem/2461 题解: 直接做可能一次操作加入队列同时会弹出很多数字,无法维护:一个操作的有效区间是连续的,考虑找到操作x结束的时间ed[x],即执行(x,ed[x]]可以将x加入的数全部弹出,这样用一个vis记录数字次数就可以维护个数: 一种比较暴力的做法是:枚举x,用一个线段树维护还可以放多少个元素,枚举ed[x]更新,但是这样不满足单调性无法two-pointers; 考虑分块.…
题目链接 LOJ2476:https://loj.ac/problem/2476 LOJ2565:https://loj.ac/problem/2565 题解 参考照搬了 wxh 的博客. 为了方便,下文用 \((x, y)\) 表示 \({\rm gcd}(x, y)\). 先分析 LOJ2476. 注意到对于任意一个数组 \(a\),第 \(x\) 项的值 \(a_x\) 可以展开写成 \(\sum_\limits{i = 1}^{x} a_i[i = x]\),进一步地,有: \[\beg…
Description Solution 我们考虑将问题一步步拆解 第一步求出\(F_{S,i}\)表示一次旅行按位与的值为S,走了i步的方案数. 第二步答案是\(F_{S,i}\)的二维重复卷积,记答案为\(S_{S,i}\),那么\(F_{S,i}\times S_{T,j}\)能够贡献到\(S_{S\&T,i+j}\). 上下两部分是两个问题,我们分开来看. 考虑第一步 设原矩阵为A 根据定义,\[F_{S,i}=\sum\limits_{x\&y=T}A^i_{x,y}\] 容易看…
题目链接 https://loj.ac/problem/3069 题解 复数真神奇. 一句话题意:令 \(f(x)\) 表示以原点 \((0, 0)\) 为圆心,半径为 \(x\) 的圆上的整点数量,求 \(\sum_\limits{i = 1}^N f(i)^k \bmod P\) 的值. 令 \(g(x) = \frac{f(x)}{4}\),那么我们需要求 \(\left(4^k\sum_\limits{i = 1}^Ng(i)^k\right) \bmod P\).打表可得 \(g(x)…
题目来源:2018集训队互测 Round17 T2 题意: 题解: 显然我是不可能想出来的……但是觉得这题题解太神了就来搬(chao)一下……Orzpyz! 显然不会无解…… 为了方便计算石子个数,在最后面加一堆$a_i=c_i=\infty$的石子,确保每次取石子都可以取满$k$个: 先考虑$a_i=0$的情况: 设$f_{i,j}$表示只考虑第0到$i$堆石子,通关前$j$轮的最少操作次数: 设$g_{i,j}$表示只考虑第0到$i$堆石子,前$j$轮结束后再取若干次石子,每次取$k$个,使…
Loj #6069. 「2017 山东一轮集训 Day4」塔 题目描述 现在有一条 $ [1, l] $ 的数轴,要在上面造 $ n $ 座塔,每座塔的坐标要两两不同,且为整点. 塔有编号,且每座塔都有高度,对于编号为 $ i $ 座塔,其高度为 $ i $.对于一座塔,需要满足它与前面以及后面的塔的距离大于等于自身高度(不存在则没有限制).问有多少建造方案.答案对 $ m $ 取模. 塔不要求按编号为顺序建造. 输入格式 一行三个整数 $ n, l, m $. 输出格式 输出一个整数,代表答案…
Loj #6073.「2017 山东一轮集训 Day5」距离 Description 给定一棵 \(n\) 个点的边带权的树,以及一个排列$ p\(,有\)q $个询问,给定点 \(u, v, k\),设$ path(u,v) \(表示\) u$ 到 $v \(的路径,\)dist(u,v) \(表示\) u$ 到\(v\) 的距离,希望你求出 Input 第一行一个整数 \(type =0/1\)表示这个测试点的数据类型. 第二行两个整数 \(n,q\). 接下来$ n−1$ 行,每行三个整数…
Loj 6068. 「2017 山东一轮集训 Day4」棋盘 题目描述 给定一个 $ n \times n $ 的棋盘,棋盘上每个位置要么为空要么为障碍.定义棋盘上两个位置 $ (x, y),(u, v) $ 能互相攻击当前仅当满足以下两个条件: $ x = u $ 或 $ y = v $ 对于 $ (x, y) $ 与 $ (u, v) $ 之间的所有位置,均不是障碍. 现在有 $ q $ 个询问,每个询问给定 $ k_i $,要求从棋盘中选出 $ k_i $ 个空位置来放棋子,问最少互相能攻…