自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Codeforces Round #749 (Div. 1 + Div. 2, based on Technocup 2022 Elimination Round 1)

A. Windblume Ode题意是给你一个数组。然后要你求得一个子序列,这个子序列每个数的和是一个合数,并且是该数组能得到的最大的合数。输出这个子序列中每个元素的下标。一开始看到这个题目的n的要求是大于等于3,又是求合数。想到3个数相加,如果是奇数,那么肯定有一个数是奇数,减去这个奇数就可以得到一个偶数。如果和是偶数,那么一定是合数。3个数以上也是一样的。所以可以只删去一个数就可以使这个和从素数变成合数。所以就先求得所有数的和,先判断和是不是合数。如果不是。然后从小到大遍历一下删去这个数是否是

2021-10-19 21:20:51 152

原创 Codeforces Round #748 (Div. 3) A-E

A. Elections题意就是给你三个数,然后让你求出要超过其他两个数,他需要再加多少。就是判断出所有情况即可。如果三个数都相同的时候 就都只需要加1。如果两个数相同并且大于另外一个数,则这两个数需要加1,而另外一个数则需要加他们的差值再加1。三个数都不同就是和最大值有关了。除了最大的那个数本身不需要再加1,其他两个数都需要加差值再加1.#include <bits/stdc++.h>using namespace std;#define ll long long#defi

2021-10-17 17:25:46 100

原创 AcWing 打卡记录day 7

108. 奇数码问题因为之前ysj写九宫格的时候就说过这个事情,怎么判断是否有解。是根据逆序对来求。不过九宫格的答案是固定的,这个题目的结束态是他给你的。这里就涉及了一个结论。因为n一定是个奇数。所以你向上或者向下移动,相当于在一个一维数组中,前进或者后退了n-1位。n-1一定是个偶数,假设你这n-1个数中, 有a个比你大,b个比你小。a+b=n-1 ,即a+b是偶数。假如你后退n-1位,那么你一开始对这个区间逆序对的影响是a,后退完后对这个区间的影响是b。那么你对整个数组的影响就是 b-a,

2021-10-17 16:18:26 92

原创 AcWing 打卡记录day 6

106. 动态中位数题意就是题目。因为题目要求只在数字个数为奇数的时候才输出。所以其实可以根据 这个 中位数, 将左右分成两个部分, 然后下一个数进来的时候,通过判断,选择将其放在哪一边。因为你将数放进两边的时候,还需要排序,所以这里用优先队列。因为是取到队头,所以小于中位数那边用降序,大于的那边用升序。然后模拟一下 下一个数放进来的情况即可将所有情况列出来,然后判断怎么交换两个队列里面的数。 并且输出的就是降序队列里的对头即可。#include <bits/stdc++.h>usi

2021-10-17 15:18:19 96

原创 AcWing 打卡记录day 5

102. 最佳牛围栏是一个二分的题目,但是check函数很难想。因为是浮点型,所以二分格式中就不需要-1了。题目要求的是最大的平均值。那么我们就二分来求平均值。传进去的参数mid 是我们假定的平均值。然后计算每个数对这个平均值的影响。然后通过前缀和,快速得到某一段区间对这个平均值的收益。如果这个区间大于等于m并且收益大于0。就说明这个不是最大的平均值。现在的问题是怎么确定这个区间。我们用一个数,来存前面的k个数对平均值收益最小的值。因为如果这个区间加上后面的那个数之后,如果后面那个数比平

2021-10-17 14:56:19 75

原创 ccpc网络选拔赛总结

Primality Test一开始再看f题,吧f题读完后,发现d题都过了好几百了。于是连忙赶过来看d。题意很简单。结论也很容易想。就是除了2和 3 相加除以2取整的值不是质数之外。其余两个相邻质数相加除以2得到的都不是质数。因为两个质数相加除以2得到的值。就是这两个相邻质数中间的一个数,两个相邻质数中间的数肯定不是质数。而且因为除了2,其余质数都是奇数,所以除以2肯定是直接取整的。所以结论就是除了1是yes,其他都是no#include <bits/stdc++.h>using

2021-10-11 22:08:20 232 1

原创 AcWing打卡记录 day4

99.激光炸弹是一个二维前缀和,主要运用到的就是 pre[i][j]+=pre[i-1][j]+pre[i][j-1]-pre[i-1][j-1];pre[i][j]表示的是二维上的数组的值的和。所以pre[i-1][j]+pre[i][j-1]就会有一个重复的部分pre[i-1][j-1];所以就得减去。得到其值。而在后面得到一个r*r的区域的值的时候也是一样的, ans=max(ans,pre[i][j]-pre[i-r][j]-pre[i][j-r]+pre[i-r][j-r]);

2021-10-11 22:03:46 78

原创 AcWing打卡记录day 3

AcWing 96. 奇怪的汉诺塔和一般的汉诺塔不同,这个有四个塔。在三塔的时候,我们可以理解成,我们放n个圆盘的时候,是先将n-1个圆盘转移到B盘,然后将第n个转移到C盘,再将n-1个圆盘转移回来。所以状态转移是f[i]=f[i-1]*2+1;//整体移动两次(i-1)个圆盘 然后加上移动一次第n个圆盘。当我们四塔的时候,和三塔类似。因为三塔只有3个塔,在前面n-1个圆盘占据了一个塔之后,相当于只剩下两个塔给他转移了。所以只能最后一个圆盘转移。但是四塔的时候,将n-1个圆盘转移到一个塔

2021-10-08 00:02:37 159

原创 AcWing打卡记录day 2

93. 递归实现组合型枚举简单递归。因为要从字典序从小到大排序。// Problem: 递归实现组合型枚举// Contest: AcWing// URL: https://www.acwing.com/problem/content/95/// Memory Limit: 256 MB// Time Limit: 5000 ms// Date:2021-10-06 09:51:47//// Powered by CP Editor (https://cpeditor.org)#inc

2021-10-07 00:10:19 137

原创 AcWing打卡记录day 1

89 和 90都是快速幂的题目。89是快速幂板子。90是运用到了位运算,二进制,当a * b要大于long long 类型的话,因为要模p则可以,将b转换成二进制的数,然后一位一位的运算。ll ksm(ll a,ll b,ll p){ ll ans=0; while(b){ if(b&1) ans=(ans+a)%p; a=(2*a)%p;//因为是二进制,所以每次都是乘2 b>>=1; } return ans;}91是一个简单的状压dp的题目。即用.

2021-10-06 09:46:55 98

原创 2021.7.14

这两天就是把VJ上剩下的三题刷完。学了状态压缩dp。明天开始学博弈,sg函数。状态压缩顾名思义。就是为了节省内存。将其状态用一个数存储下来。该数用几进制表示,就可以每一位上存储几种状态。比如说 要存储 3个点是否去过。 是否去过是两种状态。那么我们就可以用二进制来存储去这三个点的状态。 例如 3 转换成2进制是 011 那么就可以认为,数字3存储的是 去过点 1 和点 2 没有去过点3的情况。如果有3种状态,像k题一样 一个点有去过0,1,2次3种情况。那么就可以用三进制的数来存储。和二进制

2021-07-15 01:06:04 175

原创 2021-07-12

康托展开康托展开就是求一个字符串的字典序是这一串字符串的字符能组成的字符串中的第几名。(从小到大排列)。时间复杂度康托算法能在O(n2)的时间里求出该字典序的排名,用线段树维护的话能减少到O(nlogn)。康拓展开的式子ai表示的是,倒数第个i位置后面的数比倒数第i个位置的数小的个数。即x则为这个字符串的排名-1,因为字典序最小的x为0。为什么这个式子能求出排名用 45231作为例子。4后面比4小的数有 2 3 1。那么吧这三个数和4进行交换,那么后面4个数字随便排列都比之前的字典序要

2021-07-12 21:56:33 80

原创 2021.7.10

倍增倍增字面意思上就是成倍的增长。我们在进行递推时,如果状态空间很大,通常的线性递推无法满足时间和空间复杂度的要求 ,那么我们就可以通过成倍的增长,只递推状态空间中在 2 的整数次幂位置上的值作为代表 。快速幂因为一个数我们是以二进制存储的,所以在快速幂的运用时,a的5次方。5转换成二进制为101,那么a的5次方,就是a*(2^2加2^0)。可以这样转换。ST表ST 表是用于解决 可重复贡献问题 的数据结构。即两个有重叠范围的区间求这两个区间合并起来的最大值,就等于两个区间分别的最大值的最大

2021-07-11 00:25:57 58

原创 2021.5.11

抽象类抽象方法(只有方法签名,没有方法实现的方法)抽象方法和抽象类必须使用abstract修饰符来定义。有抽象方法的类只能定义成抽象类。抽象类可以没有抽象方法。抽象类的构造器不能用于创建实例,主要是用于被其子类调用。抽象类不能被实例化,抽象方法不能有方法体。当使用abstract修饰类时,表明这个类只能被继承。当使用abstract修饰方法时,表明这个方法必须由子类提供实现(或重写)。abstract关键字修饰的方法必须被其子类重写才有意义,否则这个方法永远都不会有方法体,也因此,abstra

2021-05-11 23:41:45 143 2

原创 ## 2021.5.8 学习总结

P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles题目链接https://www.luogu.com.cn/problem/P1216题目描述观察下面的数字金字塔。写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。 7 3 8 8 1 0 2 7 4 44 5 2 6 5在上面的样例中,从 7→3→8→7→5 的路径产生了最

2021-05-09 01:21:41 92 1

空空如也

空空如也

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

TA关注的人

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