自定义博客皮肤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)
  • 收藏
  • 关注

原创 CF1332E Height All the Same

最近,Alice 迷上了一款名为 Sirtet 的游戏。在 Sirtet 中,玩家会得到一个n×m的网格。初始时,格ij上码放有aij​个方块。若两个格子有一条公共边,我们称这两个格子时相邻的。上述中所提到的所有方块都具有相同的高度。以下是该游戏的一个图例说明。图中右侧的状态是由图中左侧的状态经过一次上述操作得到,灰色的方块表示操作中新加入的方块。玩家的目标是通过这些操作,使得所有的格子拥有同样的高度(也就是说,每个格子上堆放的方块数相同)。

2023-10-02 11:30:13 70 1

原创 洛谷 P5664 [CSP-S2019] Emiya 家今天的饭

Emiya 是个擅长做菜的高中生,他共掌握n种,且会使用m种做菜。为了方便叙述,我们对烹饪方法从1∼n编号,对主要食材从1∼m编号。Emiya 做的每道菜都将使用烹饪方法与主要食材。更具体地,Emiya 会做aij​道不同的使用烹饪方法i和主要食材j的菜(1≤i≤n1≤j≤m),这也意味着 Emiya 总共会做i1∑n​j1∑m​aij​道不同的菜。

2023-10-01 11:44:26 151

原创 洛谷 P5505 [JSOI2011] 分特产

JYY 带队参加了若干场ACM/ICPC比赛,带回了许多土特产,要分给实验室的同学们。JYY 想知道,把这些特产分给n个同学,一共有多少种不同的分法?当然,JYY 不希望任何一个同学因为没有拿到特产而感到失落,所以每个同学都必须至少分得一个特产。例如,JYY 带来了2袋麻花和1袋包子,分给A和B两位同学,那么共有4种不同的A:麻花,B:麻花、包子A:麻花、麻花,B:包子A:包子,B:麻花、麻花A:麻花、包子,B:麻花。

2023-09-29 18:41:43 88

原创 洛谷 P6583 回首过去

明天你是否会想起昨天未调完的题明天你是否还惦记考场写挂的暴力。

2023-09-29 01:11:11 70

原创 洛谷 P2568 GCD mobius反演

给定正整数 n ,求1 ≤ x, y ≤ n 且 gcd(x, y) 为素数的数对 (x, y) 有多少对。

2023-09-27 19:49:31 90 1

原创 莫比乌斯反演&杜教筛

处理到这儿, 预处理\mu(n)的前缀和S(n)=\sum_{i=1}^{n}\mu(i) 通过分块, 每次查询复杂度为O(\sqrt n)前置知识:d(ij)=\sum\limits_{x\mid i}\sum\limits_{y\mid j} [\gcd(x,y)=1]预处理f(n)的前缀和S(n), 通常f(n)为积性函数, 可以通过欧拉筛O(n)处理出来。// 线性筛处理莫比乌斯函数的前缀和。/* 先预处理出1~n中所有的莫比乌斯函数的值 *//* 预处理phi(1~n) */

2023-09-06 11:14:26 63 1

原创 Acwing 28. 在O(1)时间删除链表结点

第一眼看到这道题会眼前一亮,因为单链表链表的删除操作从来都是O(n)的。鉴于没有给定头结点所以不可能的到该节点的前驱,而题目又保证一定不是尾结点。这无不给我们暗示,不借助前驱意味着不能将前驱结点的next指针改变,所以想到是否可以用后面的结点来覆盖当前要删除的结点。想到这里O(1)的思路就来,将该节点的next结点的val赋给当前结点,并将当前节点node的next指针指向 node->next->next,同时删除node->next,就可以a掉这道题了QAQ...

2022-10-13 22:04:36 199 2

原创 顺序栈基本操作的实现

向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。这里的栈顶元素索引为top - 1, 因此top的初值为0(空栈),满值为size,因此有下面栈的初始化操作↓↓↓。相应的,栈顶元素即为栈数据域的top - 1位置,这里定义下当栈为空/栈非法时,将返回0元。栈是一种后进先出(LIFO)的结构,顺序栈的是连续内存空间下实现的一种数据结构。还有DEBUG是非常实用的遍历操作!

2022-10-12 15:08:49 373 2

原创 带虚拟头结点的双向循环链表

如果算法中需要频繁地找某结点的前趋结点,单链表的解决方式是遍历整个链表,增加算法的时间复杂度,影响整体效率。这里list->head.pre = list->head.next = &(list->head)的原因与单向循环链表的tail及head.next是一样的, 与下面函数的操作有很大关联.由于list->head.val维护了list的长度, 而双向链表可以有两种遍历方向, 于是可以考虑根据操作下标在链表中的位置来优化时间↓↓↓。由此, 对于单向链表的尾指针, 相当于双向链表头结点的前驱元素。

2022-10-12 01:28:47 164 1

原创 带虚拟头结点的单向循环链表

单循环链表——在 单链表 中,将终端结点的 指针 域NULL改为指向表头结点或开始结点即可。用 尾指针tail表示的单循环链表对开始结点a1和终端结点an查找时间都是O (1)。而表的操作常常是在表的首尾位置上进行,因此,实用中多采用尾指针表示单循环链表。可以感性的理解为循环链表需要首尾相接, 最初的空链表头尾指针重合。它的特点是表中最后一个结点的 指针 域指向 头结点 ,整个链表形成一个环。下面是循环链表的表头定义: 对比单向链表多了一个tail指针;单向循环链表与单向链表类似(具体参见。

2022-10-12 01:07:54 157

原创 带虚拟头结点的单向链表的实现

的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始;又称为结点列表,因为链表是由一个个结点组装起来的;由于虚拟头结点head里面存在一个val变量,这里的链表实现将该变量作为链表长度并维护。2. 容器的清空和销毁: 同上,为避免销毁空指针RE,也需要将结点的销毁封装;带虚虚拟头结点的链表定义分为结点定义和链表(头)定义;1. 容器的初始化: 这里除了需要对链表的初始化,还需要对结点初始化;构成,head指针指向第一个成为表头结点,而终止于最后一个指向。指向列表中的下一个结点;

2022-10-12 00:45:45 288 1

空空如也

空空如也

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

TA关注的人

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