- 2025-01-042025/1/4课堂记录
目录修剪草坪周年纪念晚会修剪草坪朴素的dp版查看代码#include<iostream>usingnamespacestd;longlonginta[100010];longlongintyes[100010],no[100010];//第i个数要/不要,1-i之间,最大效率;longlongintmax(longlonginta,longlongintb){ if(a>b)ret
- 2024-12-18CF1889D Game of Stacks 题解
很有趣的题目.思路我们考虑如果每一个栈里只有一个数怎么办。这个时候,我们会形成一个基环树森林。我们的操作相当于每走一步就删掉来时的路。那么每个点最终会停在离它最近的环上的点。我们可以发现一个性质,一个环是不会影响结果的,因为它总能走回来。所以我们可以不断的删
- 2024-11-29记录---前端如何优雅通知用户刷新页面?
- 2024-10-02CF589H Tourist Guide
昨晚码敲完了没保存,导致还原卡直接把我码肘没了。。。气死了只能重新敲了一遍。题面TouristGuide分析考虑每一个联通块分开处理。先将每一个联通块变为生成树,任意生成方式皆可。对于每一个联通块,一定可以构造一种组合方法,使得该联通块中最多只有一个关键点无法被选择。并
- 2024-09-06CF381B题解
我们先理解题意,大致意思是:给你一个序列让你组成一个中间有一个数,左侧递增右侧递减的数列。从这道题的题意来看,大概思路是:1.我们要将最大值设为中间的数,然后左右两端尽可能的小。2.跑两遍循环,分别为左边的递增边的递减。3.还有,因为一个数可以出现很多次,我们需要一个vis
- 2024-07-31KLC 数点学习笔记
KLC数点由KLC大神在模拟赛中发明。其算法复杂度与答案值域大小挂钩。其能解决的问题一般有着如下的特点:给定一个序列,每次询问一个区间有多少个子区间满足什么性质,数据随机生成。其算法流程为:通过某种方法预处理出所有满足性质的子区间将得到的区间表示在二维平面上
- 2024-07-137/13 训练笔记
闲话回滚莫队板题被卡到28pts了歴史の研究回滚莫队题。莫队笔记考虑很好加(维护cnt并更新答案即可),但是不好删。那么回滚莫队代码:#include<bits/stdc++.h>#defineintlonglong#definerep(i,l,r)for(inti=l;i<=r;i++)#defineper(i,l,r)for(inti=
- 2024-06-02[题解]UVA11235 Frequent values
https://www.luogu.com.cn/problem/UVA11235没看到多测调了半天每组数据给定\(n,q\)。接下来给出一个长度为\(n\)的不降序列\(A\)。接下来\(q\)次询问,每次询问给定\(l,r\),求\(A_{l\simr}\)中出现最多的那个数出现了多少次。\(1\len,q\le10^5\)。序列不降,意味着一个数在序
- 2024-05-26UVA1674 闪电的能量 Lightning Energy Report 题解
题目传送门前置知识树链剖分|线段树解法树链剖分后维护一个支持区间修改,单点查询的线段树即可。也可以树上差分,同146.DFS序3,树上差分1的\(1,2\)操作,时间复杂度比树链剖分更优。代码#include<bits/stdc++.h>usingnamespacestd;#definelllonglong#define
- 2024-05-13费马小定理 逆元 期望dp
p8774include<bits/stdc++.h>usingnamespacestd;defineintlonglongdefinef(i,a,b)for(inti=(a);i<=(b);i++)definecl(i,n)i.clear(),i.resize(n);defineendl'\n'typedeflonglongll;typedefunsignedlonglongull;type
- 2024-05-12不是,哥们
题目链接戳我\(Solution\)很容易发现对于每个\(ai^2\)的因子最多在5000以内,所以先将\(ai\)质因数分解然后求出\(ai^2\)的因子然后看每个因子出现了多少次加起来即可\(Code\)#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;typedeflonglongll;intr
- 2024-04-181048 数字加密(前缀和思想)
暴力(12分)#include<bits/stdc++.h>usingnamespacestd;constintinf=0x3f3f3f3f;#definelllonglonginta[100010];intmain(){ intn; cin>>n; for(inti=0;i<n;i++){ cin>>a[i]; } set<int>st; for(inti=0;i<n;i++){
- 2024-04-14[题解](A-G)Atcoder Educational DP Contest(更新中)
AtcoderEducationalDPContest\(\textbf{A.Frog1}\)对于一块石头\(i(3\lei\leN)\),\(i-1\)和\(i-2\)均能到达。用\(f[i]\)表示跳到第\(i\)个石头用的最小体力消耗:\[f[i]=min(abs(h[i]-h[i-1])+f[i-1],abs(h[i]-h[i-2])+f[i-2])\qquadi\ge3\]时间复杂度\(O(n)\)。
- 2024-04-07AT_s8pc_2_e 部分文字列 题解
题目传送门前置知识后缀数组简介解法对于一个后缀\(s_{sa_{i}\simn}\),它产生了\(n-sa_{i}+1\)个前缀,其长度和为\(\frac{(n-sa_{i}+1)(n-sa_{i}+2)}{2}\);和\(s_{sa_{i-1}\simn}\)相比产生了\(height_{i}\)个相同的前缀,其长度和为\(\frac{height_{i}(height_{i}+1)
- 2024-03-27CF1195D2的题解
(一)虽说代码较长,但非常好理解,还是最优解(公开的就两个)。考虑对每个数单独算贡献,循环枚举与它进行运算的数的长度,然后确定那个数的位置即可,再乘以出现的数位对应的贡献,如出现在倒数第二位就乘\(10\)。难度应该不到绿。(二)AC代码。#include<bits/stdc++.h>#defineintlonglo
- 2024-03-27CF1922C的题解
(一)从\(i\)到\(j\)有两种走法,一种是用\(a_j-a_i\)的代价,一种是用\(1\)的代价,前提是\(j\)是\(i\)最近的。显然如果符合条件选第二种。先考虑从左向右走。(和从右向左相同)考虑走到了节点\(i\),如果\(a_{i+1}-a_{i}>a_{i}-a_{i-1}\),那么花费\(1\)的代价向右走,否则花