用一个树状数组维护前缀和,每次我二分地找一个位置,使得我能一路买过去 但这个买不了 那以后肯定也都买不了了,就把它改成0,再从头二分地找下一个位置,直到这一圈我可以跑下来 然后就看跑这一圈要花多少钱.能买多少糖,拿T除一除,减一减,再去跑下一圈 每个位置只会被删一次,所以复杂度是$O(nlog^2n)$的 但那个用树状数组再二分的过程 其实大概可以在线段树上分治来做到一个log,但我哪会啊 #include<bits/stdc++.h> #define pa pair<int,int&g…
原文链接https://www.cnblogs.com/zhouzhendong/p/ARC101D.html 题目传送门 - ARC101D 题意 给定一个序列 A . 定义一个序列 A 的中位数为:给 A 排序,得到的第 $\left\lfloor\cfrac{i}{2}\right\rfloor+1$ 项的值. 序列 B 由序列 A 的所有连续子序列的中位数构成. 问序列 B 的中位数是多少. 序列中可能出现重复的数,$|A| \leq 10^5$ . 题解 注意这里说的“中位数”是题意里…
[题目大意] 给出一个长度为n的序列和m组查询(i,j,k),输出[i,j]中的第k大数. [思路] 先离散化然后莫队分块.用树状数组来维护当前每个值的个数,然后对于每次询问二分答案即可. 又一次实力写错二分…(生无可恋脸.jpg) #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace st…
为何感觉SHOI的题好水. ..又是一道SB题 从左到右枚举每个区间,遇到一个扇形的左区间就+1.遇到右区间就-1,然后再树状数组上2分答案,还是不会码log的.. SHOI2013似乎另一道题发牌也是相似的维护方法.. #include<algorithm> #include<iostream> #include<cstdlib> #include<cstring> #include<cstdio> #include<vector>…
题目传送门(内部题98) 输入格式 第一行一个整数$n$,第二行$n$个整数$a_1\sim a_n$,第三行$n$个整数$b_1\sim b_n$. 输出格式 一行一个整数表示$\max(r-l+1)$.保证至少有一个区间满足条件. 样例 样例输入: 52 -4 1 2 -2-2 3 1 -3 1 样例输出: 数据范围与提示 对于$20\%$的数据,$n\leqslant 5,000$. 对于$60\%$的数据,$n\leqslant 10^5$. 对于$100\%$的数据,$1\leqsla…
离散化一下然后把姓名串和询问串都放一起做SA 和bzoj3277串类似地,满足某一询问的后缀(就是和这个询问对应的后缀的LCP>=这个询问长度的后缀)的排名也是一个区间,把这个区间二分出来即可 现在要做的两个问题就变成了: 给定一些区间.一些点,每个点有对应的颜色(就是sa[i]对应的那个姓名串对应的人),问 1.每个区间中不同颜色的数量:同HH的项链 2.每个颜色被不同区间覆盖的数量: 想法其实和1是类似的,扫到区间左端点的时候给a[i]++,扫到右端点的时候给a[对应左端点]--,然后每个点…
考场上切的,挺简单的~ Code: #include <cstdio> #include <algorithm> #define N 200005 #define inf 1000000004 #define ll long long #define setIO(s) freopen(s".in","r",stdin) , freopen(s".out","w",stdout) using namesp…
传送门 https://www.luogu.org/problemnew/show/P4479 题目描述 在平面直角坐标系上,有 n 个不同的点.任意两个不同的点确定了一条直线.请求出所有斜率存在的直线按斜率从大到小排序后,第 k 条直线的斜率为多少. 为了避免精度误差,请输出斜率向下取整后的结果.(例如: ⌊1.5⌋ = 1 , ⌊−1.5⌋ = −2 ) 分析 一开始打了一个暴力,10分后来改着改着成了30分,浮点误差. 正解其实很简单,我们首先逆向思考一下,如果我们假设已经有了斜率k. 如…
[BZOJ4009][HNOI2015]接水果 Description 风见幽香非常喜欢玩一个叫做 osu!的游戏,其中她最喜欢玩的模式就是接水果.由于她已经DT FC 了The big black,  她觉得这个游戏太简单了,于是发明了一个更加难的版本.首先有一个地图,是一棵由 n 个顶点.n-1 条边组成的树(例如图 1给出的树包含 8 个顶点.7 条边).这颗树上有 P 个盘子,每个盘子实际上是一条路径(例如图 1 中顶点 6 到顶点 8 的路径),并且每个盘子还有一个权值.第 i 个盘子…
整体二分+扫描线 树状数组 具体做法看这里a CODE #include <cctype> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; template<class T>inline void read(T &res) { char ch; int flg = 1; for(;!isdigit(ch=getchar());)i…