蓝桥杯
文章平均质量分 57
蓝桥杯刷题
Alkali!
本科:NUAACCST16191
硕士:SEUCSE220
展开
-
AcWing 3491. 完全平方数 题解 分解质因数
题目思路由算数基本定理可知,任何一个数都可以分解成它的质因子的乘积。那么如果一个数是完全平方数,那么在分解质因子的结果中,它每个质因子的次数必定是偶数次,因为这样才可以将他们分配给自己的平方根。所以题目给定一个nnn,让求一个数xxx,使得n∗xn*xn∗x是一个完全平方数,我们只要将nnn分解质因数,看看哪些质因子的次数不是偶数次,不是偶数次的话,就需要xxx里面含有它,来凑成偶数次,所以xxx乘一个这样的质因数。分解质因数请看题解:https://blog.csdn.net/weixin_原创 2022-04-06 09:30:37 · 962 阅读 · 0 评论 -
AcWing 3417. 砝码称重 背包dp
题目思路初始化:f[0][0]=truef[0][0]=truef[0][0]=true从前0个物品中选,凑出重量为0,是可以的,所以非空jjj遍历要从−m-m−m到mmm,这两种情况是把砝码都放一边的极端情况。因为第二维可能为负数,所以要在第二维加一个偏移量。代码#include<cstdio>using namespace std;const int N=110,M=2e5+10,B=M/2; //B是偏移量,B的绝对值要比m大才行,因为这样才能使-m+B>原创 2022-04-06 08:56:08 · 439 阅读 · 0 评论 -
AcWing 3416. 时间显示 字符串处理 %与/
题目思路“小蓝不用显示出年月日,只需要显示出时分秒即可,毫秒也不用显示,直接舍去即可。”上来直接除以1000,舍去毫秒下面思路见代码代码#include<cstdio>using namespace std;typedef long long LL;LL n;int main(){ scanf("%lld",&n); n/=1000;//因为不关心ms,1s=1000ms,先过滤掉毫秒 int h=(n/(60*60))%24; //原创 2022-04-05 20:59:42 · 175 阅读 · 0 评论 -
AcWing 2875. 超级胶水 题解 数学题 规律
题目思路分享一位大佬的思路,简直神来之笔这道题就是迷惑大家的,本来就不存在最小值,不管怎么合并,乘积都是一样的。考试的时候多在纸上推一推应该就会发现,最怕不动笔就认为自己不会。代码#include<iostream>using namespace std;typedef long long LL;int n,x;LL sum=0,res=0;int main(){ scanf("%d",&n); for(int i=1;i<=n;i原创 2022-04-05 20:28:34 · 340 阅读 · 0 评论 -
AcWing 2067. 走方格 dp
题目思路刚看到题目,我一眼以为是dfs暴搜,结果只过了90%的数据,再点开算法标签,原来是dp,我晕!看y总的算法复杂度与算法的推测,这题数据范围小于30,要么dfs要么dp下面来说说dp的思路:代码dfs 过90%样例:#include<iostream>#include<cstring>using namespace std;typedef pair<int,int> PII;#define x first#define y seco原创 2022-04-04 10:38:12 · 447 阅读 · 0 评论 -
AcWing 1078. 旅游规划 树形dp 树的直径
题目思路这题其实就是给我们一棵树,让我们求出所有落在树的直径上的点的坐标。因为树的直径可能有多条,所以这里所求的点所在的可能路径也不止一条。那么树的直径该怎么求呢?可以先求出以每个结点为根,它向下伸展所能到达的所有路径长度的最大值和次大值,把这两者加起来,遍历所有点的这个属性,其中最大的这个属性便是直径。注意,这里我们只要求向下伸展,不走回头路,不然会重复的。int h[N], e[M], ne[M], idx;int d1[N], d2[N], p1[N], up[N];int原创 2022-04-03 18:31:58 · 447 阅读 · 0 评论 -
AcWing 1070. 括号配对 dp
题目思路代码#include<iostream>#include<cstring>#include<algorithm>#include<cmath>using namespace std;const int N=110;int f[N][N];string s;bool is_match(int l,int r){ if(s[l]=='('&&s[r]==')') return true; i原创 2022-04-03 15:52:38 · 381 阅读 · 0 评论 -
AcWing 1226. 包子凑数 裴蜀定理+欧几里得算法
题目思路代码#include<iostream>using namespace std;const int N=110;int a[N];bool f[10010];int gcd(int a,int b) //欧几里得算法{ return b==0?a:gcd(b,a%b);}int main(){ int n; scanf("%d",&n); int d=0; for(int i=1;i<=n;原创 2022-04-01 16:45:10 · 265 阅读 · 0 评论 -
AcWing 1303. 斐波那契前 n 项和 矩阵快速幂 题解
题目思路我们可以设Fn=[fn,fn+1]F_{n}=[f_{n},f_{n+1}]Fn=[fn,fn+1]则Fn+1=[fn+1,fn+2]F_{n+1}=[f_{n+1},f_{n+2}]Fn+1=[fn+1,fn+2]那我们要求一个2×22\times22×2的矩阵AAA,使得Fn×A=Fn+1F_{n}\times A=F_{n+1}Fn×A=Fn+1则可以使用矩阵快速幂我们又发现,这道题它要求的是前nnn项和,那其实可以再FFF向量后面加一列代码#i原创 2022-04-01 09:12:02 · 660 阅读 · 0 评论 -
AcWing 1220. 生命之树 题解 树形dp
题目思路这道题其实就是在一棵树中找一个连通块,使得这个连通块里面节点的权值和是所有连通块中最大的。很直白,直接上代码代码#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int N=1e5+10,M=2*N;typedef long long LL; //1e5个点,每个点权值绝对值不超过10的6次方,很有可能就爆炸int了in原创 2022-03-31 11:00:34 · 638 阅读 · 0 评论 -
AcWing 1222. 密码脱落 题解 区间dp
题目思路这题意思是给我们一个字符串序列,问我们需要给它在其中至少添加多少个字符,才能使得它是回文串题目其实等价于在这个序列中,找到最大长度的回文子序列这里的添加操作其实和删除操作是等价的,添加几个字符使得这个串是回文串,添加的字符个数等价于删除几个字符使得这个串是回文串,删除的字符个数。最终至少需要添加的字符个数===字符串总长度−-−字符串中的最长回文子序列长度现在我们从区间DP的角度来考虑这个问题:状态表示f(L,R)f(L,R)f(L,R)集合所有f(L,R)f(L,R)f(L原创 2022-03-31 10:05:50 · 738 阅读 · 0 评论 -
AcWing 1047. 糖果 题解 选择dp
题目思路这是类似于01背包问题的经典选择模型。集合:所有从前iii个物品中选,且总和除以kkk的余数为jjj的所有方案属性:最大值可以分为两种情况:f(i,j)f(i,j)f(i,j)不包含物品iii:f(i−1,j)f(i-1,j)f(i−1,j)f(i,j)f(i,j)f(i,j)包含物品iii:f(i−1,(j−wi)%k)+wif(i-1,(j-w_{i})\%k)+w_{i}f(i−1,(j−wi)%k)+wi初始化:f(0,0)=0,f(0,i)(i≠0)f(原创 2022-03-30 14:28:14 · 430 阅读 · 0 评论 -
AcWing 1050. 鸣人的影分身 题解 dp
题目思路可以划分为两种情况:分配的方案中最小分配数为0那么可以把那个000扔掉,即个数减少111减少后的数量和较少前的情况是一一对应的f(i,j)=f(i,j−1)f(i,j)=f(i,j-1)f(i,j)=f(i,j−1)分配的方案中最小分配数大于0可以把每个分配的数量都减少1,对于能量为iii,影分身数量为jjj的分配方案,减少后变为能量为i−ji-ji−j,影分身数量为jjj的分配方案,他们是一一对应的。f(i,j)=f(i−j,j)f(i,j)=f(i-j,j)f原创 2022-03-30 09:34:50 · 399 阅读 · 0 评论 -
AcWing 1225. 正则问题 题解 递归
题目思路我们先理解一下题目的意思:正则表达式x:表示一个字符|:表示两边取哪边都行,我们这里为了使得可以接收的字符串最大,直接取字符串更多的那边():没有什么特殊含义,只是规定了计算的优先级可以画一棵递归树辅助理解代码思路说的不是很明白,可以直接对着代码注释理解#include<iostream>#include<cstring>using namespace std;string str;int k; //全局str访问下标int dfs原创 2022-03-29 10:02:54 · 356 阅读 · 0 评论 -
AcWing 1301. C 循环 题解 扩展欧几里得算法求解线性同余方程
题目思路kkk 位存储系统,指的是一个数在系统里的二进制存储不能超过kkk位,即要modmodmod 2k2^{k}2k则根据题意,我们可以得到方程:(x表示循环次数)(A+x×C)(A+x\times C)(A+x×C)modmodmod 2k2^{k}2k=B= B=B进一步可得A+x×C−y×2k=BA+x\times C-y\times 2^{k}=BA+x×C−y×2k=B即为x×C−y×2k=B−Ax\times C-y\times 2^{k}=B-Ax×C−y×2k=B−A原创 2022-03-29 09:14:42 · 638 阅读 · 0 评论 -
AcWing 1223. 最大比例 题解 辗转相除法 更相减损数
题目思路因为要求最大的等比值,所以可以先把序列按从小到大排序因为题目意思是“随机调查了一些获奖者的奖金数”,而每个奖金数的获得者有很多位,这样随机调查,存在调查到的获奖者中有获得同一奖金数的情况,所以要把排序后的结果去重在去重的过程中,我们可以把每一项都除以第一项,从而得到一个公比的αi\alpha iαi次方序列假设公比为(pq)k(\frac{p}{q})^{k}(qp)k,则这个序列的每一项都是公比的次方即αi∣ks\alpha i |ksαi∣ks,kkk必须是每一个αi原创 2022-03-27 22:19:56 · 535 阅读 · 0 评论 -
AcWing 1299. 五指山 题解 裴蜀定理 扩展欧几里得算法
题目思路裴蜀定理,扩展欧几里得算法传送门https://blog.csdn.net/weixin_45798993/article/details/122898221由本题的题目背景可以建立方程:x+bd=y(%n)x+bd=y(\%n)x+bd=y(%n)x+bd=y+anx+bd=y+anx+bd=y+an则−an+bd=y−x-an+bd=y-x−an+bd=y−xnnn、ddd、yyy、xxx都是已知的,这里相当于是求nx+dy=gcd(n,d)nx+dy=gcd(n,d)n原创 2022-03-27 20:59:01 · 492 阅读 · 0 评论 -
AcWing 1296. 聪明的燕姿 题解 约数 DFS
题目思路题目意思是给定kkk个sss,对于每个sss,让我们求那些数的所有正约数的和等于sss,求出来有多少个,并将它们升序输出。因为求一个数的所有正约数的和为sss,那么我们不难发现,这些个数必然是比sss小的,因为他们的正约数里有111和他们本身。另外,通过对算术基本定理的理解以及对一个数与它所有约数性质的观察,我们可以得出如下结论:(https://blog.csdn.net/weixin_45798993/article/details/122856747)于是我们可以知道,原创 2022-03-26 19:43:55 · 780 阅读 · 0 评论 -
AcWing 1295. X的因子链 题解 综合数论问题
题目思路题目意思是输入正整数 XXX ,求 XXX 的大于 111 的因子组成的满足任意前一项都能整除后一项的严格递增序列的最大长度,以及满足最大长度的序列的个数。首先,由算术基本定理可知,任意一个数都能因式分解成它的质因子的乘积。因为答案要求的是将XXX大于111的因子拿出来几个,组成一个排列,满足排列是递增的。我们假定这个排列是aaa,则满足ai+1=ai∗pa_{i+1}=a_{i}*pai+1=ai∗p,其中ppp是XXX的质因子为什么ppp不能是合数呢?因为要使得排列a原创 2022-03-26 10:27:39 · 624 阅读 · 0 评论 -
AcWing 1246. 等差数列 题解 欧几里得算法
题目思路题目大概意思是给我们NNN个数,这NNN个数是等差数列中的NNN个数(不一定连续,且不一定按照大小顺序给出),而且满足条件的等差数列可能不止一个,让我们求出满足条件的等差数列中长度最短的。我们由等差数列的性质可知:设等差数列的首项为aaa,公差为ddd,则等差数列中的每一项都可以表示成a+kd,0≤k≤n−1a+kd,0≤k≤n-1a+kd,0≤k≤n−1的形式。从而每一项与第一项的差一定是ddd的倍数。我们从而可以知道等差数列的项数可以表示为而给我们的NNN个数里面,最大原创 2022-03-25 19:36:49 · 283 阅读 · 0 评论 -
AcWing 1237. 螺旋折线 题解 找规律分类讨论
题目思路我们首先可以发现,四个角上的点的distdistdist与他们横坐标的绝对值nnn存在如下关系:右上角的点:dist=(2n)2dist=(2n)^{2}dist=(2n)2右下角的点:dist=2n×(2n+1)dist=2n\times(2n+1)dist=2n×(2n+1)左上角的点:dist=(2n−1)×2ndist=(2n-1)\times2ndist=(2n−1)×2n左下角的点:dist=(2n−1)2dist=(2n-1)^{2}dist=(2n−1)2刚原创 2022-03-25 10:06:34 · 550 阅读 · 0 评论 -
AcWing 1215. 小朋友排队 题解 “冒泡排序”+树状数组
题目思路题目的意思,整体上是将一个无序的序列通过不断交换相邻两个节点,变为有序的序列。而每个点都有一个怒气值,初始为0,每次被交换时,怒气值都会增长,增大多少取决于这次交换是它第几次被交换。题目让我们在最终得到有序序列的情况下,求最终所有小朋友的怒气值的和的最小值。首先,我们可以知道,在冒泡排序中,有多少个逆序对,就会交换多少次。假设原序列中逆序对的数量为kkk证明:每次交换相邻两个元素,最多只会使逆序对减少1,而正序排列的序列,逆序对为0,因此,要想把一个乱序的序列,通过交换相邻元素而原创 2022-03-24 21:50:05 · 417 阅读 · 0 评论 -
AcWing 1270. 数列区间最大值 题解 线段树
题目思路其实这道题就是用线段树去写,只是把线段树中结构体中的sumsumsum换成maxvmaxvmaxv,把维护一个和改成维护一个最大值。线段树思路:https://blog.csdn.net/weixin_45798993/article/details/123705429?spm=1001.2014.3001.5501代码#include<iostream>#include<algorithm>#include<cmath>#include&l原创 2022-03-24 15:57:03 · 379 阅读 · 0 评论 -
线段树 思想以及基本实现
数据结构特点为什么叫线段树?因为它是把原序列以及其子序列(一个个线段)组织成一棵树的形式。树的根节点为原序列,子节点依次对半分序列,直到叶节点,叶节点是单个数,也没办法再往下分了。而对于每个结点而言,它存储了三个属性:结点所表示区间(线段)的左端点LLL结点所表示区间(线段)的右端点RRR结点所表示区间(线段)的和sumsumsum样例:1-7的序列组织成线段树实际存储的数据结构整体上类似于堆的存储结构:下标从1开始的一维数组父节点:x>>1左儿子:x<&原创 2022-03-24 14:55:00 · 192 阅读 · 0 评论 -
AcWing 1265. 数星星 题解 树状数组
题目思路题目意思很清晰的告诉我们:给定 N 个点,定义每个点的等级是在该点左下方(含正左、正下)的点的数目,试统计每个等级有多少个点。而至关重要的信息是这N个点的坐标给出顺序:不会有星星重叠。星星按 y 坐标增序给出,y 坐标相同的按 x 坐标增序给出。我们假定一个时刻,考虑到了点iii,它的坐标为(xi,yi)(x_{i},y_{i})(xi,yi)它的左下方的点的坐标范围为:0≤x≤xi0≤x≤x_{i}0≤x≤xi,0≤y≤yi0≤y≤y_{i}0≤y≤yi由点给出的顺序我原创 2022-03-22 21:21:40 · 336 阅读 · 0 评论 -
树状数组 思路以及性能分析
特点代码短、常数很小应用及时间复杂度区间查询:求前缀和单点修改:给某个位置上的数加上一个数(同时能以非常小的代价维护前缀和)时间复杂度:O(logn)O(logn)O(logn)与一般前缀和算法的对比算法修改某个点查询前缀和平均时间复杂度(假定两种操作各占50%50\%50%)一般前缀和O(n)O(n)O(n)O(1)O(1)O(1)O(n)O(n)O(n)树状数组O(logn)O(logn)O(logn)O(logn)O(logn)O(logn原创 2022-03-22 20:35:14 · 472 阅读 · 0 评论 -
AcWing 1247. 后缀表达式 题解 贪心
题目思路如果m==0m==0m==0,则没有减号,全是加号,全加起来即可如果m>0m>0m>0我们从后缀表达式特征入手:以二叉树后序遍历顺序描绘,则很明显有下面的特征。当我们将新的数放到左子树上且新的符号为负数时,会将原有的数据全部取反。因此,对于MMM个负号,我们可以构造出111到MMM个负号,而如果在负号的过程中加入了加法,那么相当于括号外是减法,括号内是加法,去括号后,加法也能变成减法,从而增加了负号的数量,因为有NNN个加号,故而可以增加000到NNN个负号原创 2022-03-22 10:23:01 · 392 阅读 · 0 评论 -
AcWing 1239. 乘积最大 题解 双指针 贪心
题目思路这里可以分情况讨论:序号情况取法最终值的情况1.k==nk==nk==nnnn个数全取视原序列的情况而定2.k<nk<nk<n且k是偶数如果负数有偶数个,那么我们在取的时候要成对的取,不能取奇数个负数;如果负数有奇数个,那么我们只要作到成对的取负数就可以结果必然非负3.k<nk<nk<n且k是奇数如果所有数均是负数,那么取奇数个负数的积,怎么取都是负数;如果至少存在一个非负数,那么我们可以先取这个非负原创 2022-03-21 09:39:54 · 1213 阅读 · 0 评论 -
AcWing 1235. 付账问题 题解 贪心
题目思路这题一看就是贪心, 那么怎么个贪心法呢?首先我们要知道标准差表示的是数据的波动程度,其值越大波动越大。要使得标准差小,我们就要尽可能使得数据都比较接近平均值。那么这题贪心策略应该是这样的:首先算出平均值s/ns/ns/n把数据从小到大排序如果某个人的钱低于该值,那么他一定是将钱全部支付,然后其余不够的其他人平摊。但是,由于之前那个人钱不够,那么就会导致剩下人支付的平均值会增大,所以在这个平摊过程中很有可能存在某个人钱又低于这个平均值,又需要剩下的人平摊。如此反复,直到支付完成原创 2022-03-17 23:14:49 · 480 阅读 · 0 评论 -
AcWing 112. 雷达设备 题解 贪心 转化为“区间选点”问题
问题思路根据勾股定理,当给定雷达的覆盖范围,对于每个岛屿座标,其在x轴上会有一个有效区间,在这个有效区间内的所有地方设置雷达,都能覆盖到这个岛屿,从而我们可以将每个点转换为每个区间,问题就转化为了至少选择多少个点,可以覆盖这些所有区间,经典的贪心求“区间选点”问题。https://blog.csdn.net/weixin_45798993/article/details/123164244整个算法的时间复杂度是排序的时间复杂度,即O(nlogn)O(nlogn)O(nlogn)代码#i原创 2022-03-17 14:58:12 · 871 阅读 · 0 评论 -
AcWing 122. 糖果传递 题解 贪心 进阶“货舱选址”绝对值不等式
题目思路首先,我们把题目抽象成一个图,如上图假定图中的边是单向的a1−>ana_{1}->a_{n}a1−>ana2−>a1a_{2}->a_{1}a2−>a1a3−>a2a_{3}->a_{2}a3−>a2…an−>an−1a_{n}->a_{n-1}an−>an−1边权分别为x1x_{1}x1、x2x_{2}x2、x3x_{3}x3…xnx_{n}xn,表示传递的糖果数量,边权可正原创 2022-03-17 11:59:19 · 415 阅读 · 0 评论 -
AcWing 1055. 股票买卖 II 题解 贪心
题目思路贪心做法:相邻两天,只要 后一天的股票价格>前一天的股票价格,就交易一次形式化的证明:任何跨度大于1天的交易,都等价于若干个跨度为1天的交易,可以通过拆分得来。所以我们只要关注跨度为1天的交易即可。代码#include<iostream>using namespace std;const int N=1e5+10;int n;int price[N];int main(){ scanf("%d",&n); for(int i=原创 2022-03-17 10:02:41 · 702 阅读 · 0 评论 -
AcWing 3745. 牛的学术圈 I 题解 二分
题目思路这题我们可以采用二分的方法来解决。通过不断二分的方法把hhh确定首先,hhh取值是否具有二分性?假设现在的指数是hhh,则表示研究员至少有hhh篇引用次数不少于hhh的论文则对于小于hhh的数,一定也是成立的:比如对h−1h-1h−1,根据上面的假设,研究员因为至少有hhh篇引用次数不少于hhh的论文,所以他拥有的引用次数不少于h−1h-1h−1的论文数量肯定在h−1h-1h−1篇以上(实际上在hhh篇以上)因此,若指数hhh成立,则比≤h≤h≤h的指数仍然成立,即hhh原创 2022-03-17 09:20:09 · 969 阅读 · 0 评论 -
AcWing 1207. 大臣的旅费 题解 树的最大路径(直径)
题目思路连接各大城市的整个高速路是一颗树说明整个高速路不存在环,是一棵树输入格式这边的强调也应征了连接各大城市的高速路其实是一棵树如果不在某个城市停下来修整,在连续行进过程中,他所花的路费与他已走过的距离的关系设距离为sss,花费f(s)=10s+s(s+1)2f(s)=10s+\frac{s(s+1)}{2}f(s)=10s+2s(s+1)问题让我们求的是什么?J大臣想知道:他从某一个城市出发,中间不休息,到达另一个城市,所有可能花费的路费中最多是多少呢?也即这棵树中任原创 2022-03-16 21:44:38 · 601 阅读 · 0 评论 -
AcWing 1233. 全球变暖 题解 floodfill bfs
题目思路首先通过floodfillfloodfillfloodfill算法,找出整个图中的连通块数,每个连通块对应一个岛屿全球变暖,所有连通块的边界点都被淹没,当且仅当一个连通块中的边界点数和总点数相同时,该岛屿会被全部淹没所以可以在floodfillfloodfillfloodfill计算连通块的过程中,计算出每个连通块的总点数totaltotaltotal和边界点数boundboundbound,判断其是否相等,相等的话就说明其会被全部淹没,记录会被全部淹没的岛屿个数,即为所求因为f原创 2022-03-16 20:07:41 · 584 阅读 · 0 评论 -
AcWing 3370. 牛年 题解 模拟题
题目思路本题意思是给你NNN对生日距离年份之间的关系,让我们找出Bessie和Elsie的出生年份之间相差的年数很容易想到的是模拟,怎么模拟?从数学上而言,是把这些对生日前后的关系整体的反映在数轴上第一对关系的参照牛一定是属牛的Bessie,它可以作为我们数轴的相对原点,不妨取为0因为最后一个单词,即每对关系中的参照牛在之前的位置已经出现过了,而每对关系的第一个牛未在之前出现过。因此对于每对关系,我们都可以根据后面出现过的牛的位置结合距离年份确定出未出现过的牛的位置可以把题目背景想原创 2022-03-16 09:38:37 · 165 阅读 · 0 评论 -
AcWing 1240. 完全二叉树的权值 题解
题目思路拿到这道题,先看一下数据范围:1≤N≤1000001≤N≤1000001≤N≤100000说明这颗完全二叉树上最多有100000100000100000个结点,经过计算最多也就17层那我们可以先把需要用到的数据处理出来:binary数组,存储了222的从000到171717次方s数组,binary数组的前缀和根据完全二叉树的结点数量n结合s数组可以精确的判断出这颗完全二叉树有多少层,用ce变量记录,进而再算出每层有多少个结点,存在binary数组里,注意,最后一层可能不满,要特原创 2022-03-15 21:55:54 · 767 阅读 · 0 评论 -
AcWing 1224. 交换瓶子 题解 图论思维题
题目思路可以把本题抽象一道图论题把每个瓶子抽象成一个点每个瓶子向它应该在的位置的瓶子结点连一条边因为有n个点,所以可以连n条边这样就构成了一个图,它具有的性质:1:n个点,n条边2:每个点的出度、入度都为1这样的图必然是一堆环,一个环我们称为置换现在我们考虑交换两个点交换同一个环内的点:原先的环裂成了两个环交换两个不同环中的点:将原先的两个环合并成了一个环假设初始状态图中有kkk个环,最终所有的瓶子都放到了应该放的地方,图中会有nnn个自环而每次操作最多增加一个环,原创 2022-03-15 10:34:29 · 763 阅读 · 0 评论 -
AcWing 1238. 日志统计 题解 滑动窗口 双指针算法
题目思路维护一个长度为DDD的滑动窗口,对于每个窗口,记录一下被点赞的帖子两个窗口之间的转换,实际上仅仅是头尾元素的更新代码#include<iostream>#include<algorithm>using namespace std;const int N=1e5+10;#define x first#define y secondtypedef pair<int,int> PII;bool st[N]; //标记一个帖子是否为热帖原创 2022-03-14 16:45:33 · 1073 阅读 · 3 评论 -
AcWing 1241. 外卖店优先级 题解 模拟
题目思路我们每个外卖获取到订单的时刻都是离散的,中间可能过了好久才有第二个订单,其实可以把中间这一部分压缩掉,把连续的没有订单的这一段时间统一到下一次有订单的时刻来处理,或者是放在T时刻来处理:这样做的好处是我们在去做每一个时刻的时候,只需要考虑有订单的店即可,没有订单的店就可以不用考虑了。此时我们可以不用枚举时刻,将所有订单按时间顺序排序,每次处理一批相同的订单,只要订单的时间点和店铺id相同,我们就把它看成一个。score[i]score[i]score[i]表示第iii个店铺当前的优原创 2022-03-14 11:48:56 · 499 阅读 · 0 评论