自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (1)
  • 收藏
  • 关注

原创 Educational Codeforces Round 99 (Rated for Div. 2) D. Sequence and Swaps(贪心+枚举)

给出 n 个数,以及数 x ,将这 n 个数变成递增的序列,如果 x 想要于其中的任何一个数 a[i] 交换,那么满足条件 a[i]>x ,问最小交换次数是多少题目数据范围小,可以暴力模拟,但在这里并没有模拟,但复杂度还是 O(n*n)将 x 与 a[i] 交换后,a[i] 之前全都是比 x 要小的数,i 之后没有比 x 大的数,且前面的数必须要单调递增,否则没法操作由于 a[i]>x ,那么经历多次交换之后,那么数组 a 中有一个比 x 大的数被换成 x而且每...

2020-12-24 09:29:49 139

原创 洛谷 P5889 跳树(线段树)

题目对于二叉树的知识点的考察直接拉满其实很容易发现对于只有 1,3 的序列是很容易维护的,但是同时要维护右儿子,需要清楚到底要维护什么设当前序列已经有 x 个有效的右儿子,(有效的意思是没有被访问父节点的操作抵消掉)那么其对答案的贡献值应该是剩下的就是找到有多少个有效的右儿子即可,由于这个序列会构成一棵树那么树的根,也就是深度最低的那个节点开始才记录有效的右儿子,不仅仅是右儿子,还有左儿子既然要维护树的根,不妨将维护这个序列转化为维护树的根,与树的右子树的深度...

2020-12-19 13:12:50 836 1

原创 洛谷 P5026 Lycanthropy(差分×2)

题目看上去用差分应该不难,一开始的时候打算开两个数组来维护差值的前缀和与后缀和,但是考虑的情况很多,经过化简之后,可以只维护前缀和题意要搞清楚,要考虑到所有点,我就是因为当数组越界的时候不管,一直找不出错来为了防止数组下标是负数,数组从 -3*v 作为原点差分过后,一遍前缀和是点 x 与 x-1 的差值,所以需要再跑一遍前缀和const int N=1e6+5; int i,j,k; int n,m; int a[N]; int d[N&l...

2020-12-03 11:40:03 386

原创 Codeforces Round #685 (Div. 2) C. String Equality(模拟)

有两个字符串 a,b,有两种操作将任意两个字符交换 将长度为 k 的字串,并且这个字串都是同一个字符且不为 'z' ,总体加一操作给出字符串的长度 n ,以及操作指数 k ,问是否可以有 a 转化至 b题目想一下字符串应该与顺序无关所以两个字符串将相同的部分减去即可对于在 a 中剩下的相同的字符,显然要被 k 整除才可以满足题目要求,由于 a 中的字串只可以递增加一,不妨将其当前权值赋给下一个字符,来补全 a 中未有的字符#include <iostrea...

2020-12-28 21:40:50 139

原创 Educational Codeforces Round 99 (Rated for Div. 2) C. Ping-pong(博弈论)

有两个人打乒乓球,都想要赢的次数尽量多,每个人有 n ,m 点体力,每击打一次球都要消耗一点体力值,A 先发球,每个人可以接球或不接球,没有回球的人输掉这场比赛,胜者如果还有体力的话再次发球,问最后各自胜利的次数是多少A,B 两人打球,如果都想要分数最大化的话,B 不会去接球,一直让 A 打这题是来搞心态的吧 int i,j,k; int n,m; int a[N]; int main(){ //IOS; rush(){...

2020-12-23 19:50:19 199

原创 Educational Codeforces Round 99 (Rated for Div. 2) B. Jumps(思维)

多组输入,每次输入一个 x 值有一个人从 0 位置开始,第 k 次跳跃可以向前跳 k 个位置,或向后跳 1 个位置,问跳到 x 时最少需要几步其实不难想象,如果一次都不向后跳的话会按照 :1 3 6 10 进行跳跃但是如果在第 k 次向后跳,那么这个人少跳跃了 k+1 个方格,由于 k >=1,也就是说如果 k=1,那么回跳到 1,4,8 的位置处注意题目说 x 可以小于 0 了但是 k>=1 ,如果 x 正好比不向后跳时的位置小一的话,这时才会多跳一步...

2020-12-22 09:32:38 169

原创 学期总结

暑假的时候还觉得自己不晚,但现在看来已经被同龄人落下了许多,想一下这个学期都干了些什么,网络赛参加了很多,但终究还是成绩平平,每次都是失望而归,我不清楚之前的队友是怎么想的,反正每次比赛完之后都会压抑很久,题目稍稍一拐弯,时间空间卡的稍微紧了那么一下,可以将一个题的难度提升好几倍,身边一起参加集训的有的加入实验室,有的参加这竞赛那竞赛,可能这就是弱校为什么是弱校的原因,即使没有在那些地方花费时间,也会花费精力。而我感觉自己这个学期过的很快,学期一开始学着打模板题,然后一直打模板题,数据结构,数论,计算几

2020-12-21 23:26:54 115

原创 训练周记

这周花在算法上的时间并不是很多,trie 树看了一下,在 CF 开了一场虚拟比赛,发现好久不打 CF 脑子真的转不过来,现在发现过了半年其实自己学的并没有特别多,银川的区域赛开始报名了,而我还没有找到合适的队友,今年就这样了,哎。这周的主要内容还是线段树,线段树和位运算联系在一起时,想法还是比较简单,状压一下即可但是当线段树与二叉树相结合时,题目变得就比较难了,与二叉树的性质相结合,当有一个序列 a[],使得任意的 i 都有 1<=a[i]<=3,当有一节点的标号 x 执行操作 1.

2020-12-20 22:06:23 87

原创 洛谷 P4231 三步必杀(差分×2)

等差数列,用差分不用想差分数组 d 维护当前数值与前一数值的差值,两遍前缀和即可题目样例给的公差与首相是相同的,但是大部分情况是不同的,在尾项应直接减去本次操作所带来的所有影响const int N=1e7+5; int i,j,k; int n,m; ll d[N];int main(){ //IOS; while(~sdd(n,m)){ int l,r,s,e; for(int i=1;i&l...

2020-12-19 14:26:43 244 1

原创 洛谷 P5142 区间方差(线段树+数论)

关于求方差的题目之前做过,所以问题不算很难和这道题目很像:https://baichuan.blog.csdn.net/article/details/110707826区别是这道题目要用逆元求解,利用费马小定理预处理出前 n 个数的逆元即可解决问题const ll mod=1e9+7;const int N=1e5+5; int i,j,k; int n,m; ll a[N]; struct Node { int ...

2020-12-19 08:47:50 400 1

原创 洛谷 P3948 数据结构(差分+前缀和)

读懂了题意,题目没有说清楚 n 的取值范围,由于在线次数很少,离线次数过多,不得不考虑最后离线时利用 O(1) 的复杂度在线的时候暴力即可 ,复杂度 O(1000*n) const int N=1e5+5; int i,j,k; int n,m; int a[N]; ll d[N]; int mod,minn,maxx,final;void add(){ int l=read(),r=read(),w=read(...

2020-12-15 22:53:57 326 1

原创 洛谷 P4879 ycz的妹子(线段树)

题目有几处描述的不太准确,以至于以为是模板题D 的时候表示的是第 x 个有妹子的城市,而不是第 x 个城市好吧,做题的时候没注意到,剩下的就简单了,只有 D 操作和普通的线段树有所不同const int N=5e5+5; int i,j,k; int n,m; int a[N]; struct Node { int l,r; ll sum; int cnt; #defin...

2020-12-14 23:10:22 209

原创 洛谷 P2073 送花(权值线段树)

这个题如果要用线段树的话首先要考虑如何建树,那一定是动态开点了而且要维护最大值最小值,但是最气人的是有删点操作,所以在添加的时候要判断是否有节点为空。最后还有一个条件,相同的价格还不允许重新加入,看到这里应该要换思路了既然满足不重复的条件,想到之前有道 multiset 的题,题目用权值线段树解决删点时向区间最左或最右靠拢即可,添加时判断点是否早已存在const int N=1e6+5; int i,j,k; int n,m; //int a[...

2020-12-14 09:14:30 207 1

原创 洛谷 P1972 [SDOI2009]HH的项链(离线树状数组)

其实题目就是一道莫队模板题,套模板即可话说明明是莫队的模板题为什么要用树状数组解啊数据范围过大 ,用莫队的话 O(n^1.5) 达到 1e9 的复杂度,所以需要改进,只能将优化为 logn不妨将区间[……a …… a……a……a……] 中最后一个 a 作为答案的贡献,这样讨论区间内的种类数就可以保证正确性每次出现 a 的时候都要更新 a 的位置,利用桶排思想在对应位置更新最后统计位置的区间和即可const int N=1e6+5; int i,j,k;...

2020-12-13 22:29:16 195

原创 洛谷 P1558 色板游戏(线段树+位运算)

由于 T 不超过 30 ,所以根据位运算,每一位代表一种颜色,利用在线段树上的或操作即可求得有多少个 1,统计 1 的个数即可注意 1<<(k-1) 代表的是二进制的第 k 位const int N=1e5+5; int i,j,k; int n,m; int a[N]; struct Node { int l,r; int sum,lazy; void update(int val)...

2020-12-10 21:47:19 298

原创 训练总结

这两天比较糟糕,身体出了点问题,用不出力气,水卡还掉了,真是倒霉到家了这周把线段树 普及+/提高 上的题目完成了,又重新回顾了树链剖分和主席树的模板,有道题想了两天,还是没有看出是哪里错了,这次要说收获,我肯定会说差分那部分差分真的很奇妙,在线段树中使用差分构造等差数列如果对区间 [l,r] +k ,那么只要做单点更新 如果对区间 [l,r] +id( i 从 0 开始逐渐 +1 ),那么区间更新可以实现 最后区间查询即可求得单点的值还有一种特殊的线段树,在端点位置要特别注意的线段树...

2020-12-06 12:34:32 152

原创 洛谷 P1533 可怜的狗狗(主席树)

const int N=3e5+5; int i,j,k; int n,m; int a[N]; struct Node { int l,r; int sum; #define lson id<<1 #define rson id<<1|1 }t[N*20]; int root[N],tot=0; vector<int> v;int get_id(int x){ return lower_boun...

2020-12-06 12:15:55 274

原创 洛谷 P1471 方差(线段树+数学)

对于操作 1,2 应该很简单可以实现,但是操作 3,该如何实现,一定是要经过转化的,利用线段树,很容易求得任意区间的和,现在只剩下求 这一块的值为多少即可emmmmm,以我现在的数学能力是没有办法在化简了,但是我们可以用线段树再来维护一下这个值当区间 +k 操作时,那么有 这样区间平方和也变得可以维护了const int N=1e5+5; int i,j,k; int n,m; double a[N]; struc...

2020-12-05 19:01:06 437

原创 洛谷 P1438 无聊的数列(线段树+差分)

一开始的时候也是没有思路,但是看到了考点里有差分对于区间更新:对 l 位置 +k 对区间 [l+1,r] +d 对 r+1 位置 -(k+(r-l)*d)那么单点查询变成了a[p]+sum[p](sum[p] 为差分的前缀和)​​​​​​​当然要注意,在更新区间时,要判断 l+1 与 r 的大小关系,以及对 r+1 位置的更新时,可能涉及到第 n+1 个数,所以在建树过程中不妨多开一个点以下代码无建树过程,因为初始差分值为 0const int N=1e5+5;...

2020-12-05 08:58:54 359

原创 洛谷 P3801 红色的幻想乡(线段树+容斥)

如果会二维线段树的话,这个题目应该会好想一点,但是数据范围不允许使用如果考虑一维线段树的话,只能考虑每次的贡献值其实不难发现,我们建两个线段树,分别维护 x 轴和 y 轴,这样对于每一次询问,只要找到 [x1,x2] 有几个标记的点(记为 x),[y1,y2] 有几个标记的点(记为 y)所以答案为,但是还差点,因为其所在的位置并没有红雾,而在计算横向有多少点和纵向有多少点时,都需要减去这个特殊点也就是减去,但是还有问题,这是一般情况,如果有两条直线重合呢?假设与 x 同向的...

2020-12-03 17:31:51 299

原创 洛谷 P6812 「MCOI-02」Ancestor 先辈(线段树+差分)

题意不大清楚,不过就是判断所给区间 [l,r] 是否是个单调递增(非严格)序列判断区间 [l,r] 是否是一个单调递增序列,可得任意一个数 a[i]-a[i-1]>=0 所以考虑差分设 d[i] 为 a[i] 的差分数组,所以题目转化成要判断 (l,r] 区间上的差分数组 d 的最小值大于 0而且题目涉及区间更新,所以用树状数组,但是树状数组我不会怎么更新区间最小值所以题目成了线段树裸题,分块也应该可以const int N=1e6+5; int i,...

2020-12-03 16:18:08 242

原创 洛谷 P6492 [COCI2010-2011#6] STEP(端点线段树)

其实这个题直接模拟即可,也算是要记住的一个模板了对于线段树维护的每一个区间,都有一个区间最值 maxx,左端点前缀,以及右端点后缀当更新一个点时,每次 push_up 都要做到从子节点转移到本节点,还要为其父节点的更新做铺垫所以对于任意一个节点 x 来说x 的左前缀是其左儿子的左前缀,x 的右后缀为其右儿子的右后缀,区间最值为其左右儿子的最大值但是当端点处更新时,我们要判断连接处是否更大,以及为父节点考虑如果 x 是父节点的左区间,那么判断 x 的左前缀是否要更新如果 ...

2020-12-03 15:18:20 367

原创 洛谷 P3258 [JLOI2014]松鼠的新家(树链剖分)

题目要求熟练掌握树剖的概念,以及确定线段树的标号,题目应该不算难这 n 个点之间,每两点之间都加 1 ,这样只有最后一个点和第一个点没有做多余的操作,题目还要求最后一次到达终点时不用再拿糖果,所以除起点外其余点的权值减 1 记为最终答案。const int N=3e5+5; int i,j,k; int n,m; int a[N]; struct Node { int l,r; int sum,lazy; ...

2020-12-03 08:52:27 284

codeblocks17.12安装包.zip

适合新手使用的编译器,之后更新 百度网盘安装包: 链接:https://pan.baidu.com/s/1M1PGcirlC0He1WjOFrw8gQ 提取码:jfq5

2020-07-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除