自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 软考-2022第二版系统架构设计师笔记-第七章 系统架构设计基础知识

2024-03-14 15:46:50 301

原创 软考-2022第二版系统架构设计师笔记-第四章 信息安全技术基础知识

2024-03-14 11:55:52 431

原创 软考-2022第二版系统架构设计师笔记-第三章 信息系统基础知识

2024-03-14 11:52:57 247

原创 软考-2022第二版系统架构设计师笔记-第五章 软件工程基础知识

2024-03-13 11:09:44 141

原创 AtCoder ABC215

本期难度适中。

2024-03-08 11:10:36 1013

原创 ABC212

本期开始题目变为8道,100+200+300+4002+5002+600的模式。F和G两个500分题均有难度,洛谷评分蓝。

2024-02-29 22:49:30 899

原创 数位DP专题

数位dp题单

2024-02-07 10:13:19 287

原创 vector如何实现有序数组?

但我们可以使用vector和lower_bound进行类似的操作:使用lower_bound找到插入的位置,使用vector::insert插入该位置。正统的做法是维护一个最大堆和一个最小堆,最小堆的数在后半部分(比最大堆大),最大堆的数在前半部分,每次取最大堆的堆顶。但是写起来比较麻烦。python中有第三方库SortedList,C++并没有这样的stl库。,使得其保持有序,而且支持插入时间为。有序数组维护一个序列。

2024-02-07 09:27:41 383

原创 AtCoder ABC201

本期很有难度,D E F都不是一眼能看出的题目。

2024-01-24 08:16:43 834

原创 AtCoder ABC198

本期F为群论题,很有难度。

2024-01-16 22:48:35 382

原创 AtCoder ABC197

本期难度适中,比起前几期的FFT和网络流要容易一些,但是需要仔细思考。

2024-01-16 22:19:52 334

原创 AtCoder ABC194

这期比193稍微简单一点。

2024-01-11 10:48:21 395

原创 贝肯鲍尔逝世

可以说上古大神里面最亲切,也是每次电视转播里面都坐在拜仁看台上面的老朋友一样的教练、主席,他也抵不过岁月,走了。一个年轻人没有电子游戏的、足球的黄金时代的终结。90年世界杯的贝肯鲍尔和马特乌斯。

2024-01-09 08:06:04 374

原创 AtCoder ABC189

这套题值得写一写,从C题开始就很有技巧。

2024-01-05 11:43:13 777

原创 AtCoder ABC188

本期题比上期更简单,只有一个绿题,而且并不是很难的数学题,估计比赛时能AK。

2024-01-03 11:29:32 339

原创 AtCoder ABC187

本期题比较简单,但是如果不懂套路就难以想到。

2024-01-03 08:52:39 933

原创 AtCoder ABC186

E题和F题两个绿题。

2023-12-29 14:29:16 786

原创 AtCoder ABC184

本期题目依旧不是很难。C题数学,D题DP,E题宽搜,F题是折半搜索模板题。

2023-12-27 21:58:44 447

原创 AtCoder ABC 183

本期考察STL的性质较多,如果熟悉的话基本可以秒掉。

2023-12-27 08:37:47 360

原创 Atcoder ABC179

这期的题都可以用py写。

2023-12-20 11:15:58 357

原创 AtCoder ABC176

因为答案肯定在maxh和maxw的那些行列中,因此遍历一下行h和列w,如果map[h][w] == 1则跳过,不然就可以直接确定有一个点的答案是maxh+maxw。普通的memcpy是过不了的,因此需要记录一下每次发生update的点对。设dp[i][x][y]是第i次结束后留下牌面为xy的最大得分。在上一轮留下牌为bb的情况下,可以拿走bbb,转移为aa。转移的时候我们需要遍历所有的牌dp[i][j]转移的时候我们可以遍历剩下的一张牌i,那么。上一轮留下两张牌为ax的情况下,最短路的做法,最小堆维护。

2023-12-14 15:58:40 44

原创 AtCoder ABC175

起点向每个字符串连一条权值为w[i]的边,从回文前缀和回文后缀向终点连一条权值为0的边。在单纯的dp路径问题上增加一个维度,表示当前行拿到k个数的情况下最多能得到的分数。每次维护字符串本身,以及字符串是在左边拼接还是在右边拼接作为一个状态节点。如果能移到负半轴,那么取余数r求r与d-r里的最小值。比如abcab可以看成(abcab,0)每次拿这些节点去匹配字符串,相当于一条边。如果不能移到负半轴,那么终点就是答案。正数和负数是一样的,因此取绝对值。匹配cba后变成(ab, 0)再匹配cba后变成(c,1)

2023-12-12 16:51:54 44

原创 AtCoder ABC174

现在遍历颜色数组c,取pos[i]为当前color的最新位置,维护每个color的在区间内的个数(只有0或者1)。换句话说,每个color在要维护的数列里只出现一次并计数1,这样可以保证区间内color的数量就是区间color集合的元素个数。题目本身不难,这种求最大值里的最小值或者最小值里的最大值都可以用二分来进行求解。但是即使用浮点数往上取整,很容易有精度的问题,WA一个点。一开始理解错了Round Up的意义,以为是四舍五入。首先离线查询,按r前往后排序。最后的R置换最前面的W。

2023-12-08 13:30:44 56

原创 AtCoder ABC172

正确的方法是二分答案,并在答案n中遍历第一组选取的i与第二组选取的n-i个数。这样就可以通过质因数分解的方式,枚举出能整除n的质数a,然后通过上述公式计算。如果贪心去选,始终会选第二组。而正确答案显然是选第一组。例如第一组是8 1 1 1 1 1 1…第二组是7 7 7 7 7 7 7…时间内暴力解决,即调和函数。这里采用了另一种解法,在。虽然N很大,但是可以在。

2023-12-06 17:23:57 74

原创 AtCoder ABC170

BFS ,采用dist数组标记,如果已经预先访问到了,而且计算得到的步数是相同的,那么就break,不需要再浪费后面的步数去计算。模拟题,使用stl中的multiset就可以。从小到大排序,有相同数不计入,暴力计算。维护幼儿园的最大堆,以及总体的最小堆。

2023-12-05 11:23:39 34

原创 AtCoder ABC165

找规律1,这个规律比较简单,打印一下易得。LIS在树上的应用,模板题。所以遇到这种情况加1即可。注意递归前后保留上下文。搜索,然后check。

2023-11-29 11:25:19 36

原创 AtCoder ABC163

如遍历到u=2后,枚举子节点3,发现子节点里面最大子树和为2,还剩下sz[v]-2=3。在dfs处理时,设当前的节点为u,不能简单的将sz[u]加到sum中,而需要预先记录下之前的sum值。的用意在于,确保取2个数与取3个数下面取到的和是不相同的。sum[i]数组按搜索顺序,意思为访问到当前,颜色为i的最大子树和。以上图为例,访问到2完成后,红色最大的子树是以2为节点,sum=6。的情况下,检查能取到的最大和与最小和,此时中间的所有数都能取到。本题的关键是建立sum数组,从而求出连通集的大小。

2023-11-28 13:33:37 52

原创 AtCoder ABC162

但实际上k的取值范围很小,我这里取的稍微放大了一点范围。然后遍历后两个数,求第一个的前缀和。为不选中i位置的数周前面一共选中了k个数的最大和。为选中i位置的数后前面一共选中了k个数的最大和。这是一个调和级数的时间复杂度。空间复杂度用滚动数组优化。注意到每个值g的方案。

2023-11-23 17:47:19 45

原创 Atcoder ABC159

既然n范围是10,那么在n的宽度上做一个位操作,若i位与i+1位之间有切割,i位设为1,枚举横方向的切割方案,然后在竖方向上做贪心。先统计总的,然后减去选到的那个数再重新计算。观察了一下,发现在做到 i位时,可以去计算。其中sum是当前计算的和,F代表方案数。的三重循环,因此要记录一下前缀和。总体来说本期比较简单。

2023-11-22 08:33:02 47

原创 Atcoder ABC158

选中时右边覆盖链一直往右覆盖,需要找到覆盖链不能覆盖的第一个数next dp[i]+=dp[next]每个数进入后,在被覆盖到的时候出栈,因为被覆盖了以后就没有继续存在的意义了。设置两个数组分别代表前后加入的字符,reverse时交换数组。10和大部分质数是互质的,因此可以用前缀和的方法。范围足够小,遍历100/0.08内的整数就好。2和5与10不是互质的,但是只要看尾数即可。为了方便在栈里加入一个很大的数代表位置n。不选时dp[i]+=dp[i+1]设dp[i]为从i到n的方案数。

2023-11-21 14:31:12 60

原创 AtCoder ABC156

枚举0的个数,设有i个位置为0,那么剩下的n-i位置中要安放n个球,且每个位置至少放1个球,a个球放在b位置中每个位置至少一个球的方案数等价于在a个球的空隙中插b-1个隔板,因此为。由于原始数组中每个数都为1,那么操作等价于将1变为0,然后看剩下的一些位置中如何放球。由于a.b都不大,因此可以做。注意用递推计算逆元.最小值实际上可以计算导数,将复杂度降为。从0到100模拟一遍位置最小的点。

2023-11-20 15:44:31 48

原创 AtCoder ABC154

cap表示搜索是否被限制,当之前搜索的数字比s小时cap=0,否则cap=1,开始时cap=1。函数是从(0,0)到(r,c)点的所有组合数的和。pos表示当前搜索到的位置(开始为0,结束为n)1.每个(r,c)点上的数都是一个组合数。签到题,注意大小写和以前的不一样。num表示已经使用的非0数字个数。2.可以用容斥原理将ans拆成。将g按列分解(行也一样)签到题2,用个窗口即可。数位DP(搜索)的例题。

2023-11-14 19:29:43 61

原创 AtCoder ABC152

比如下图中有两个constraint,原题求满足所有的限制的方案,需要枚举每种黑色放置的方案,很不好做。如果反过来求不满足限制的方案,即在某些限制路径上全填白色,求总的方案数,那么就比较好做。所以最终不满足任一约束的方案数是2+2-1=3个,因为三条边全取白的方案在0b01和0b10中都计数了一次,因此按照容斥原理予以减去。由于不同的限制路径下边的集合会有交集,因此需要使用容斥原理计算。在这种情况下,不满足条件的方案只有1个,就是三条边全取白。f(1)=2,因为边2可以取两种颜色,边0边1全取白。

2023-11-14 11:38:48 75

原创 AtCoder ABC150

单纯的kmp似乎没什么思路,但是如果将每个数组相邻的数进行异或操作,就变成了kmp模板题。原因是4折半后为2,导致求得的lcm可以被2整除,如6/2不为半数。中,第一部分贡献1,第二部分分别由前面的数字贡献了1+1,因此是3;这部分仅仅和前面的那一位相关(当然这一位也要填1),因此贡献值是。我们可以将其拆成两部分,第一部分是“只要填了1就可以贡献1”中,第一部分贡献1,第二部分由第一位1贡献了1,因此是2.看第3位,他对答案的贡献是3+2+1+2=8(从上往下)比较巧妙的计数方法是将每一位的计算拆开来。

2023-11-10 17:45:04 67

原创 AtCoder abc148

需要找到T能“躲藏”的最长路径,也就是da[i] > dt[i]的i。A只需要等待在前一个格子让T遇上A即可。首先对每个点分别求到A和到T的最短路径。记为da与dt数组,接下来稍微要动一下脑子。trailing zero只与5的个数有关,因此算一下5/25/125…

2023-11-08 15:31:19 92

原创 AtCoder ABC146

在队列后面插入,如果当前的数据比队列后面的数据要小,那么那些排在前面的就没有必要维护了(因为前面的肯定比当前数据先出队列)比较暴力的方法是维护一个堆,但是不知道为什么一直RE,卡在第3个handmake点上。题目比较简单,点出度最大的度数就是颜色的种类,从该点开始搜索。注意遍历到当前时有长度限制。维护一个单调递增的队列,队列头是。BFS不好写,还是要用DFS。于是改成了单调队列的方法。是单调递增,因此二分。

2023-11-07 11:26:37 64

原创 AtCoder abc 144

元素两两相乘的积很明显的应该从a正序,b倒序进行相乘,此时可以保证L最小。如果不满足性质,那么将a扣掉份额。最后累计要扣掉的份额,计算是否满足题目需求。N=600下,枚举每条可能删的边会超时。但是由于只需要删一条边,因此针对每个点,只可能是它期望值最大的子节点和它之间的那条边被删掉。当你看到求数组某函数最大值的最小值,并且毫无头绪的时候,就应该想到二分。求数组元素的两两相乘积最大值不能超过L的解法,并求L的最小值。分两种情况,一种是水比一半面积少,一种是水比一半面积多。体积和面积是等同考虑的。

2023-11-03 14:46:01 72

原创 AtCoder abc143

单纯floyd求最短路径是不行的,因为如一条路径是2,3,2,从点1到点3最短路径是7,而l=4时从点1到点4要加两次油。第二个图中如果路径为2,2,3, 最短路径还是7,但是只需要加一次油。如果点s到点t可以一次到达,点s到点t的距离设为1,否则设为INF。问题的关键是,第一个图中点1到点3是无法一次到达,而图2中可以。排序后two pointer。再求一次最短路径就是答案。因此修改原最短路径图为。本题需要证明单调性质。

2023-11-02 16:44:28 152

原创 AtCoder abc142

求gcd中的质因数个数+1。

2023-11-01 13:33:58 52

原创 Atcoder abc141

C++提交了几次都没有过,反而是pypy一次通过。堆贪心,每次操作都在最大的那一个,然后重新插入。不能在线性基中贪心地选取最大异或和。

2023-10-30 15:13:31 65

空空如也

空空如也

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

TA关注的人

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