自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 新生讲课 ------- 字符数组char

初始化字符数组的时候可以在[]中填入字符数组的长度,但是初始化不能超过该长度(注意\0),也可以省略填入的数字,这样一来该字符数组会根据你的初始化内容开出相应的空间.例如 char s[] = "bilibili"看似是s[0 ~ 7]但实际上还有一个s[8] = '\0',这一位不会输出出来但是确实存在。二维字符数组:存放多个字符串,第一维是字符串的数量,第二维是每一个字符串的长度(形如二维数组)这里的x是一个字符,y则是一个字符数组也就是字符串了。sizeof返回字符串的长度(包括\0)

2024-10-03 00:55:10 310

原创 9.29日志

我都不知道自己怎么想的k / 2 * (k / 2 + 1)难道就不爆了?正确的边界是sqrt(k),这样正好可以在范围内。一场极其失败的cf,并不是出题少而是整个人不在状态,思路想的不满但是很多细节全部忽略或者脑瘫,例如b爆ll这个点早就想到了但就是没有反应过来无论是右边界设置为k还是k / 2都会爆ll,要不是最后造数据察觉到不对劲甚至这题都不一定能ac.这道b,20min思路正确敲完代码,但在这脑瘫错误上wa了4发还从22min就该ac一直拖到写完c的99min,分数完全没了.

2024-09-30 01:53:38 373

原创 9.26日志

接下来是sg函数,对于一堆石头,每次可以从中取走{a1,a2....an}集合中的任意一个数量的石子,每一个sg函数相当于一个节点,它会有n个分支指向n个节点直到节点为0,这时候该节点的sg值为0,每一个节点的sg值 = mex(该节点所有后续节点的sg值),那么就可以得到一个性质,sg = 0的节点只能走到非0节点,sg!5.合并a的一堆和b的一堆(a >= 1 && b >= 1) ==> (a - 1 , b + 1(堆-1 + 1,石子数 + 1))

2024-09-26 23:48:27 795

原创 9.24日志

遇到像这道题你甚至不知道滑动窗口的长度的时候,我们可以想到二分答案,在check函数中进行dp,这样一来长度就明确了,问题也转变成至多空连续空x道题,问最小的时间是否超过t,那么就是和之前的烽火传递,修剪草坪是一样的题型了,对于每次二分出的长度mid,我们需要维护一个长度为x + 1(因为是允许空x个题目,那么你上一次选择写的可以是i - x - 1这道)的滑动窗口进行转移。

2024-09-24 22:28:04 249

原创 9.23日志

这一类题型其实和之前的修剪草坪是一模一样的,只不过需要完全反向来考虑,因此可以用两种办法解决这一类题目,该题用的是修剪草坪的办法,我用该题的思路反着写了一遍修剪草坪。

2024-09-24 00:52:17 176

原创 9.20日志

我们用一段的终点来划分区间,dp[i]表示的是前i头牛的最大效率,首先考虑第i头牛选不选,若不选则dp[i] = dp[i - 1],若选则需要考虑上一个断点在哪个位置,上一个断点的位置在[i - k + 1 ~ i - 1]的位置,因此想到单调队列优化,因为是区间和因此还需要用到前缀和优化,若选择第i头牛则dp[i] = dp[i - x - 1] + a[i] - a[i - x],也就是要找到dp[i - x - 1] - a[i - x]的最大值,我们把这一项用滑动窗口进行维护即可.

2024-09-21 00:53:43 271

原创 9.19日志

首先做一个前缀和,之后发现我们要找的子序列就是ai - a[k](k在[i-m ~ i - 1]之间),为使结果最大我们就要使得a[k]尽量小,那么问题就转换成了我们要对于ai我们要找[i - m ~ i - 1]中最小的a[j],那么就会想到单调队列使得以线性的复杂度解决问题。3.res的转移应该在将i加入队列之前,因为我们要找的是[i - m ~ i - 1]之间的最值,若在添加i之后转移则相当于找的是[i - m ~ i]的最值。1.答案可能是负数,因此res初始化为负无穷。

2024-09-20 00:04:56 241

原创 9.18日志

思考本题的时候我们发现每次准备往下走的时候只可能在本行线段的左端点或者右端点,同理我们也只能从上一行的左端点或者右端点走到当前行的某一端点,这包含了所有的情况,那么我们只需要将状态表示出来并且正确进行状态的转移后在最后一行对于左端点和右端点分别到n点的距离加上dp[l]/dp[r]取最大即可,需要注意的是因为本题n较大若我们创建二维数组表示整张地图的话会爆空间,并且我们又发现每一层的状态只与上一层的有关那么我们可以使用滚动数组优化空间至两维,注意初始化。今天主要学习了如何使用css去装饰文本,字体和背景。

2024-09-19 00:33:27 520

原创 9.13日志

题意很明显,属于模板题,就是求树的直径,常规解法是两遍dfs,随便选择一个点dfs出最远的点u,再由u点dfs出最远的点v,u和v的距离就是树的直径,但是该解法只能求无负权的树,遇到有负权的树的时候我们需要用树形dp求解,这是一个典型的由下而上转移的模型,我们令f1[i]表示以i为根的子树中离i点最远的点的距离,f2[i]表示以i为根的子树中离i点次远的点,这样就可以解决最远的点与i在同一路径上或者分局两个不同子树的情况了。今天因为要写作业没有学习web,之后准备web和英语交替学习,时间增长为每天2h。

2024-09-14 00:33:40 459

原创 9.12日志

也是典型的区间dp,我们状态表示就是[l ~ r]最多可以进行的操作次数,预处理出前i个字符中0和1的数量,在状态转移的时候只用判断是否符合转移条件后即可进行转移,这里给出区间dp的一般做法和记忆化搜索的做法。描述颜色的时候可以用rgb表示,rgb(红色 , 绿色 , 蓝色 , 透明度(可省略))学习完了各种选择器,其中需要着重记忆的是类,id,标签选择器,其他选择器也要注意。该题本身的思路很常规,难点在于高精度,这里偷了个懒用了int128也能过。今天结束了区间dp的学习,明天开始学习树形dp。

2024-09-13 00:42:09 424

原创 9.11日志

区间dp的思路十分清晰,难点在于我们需要记录每一次发生转移的状态,同时需要注意当一方子树为空的时候分数是1,那么当某一边区间长度为1的时候我们要特殊处理,记录状态我们需要另开一个区间表示的数组,该题dp的状态表示是由节点l~r组成的所有可能的二叉树中的最大分值,我们这里的k实际上是枚举根节点,因此每一次dp实际转移的时候,我们的区间数组就将k记录下来,意义就是在l~r组成的二叉树中k为根的时候分数最大,写出前序遍历的时候我们已经有了每个区间的最优节点,那么我们从区间1~n开始递归即可。

2024-09-12 00:31:51 355

原创 9.10日志

重新复习了一遍kmp算法,加深了一些理解,首先我们需要知道next数组的含义,next[i]数组的含义是对于字符串s[1 ~ i]的最大公共前后缀的长度,在进行字符串匹配的时候我们的j其实是在重复j++与j = next[j](回跳)的过程,若新的字符能够匹配那么就j++,不然j会一直往回跳,跳到当前b[1 ~ j]最长后缀相等的最长前缀的结尾,重复这个操作,这样最坏的情况也不过是从第一个字符重新匹配。另一种是内部样式表,就是在html文件内的head部分直接写css,从而对该文件内的对应区域生效。

2024-09-11 00:54:45 949

原创 9.9日志

手上有货的时候,我们可以由昨天有货直接转移,也可以由昨天无货转移,若昨天无货转移到今天有货就说明买入了ai,并且需要注意的是我们是通过上一次交易转移来的,因为手中买入货物相当于一次交易的开始,而你本身作为第j次交易的起点上一个不同的状态只能是上一次交易的,手上无货的时候可以有昨天无货直接转移,也可以由昨天有货转移,表达的含义就是今天卖出的,同时需要注意初始化。要求的是偷的最大价值那么,并且局限了不能连续偷,那么可以考虑dp,dp[i][j]的状态表示是第i件物品偷/不偷时最大收益,状态转移方程很好想。

2024-09-10 01:14:03 563

空空如也

空空如也

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

TA关注的人

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