自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 二分详解

Part 1 例题T1. Group不建议作为第一道二分题,本题有一定思维难度。Description给定nnn个数,询问最少需要改变多少个数才能使得这nnn个数的方差不超过mmm。Solution本题是典型的暴力启发正解的好题,这里一步步进行讲解。算法1: 贪心+暴力枚举我们枚举每个数是否被改变;贪心地,这些数都被改变为一个值,使得这些数对答案均没有贡献。所以,我们只需要将那些未被改变的数求出方差即可。时间复杂度O(2nn)O(2^nn)O(2nn)。算法2: 贪心可以发现,在排序后

2020-08-26 22:04:29 572

原创 洛谷八月月赛II Div.2 A-C题解

PS: DDD有空再补,题目还没看呢QAQSolutionA可以发现答案有单调性,即如果高度为hhh的房子可以盖出,则高度小于hhh的房子显然可以盖出。于是我们果断二分。对于目前的高度hhh,我们算出A,BA,BA,B材料总共缺少的数量,然后再与ccc一比即可得到二分的值是否可行。时间复杂度O(log2109)O(log_2{10^9})O(log2​109)。B可以发现,满足要求的序列是两个差为kkk交互出现的序列,并且长度是偶数。于是,我们直接枚举交替出现的这两个数中的一个,另一个也可以

2020-08-24 11:07:33 231

原创 线段树Segment Tree学习笔记

请注意,不建议读者对于每道题均编代码,码量极大T1Description给定一个序列,支持区间加与区间乘与区间查询和的操作。Solution一道线段树板子题。我们同样维护线段树的区间信息与懒标记,只不过此时懒标记记录的有两个值,即kkk与bbb,表示该节点已经乘kkk加bbb了,而其子节点尚未做过此种操作。于是,我们可以在O(qlog2n)O(qlog_2n)O(qlog2​n)的时间复杂度内解决本题。T2Description给定一个序列,支持区间修改与每次查询在1−i1-i1−i中最

2020-08-14 21:11:33 182

原创 Codeforces Round #663 (Div. 2) A-E总题解

SolutionA由于无论xxx与谁做或运算,结果均不会小于xxx;所以,我们只需要输出1,2,……n1,2,……n1,2,……n,保证以xxx结尾与xxx开头的区间一定满足要求。B显然,最终所有的东西都会集中到底部或右侧;此时,我们只需要让最右边一列的字符全为DDD,底侧的字符全为RRR,即可满足要求。故答案为右侧RRR的数量与底侧DDD的数量之和。C显然,最大的数是不会往外连边的,其他的数一定会往外连至少一条边,故至少有n−1n-1n−1条边。反面考虑。由于有nnn个顶点,我们要让它不成

2020-08-10 10:25:47 300

原创 洛谷8月月赛I Div.2题解

SolutionA高精度加法板子,注意10k10^k10k不需要使用普通的高精度乘方,可以直接求出。B较容易发现规律:①当a=0,b=0a=0,b=0a=0,b=0时,显然输出000;②当a=0a=0a=0时,我们只需要将aaa乘上一个巨大的值,将bbb除以一个巨大的值即可,代价为qqq;③b=0b=0b=0同理;④当a≠ba≠ba​=b且a,b≠0a,b≠0a,b​=0时,我们需要这么操作:(1)使用一次操作①(x=min(a,b)x=min(a,b)x=min(a,b))或操作②(

2020-08-09 12:35:25 585

原创 NOIP 2018普及组题解

SolutionA读入字符串后直接输出s.size()s.size()s.size()即可。B直接枚举p2p2p2即可。注意不能枚举后再暴力地算,需要预处理出龙方与虎方的势力,然后每次改的时候只需要变动一点就可以了,类似换根dpdpdp的思想 。时间复杂度O(n)O(n)O(n)。C状态设计dpidp_idpi​表示该公交在第iii时刻返回后,目前的总等待时间。状态转移显然:dpi=minj+m≤i(dpj+∑k=1,j≤ak≤ini−ak)dp_i=min_{j+m≤i} (dp_j+\s

2020-08-07 17:46:21 206

原创 Codeforces Round #661(CF1399)题解

SolutionA可以发现,我们可以从小的开始向上推平,例如对于序列1 1 2 3 3 41\ 1\ 2\ 3\ 3\ 41 1 2 3 3 4,我们可以先在1,11,11,1中删掉一个111,然后在1,21,21,2中删掉一个111,在2,32,32,3中删掉一个222……在3,43,43,4中删掉一个333,以此类推,这样删数毫无疑问是最佳选择。于是,我们模拟即可,判断最终能否只剩下一个数。同时也可

2020-08-06 20:50:36 262

原创 8.4-8.5刷题笔记

P1434Description求出矩阵中最长的一条数值严格下降的简单路径。Solution首先,第一波考虑的是dpdpdp,但是后效性问题极难解决。接着我们考虑记忆化搜索。即,从某个节点向外扩展路径,搜索出最长路径地长度;后面调用该节点的子问题即可O(1)O(1)O(1)调用,这是记搜的表现。若简单搜索,则会超时。时间复杂度玄学Code后效性dp: 10分解法普通搜索: 90分解法记搜: 100分解法: #include <bits/stdc++.h>#define i

2020-08-05 13:14:22 157

原创 8.2-8.3刷题笔记

P2709Description给定一个序列,qqq次询问一个区间中每个数出现次数的平方和。Solution考虑莫队。将一个数加入进时,假设这个数是kkk,fif_ifi​表示当前维护的序列中iii出现的次数,显然加入后fkf_kfk​的值增加了111,则答案增加了(fk+1)2−fk2=2fk+1(f_{k}+1)^2-f_k^2=2f_k+1(fk​+1)2−fk2​=2fk​+1。删去数的操作同理。于是,我们直接在分块式排序后,每次移动左右端点且同时维护答案即可。时间复杂度O(nn)O(n

2020-08-04 12:36:54 310 1

原创 Summer Holiday Contest 2020 Day 1官方题解

D1T1Description给定一个01串,现在要取出一些数且他们两两不相邻,请求出最大的和。SolutionSubtask 1010101枚举每个位置是否被选即可,每次判断是否存在相邻的位置,如果不存在则用和来更新答案。时间复杂度: O(2nn)O(2^nn)O(2nn)Subtask 2留给使用O(n2)O(n^2)O(n2)算法的选手。Subtask 3做法1考虑dpdpdp。状态设计dpidp_idpi​表示从111到iii取不相邻的数所能得到的最大和。显然,状态转移方程

2020-08-04 09:27:58 153

原创 Atcoder Beginner Contest 174(ABC174) 题解

打到了Rank 33Rank\ 33Rank 33,还是不错的。第一次顺顺畅畅没有WA地AK了一场ABC,写篇题解纪念一下……SolutionT1直接模拟即可。T2分别枚举每个点并用已给的公式算出其与原点的距离,然后统计距离不大于kkk的点数即可。建议用long doublelong\ doublelong double存储。T3暴力即可,考虑如何快速判断kkk个111时其是否能被nnn整除。我们可以维护一个值,即当前这么多111组成的数模nnn的

2020-08-02 22:20:05 1468 3

空空如也

空空如也

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

TA关注的人

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