自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

m0_73020012的博客

没有好看的,但有好康的。

  • 博客(39)
  • 收藏
  • 关注

原创 【数据结构】双向链表 C++

双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。val:存储每个节点的权值;last:指向每个节点的前面的第一个节点;next:指向每个节点的后面的第一个节点;T value;value=0;

2024-04-04 08:50:11 2403 4

原创 c++数组最大长度(干货)

以上总结的各类型数组最大长度仅为最大能编译的长度,可能会因编译器的不同而不同,同时,一个程序里只能开一个这么大的数组,虽然能成功编译,但不能运行😀🙄手敲数据不易,给个免费的赞吧。

2023-07-05 21:21:22 21119 12

原创 P6025 线段树 题解

显然,贪心的,最深的最右边的节点编号最大。那么我们可以发现,如果两颗子树大小相同,那么最大节点一定是在右子树,或者右子树的深度和左子树一样大,那么最大节点也在右子树,否则在左子树。枚举每一个数,然后建线段树,记录最大下标,然后计算答案。我们用暴力算法多测几组数据,观察可以发现,当当前序列大小。个数之后,由于均有偶数个数,异或值都为。的时候,当前的线段树的最大节点大小为。那么,我们可以通过简单容斥,分别计算出。是否有奇数个数,如果有,那么再异或上。同样,我们不难发现,在。的值,这里可以通过上方规律。

2024-09-06 09:38:31 614 2

原创 AT_arc092_b [ABC091D] Two Sequences 题解

我们发现数据范围其实并不大,考虑直接暴力计算。但是显然这样会 TLE,这个时候加上火车头和快读,就可以大力跑过去了。如果仍然 TLE,把语言换成 C++20 就可以了。代码很短,大部分的是读入优化,而且跑得飞快。提供一种非正解做法,看正解的可以跳过了。

2024-09-06 09:37:55 333

原创 题解:CF1070B Berkomnadzor

不难想到将 IP 地址转化为二进制后插入一个字典树中,转化后二进制的长度就是x的长度。我们需要记录每个串结尾的颜色,不妨设黑名单为1,白名单为0,初始时每个位置的颜色是−1。考虑如何判断输出-1的情况。不难发现,当在插入当前二进制数的过程中,当前节点到根节点的路径上存在一个颜色不为−1且与当前串的颜色不同的点,那么一定存在符合两个名单的 IP 地址。那么我们先把所有的串按照长度排序(没有x的长度为32),然后依次插入,这样能够保证在当前串插入前,所有是它前缀的串已经插入了。

2024-09-05 21:47:16 667

原创 题解:CF1951E No Palindromes

我们考虑将连续的相同字符分为一段,然后将没两段或三段合并,得到答案。分为若干个非回文子串,输出一组可行解或输出。

2024-09-05 21:46:41 842

原创 题解:P10791 『SpOI - R1』强大到让你们所有人注视

的时候会产生贡献,同样可以得出,对于任意。的幂次求前缀和,设得到的数组为。次贡献,每次对答案的贡献是。进制输出即可,注意特判为。,所以最终十进制下的答案为。

2024-09-05 21:46:09 747

原创 屎记·大夏王本纪

常有人欲辱王之威名,然立于王前,哆嗦不能言,屎尿不能自禁,不过顷刻之间,自裁于王前,以示天下之人王之不可辱。大夏王,古遂州人氏。十月,攻伐 CSP 复赛,兵不利,战不善,大败而归,故失良机,未能实现高一进队之伟业。十一月,入 NOIP 线上同步赛,斩若干国集与马下,与国家队爷战平,大夏王由是一战成名,始露日后之不败势也。遂于二日后约战海内英杰于二次省选模拟,不料造化弄人,失天时,丧地利,弃人和,以十余名离场。BK 二年三月,第一次提高模拟举办,王以王者归来之势,势如破竹,斩诸多劲敌于马下,登顶榜首。

2024-09-05 21:43:07 1205

原创 王の语录(持续更新)

王曰:“cnm GPT 给我第一题乱翻译让我白写了一个多小时,重新读题 3min 就 A 了”或问被封之事,王嘻而笑,曰:“codeforces 不知道怎么回事,把我 IQ 封禁了!王曰:“某些人简直就是学新闻学的天生料子,断章取义,歪曲事实,含糊其辞都会完了”王曰:“上次发低烧还能口胡出T1,现在一道都胡不出来,我有很光明的未来”后因再三质疑,王怒曰:“这个东西他是把 IQ 封了,我现在用不了了”王曰:“世界上本没有经典题,说它是经典题的人多了,就有了经典题”王曰:”这个题我一眼就秒了啊……

2024-09-05 21:41:07 430

原创 CF279A Point on Spiral 题解

那么,我们直接根据规律判断当前查询的节点在那一条线段上就可以了。易得,当前的基础转向次数为 max。,那么加上一个在当前周期内部的转向次数就可以了。

2024-06-08 11:51:28 371 1

原创 CF817F MEX Queries 题解

的范围都很大,但是我们只需要知道第一个没有出现的正整数是在哪个位置,然后就能得到答案,所以我们把。离散化,然后用一个数组映射回去,我们求得位置后就可以通过这个映射数组求出具体的值。

2024-06-08 11:49:09 1079

原创 【无标题】CF1338B Edge Weight Assignment 题解

接下来考虑边权最多的情况。不难发现,拥有同一个父亲节点的叶子节点,它们到父亲节点的边权一定是相同的,那么我们可以考虑合并这些叶子节点。合并后观察可以得出,因为边权可以为任意正整数,那么一定存在一种构造方案使得任意两个叶子节点之间路径的异或值为。首先考虑边权最少的情况。可以发现这个时候对于任意两个叶子节点,我们可以分别考虑其到根节点的路径,这样对于求其路径的异或值是没有影响的,但是在这种情况下我们可以很方便的讨论其路径的奇偶性。表示根节点,那么对于任意两个叶子节点。且合并后剩余的每条边的边权均不相同。

2024-04-27 20:51:54 873

原创 P4360 [CEOI2004] 锯木厂选址

显然啊,这道题应该用斜率优化来做,但是,又很显然,我不是那种喜欢推式子(雾,到最后还是推了啊)写 DP 的人,那么,刚好我学了模拟退火,那么就来试一试模拟退火过了这道题。

2024-04-27 20:50:14 913

原创 P7409 SvT 题解

因为可能存在相同的后缀,所以这里需要离散化一下。那么,这个时候问题即转化为求这些排序后的后缀两两之间的 LCP。但是,显然我们不能枚举两个后缀然后计算它们的 LCP。这个时候我们就需要使用单调栈。,这个时候我们就可以用 ST 表来快速计算相邻两个后缀的 LCP。若干个后缀两两之间的 LCP 和,答案对。那么,设每次查询的后缀,排序后起始位置为。这样,我们就可以用单调栈来计算出每个。数组,接下来我们可以对所有后缀在。,那么相邻两个后缀的 LCP 为。对答案的贡献,从而计算出。的后缀排序后的位置,即。

2024-04-08 16:26:48 835

原创 CF1951E No Palindromes 题解

我们考虑将连续的相同字符分为一段,然后将没两段或三段合并,得到答案。分为若干个非回文子串,输出一组可行解或输出。

2024-04-08 15:37:18 1200 2

原创 CF1401F Reverse and Swap 题解

巧妙的数据结构题,非常巧妙的利用的线段树的奇妙性质。层的,然后不要忘了开 long long。需要注意的是,在这种维护层的顺序下,区间。

2024-04-05 17:41:27 871

原创 CF1401E Divide Square 题解

其实多看几组也能发现块数等于交点的数量加上两个端点都在边上的线段数量再加一。那么,我们需要做到快速维护横向线段。此时问题转化为如何计算出交点数量。处有纵线段,那么直接查找即可。那么我们分别对于横线按照。从大到小排序,然后判断若。,设横线段左端点横坐标为。

2024-04-05 17:21:16 947

原创 P3829 [SHOI2012] 信用卡凸包 题解

因为题目中已经给出了每张信用卡中心的坐标,那么我们可以很轻松地得到每张信用卡旋转前矩形四个顶点的坐标(其实就是四分之一圆的圆心),那么现在来解决旋转的问题。那么怎么求出凸包周长呢?显然的,我们在求出所有点的坐标后跑一遍 Andrew 或者 Graham 即可。考虑将这个矩形的四个顶点加入一个点集中,然后求凸包,答案即为这个凸包的周长加上一个半径为。我们不妨将中心移到单位圆的圆心上,那么我们根据顶点到中心的。观察三组样例不难发现,我们可以把所有的信用卡的圆角去掉,变成一个长。的值计算新得到的顶点坐标即可。

2024-04-05 17:19:13 805

原创 P4724 【模板】三维凸包 题解

我们将新的点看作是一个光源,那么光线打到凸包上,会有一些地方照到(两面),有一些地方没有被照到(暗面),同时会有一些边恰好被照到(明暗交界线)。我们将那些恰好被照到的边向光源连边,可以得到若干个新的面,那么,被照到的面肯定会被新的面所包含,我们将这些被照到的面从凸包中删除,然后向凸包中加入新建的面即可。我们先选择一个面,将这个面作为当前凸包上的一个面,然后考虑不断地添加新的点,并更新凸包,最后用法向量计算每个面地面积,加起来即为答案。代码不长,建议自己写一下,不要直接复制题解。

2024-04-05 17:18:42 371

原创 P2572 [SCOI2010] 序列操作 题解

个东西就可以了,不过细节还是有亿点多,注意在反转操作的时候一定不能清空之前修改操作的值,同时每次查询零散块的时候,都要先根据块的值和反转标记求出当前的。,然后再计算,最后再重新更新零散块所在块的信息。代码还是很好写的,直接按照上面的步骤维护。代码不长,但是写的时候一定要思路清晰……其实还是很好想的,但是似乎有一点难写。

2024-04-05 17:17:03 1047

原创 P6025 线段树 题解

显然,贪心的,最深的最右边的节点编号最大。那么我们可以发现,如果两颗子树大小相同,那么最大节点一定是在右子树,或者右子树的深度和左子树一样大,那么最大节点也在右子树,否则在左子树。枚举每一个数,然后建线段树,记录最大下标,然后计算答案。我们用暴力算法多测几组数据,观察可以发现,当当前序列大小。个数之后,由于均有偶数个数,异或值都为。的时候,当前的线段树的最大节点大小为。那么,我们可以通过简单容斥,分别计算出。是否有奇数个数,如果有,那么再异或上。同样,我们不难发现,在。的值,这里可以通过上方规律。

2024-04-05 15:13:14 633

原创 AT_arc092_b [ABC091D] Two Sequences 题解

我们发现数据范围其实并不大,考虑直接暴力计算。但是显然这样会 TLE,这个时候加上火车头和快读,就可以大力跑过去了。如果仍然 TLE,把语言换成 C++20 就可以了。代码很短,大部分的是读入优化,而且跑得飞快。提供一种非正解做法,看正解的可以跳过了。

2024-04-05 15:12:24 289 1

原创 CF1070B Berkomnadzor 题解

那么我们遍历这棵字典树,贪心地想,深度越小的点一定是更优的,因为如果不将这个点放入黑名单的话,就需要将它的所有儿子放入,那么子网个数一定是大于等于将它作为一个子网的子网个数的。且与当前串的颜色不同的点,那么一定存在符合两个名单的 IP 地址。不难发现,当在插入当前二进制数的过程中,当前节点到根节点的路径上存在一个颜色不为。),然后依次插入,这样能够保证在当前串插入前,所有是它前缀的串已经插入了。节点为根的子树中,是否存在一个颜色为白色的节点,如果存在,的节点,然后暴力向上跳,将这个子网记录到答案中。

2024-04-04 09:37:12 874 1

原创 c++ 遗传算法学习笔记

在网上找了很久的关于遗传算法的讲解,但是大多都讲的不是很清楚,好不容易找到一篇讲得比较好的,然后算法的正确性又不高……蒟蒻今天根据自己的理解,整理了以下关于遗传算法的一些讲解。遗传算法是一种启发式优化算法,利用生物进化中的“选择、交叉和变异”操作,通过不断的迭代来寻找最优解。该算法由Holland在60年代发明,通过模拟自然选择的过程,将解搜索空间中的“个体”进行随机化、交叉和变异,以产生新的解,并筛选出适应度高的解作为“种群”,直至找到最优解为止。

2023-12-25 21:30:32 378

原创 c++火车头N合一

c++巨长火车头~其实也没有那么长~

2023-10-19 22:03:17 3545 15

原创 C++快读和快写

虽然读入优化好像用处不大,但是还是能够在读入数据规模较大的时候提供较大的优化,比如:用cin输出2000个100000000用快输输出2000个100000000单位都是毫秒。可以直观的发现,用快输的话输出时间优化了很多,那么快读是如何做到这样的呢?

2023-10-01 22:14:35 8074 8

原创 freopen多文件输入输出

鉴于蒟蒻造数据时的痛苦经历,在这里整理了用freopen实现多文件输入输出的方法。

2023-09-30 14:38:17 2828 10

原创 c++简介

作为一门始于 1980 年代的编程语言,C++ 旨在提供高效率的计算性能和可维护性,并在计算机科学领域中长期占据主导地位。本博文将介绍 C++ 编程语言的主要特点和主要用途,并提供 C++ 中常用的基本语法和编程范例,以帮助读者掌握这一编程语言。总之,谨慎而理智地在非计算软件领域使用 C++ 编程应该会非理智应用更加平稳,以最高效和安心的方式满足您的编程需求,并编写出更符合您商业、技术或其他目标的可维护的高性能代码.

2023-09-16 09:56:22 123 1

原创 Git 的基本概念和使用方式

5. 远程仓库(Remote Repository):是存储在网络上的仓库,可以与本地仓库进行同步操作。4. 合并(Merge):是将一个分支的代码合并到另一个分支的过程。当你在分支上进行代码修改时,不会影响主分支的代码。7. 合并分支:使用Git merge命令将一个分支的代码合并到另一个分支中。9. 推送到远程仓库:使用Git push命令将本地仓库的代码推送到远程仓库。3. 添加文件:使用Git add命令将新文件添加到Git仓库中。2. 创建仓库:使用Git init命令创建一个新的本地仓库。

2023-09-16 09:50:14 124 1

原创 霍夫曼编码

左孩子为‘0’,右孩子为‘1’,得到霍夫曼编码表。它采用不等长编码的方式,将常用字符用较短的二进制编码表示,其它不经常使用的字符采用较长的二进制编码进行表示,从而大大降低了数据的冗余度。3. 由最底部的两个叶节点开始(也可以选择由根节点开始),给陆续走过的树枝加上‘0’或‘1’作为临时编码,记录哈夫曼码,直到All the leavs are marked。将这两个字符组合依据其频率大小的权值value进行组合,并赋上一定的左右树相对位置规则(例如说0表示在上层的哪边等),逐层合成优先队列(Queue)。

2023-09-16 09:48:27 1249 1

原创 原码、补码、反码简介

对于现代计算机系统而言,在进行加减和乘除运算的时候,采用的是二进制补码表示方法,这种方法使用每位数位加上该位数位取反加1后的值来表示数值。它的表示方法是将最高位作为符号位,按照原码计算出最后结果,如果结果是负数,则将其二进制表示按位取反再加上1。反码的表示方法是在原码表示的基础上进行取反,即将符号位保持不变,将其它各位(包括符号位)取反。总之,原码、反码和补码各有不同的应用场景,通过掌握它们的规则,我们可以更好地理解数值在计算机系统中的表示法,从而更好地开发和运用计算机系统。

2023-09-16 09:46:13 204 2

原创 高精重载版(持续更新中)

这个更好用了~

2023-09-06 22:04:06 144 2

原创 高精度加法、减法、乘法的函数封装

在c++的运算中,我们有的时候会用到非常大的数据,以至于__int128也无法存下,这个时候,我们就需要使用高精度数进行运算。但是,高精度数的写法非常的不方便,所以,本文主要讲解如何把高精度数封装为结构体类型,如何把高精度数的计算封装为通用函数。

2023-08-16 19:24:34 461 1

原创 计算几何(伪,非正解)

最近在学计算几何,但是发现只有向量版的讲解,蒟蒻表示这个对初中生真的很不友好,需要用到高中几何知识费脑子,那么,有没有一种不需要用到向量就能完成平面几何基本运算的计算方法呢?目前的完整代码(后续会继续更新)struct Point {//点//存储点的横纵坐标}//判断是否相等(允许误差)0 : -x;}//取反return x;}//取双精度浮点数的绝对值}//判断两个双精度浮点数是否相同(允许误差)}//判断两点是否重合struct Line {//线段//存储线段的两个端点。

2023-07-25 20:18:24 98

原创 SPFA求次短路

【代码】SPFA求次短路。

2023-07-08 11:39:02 150 1

原创 [CSP-J 2022] T4 上升点列题解

欢迎大家来我的洛谷博客里阅读作为最后一道题,难度还没有第三题高。当年考场上蒟蒻的我一看到是第四题就跳了。

2023-07-07 21:54:35 455 1

原创 权值线段树

记录权值的线段树。因此需要用到离散化操作来处理a[1-n]。记录权值指的是,每个点上存的是区间内的数字出现的总次数。

2023-07-04 14:41:35 131 1

原创 SPFA的SLF优化

特别鸣谢Dawn-_-cx大佬的讲解。

2023-07-02 15:40:43 220 1

原创 二叉搜索树(简介)

二叉查找树或是空树,或是满足如下三个性质的二叉树:1.若其左子树非空,则左子树上所有节点的值都小于根节点的值 若其右子树非空,则右子树上所有节点的值都大于根节点的值2.其左右子树都是一棵二叉查找树3.二叉查找树的特性:左子树

2023-06-29 10:34:39 276 2

c++自制的双人五子棋小游戏

双人下棋 玩家1使用WASD移动,J放置,棋子为白色 玩家2使用上下左右键移动,K放置,棋子为黄色 与五子棋规则相同,当出现有五个相连的棋子时,一方获胜 一局结束后,记录个人胜负次数 在棋局内,按Q键退出 这是一个简易版本,以后会有一个升级版 可能需要使用VS重新编译一次,如果是使用dev,需要新建一个项目,然后把头文件、源文件全部拷入 其他内容见压缩包里的文件

2023-10-06

c++文件解密cpp可编译文件

支持英文字母、英文标点的解密,不允许解密内容带有空格,暂不支持中文标点、汉字、特殊符号等的解密,改解密文件只支持使用《c++文件加密cpp文件》的加密内容的解密,可以进行多次解密,知道得到加密前的内容

2023-10-05

c++文件加密cpp文件

支持拉丁字母、';',',','.',':'等字符的加密,支持数字加密,可以重复加密。 仅支持英文输入,允许读入空格,不支持中文字符。

2023-10-05

c++的自制的可调延迟的关机程序

c++的自制的可调延迟的关机程序

2023-10-04

空空如也

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

TA关注的人

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