自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【数据结构】树状数组

假设一个数可以x可以被二进制分解成x2i1​2i2​...2im​,不妨设i1​i2​...im​,进一步地,区间1x可以分成Ologx2i1​12i1​2i2​2i1​12i1​2i2​...2im​2i1​2i2​...2im−1​12i1​2i2​...2im​这些小区间的共同特点是:若区间结尾为R,则区间长度为low。

2025-05-18 16:30:04 1111

原创 【icpc陕西省赛】树的最大深度+基环树找环的大小

但除非能坐到心仪座位上,否则他们只愿意坐在原来的座位上。总统希望 Shirost 能够修改计划,使得尽可能多的嘉宾坐在他们的心仪座位上。的点,并且该连通块中没有环,一定是树;剩下的只能是基环树。也就是说连通块如果是树,必须有且仅有一个大于。连边建图,不难发现形成了很多的连通块。基环树中用拓扑排序找环的大小(没有入队的点)。Shirost 作为树王国的庆典设计师,准备邀请。),由空格隔开,表示每个人的心仪座位。的点,那么该连通块中只能有一个大于。个嘉宾的心仪座位为第。的点,否则是基环树。

2025-05-07 17:08:41 1005

原创 【codeforces 2070c】二分答案详解

如果单元格在所有操作后的颜色是错误的,惩罚值就会生效。定义最终的惩罚值是是所有单元格生效的惩罚值中最大的。个单元格组成的长条,初始时所有单元格都是红色。对于每个单元格,给出所有操作后指定的颜色:红色或蓝色。对于任何问题,如果我们有了一个判定算法,那把解空间枚举并判定一遍,当然就可以得到解了。,我们就必须将该单元格涂成正确的颜色,否则,惩罚值将会被该惩罚值更新。性质:是否存在一种合法的涂色方案,使得惩罚值小于等于。,我们无需关心该单元格的颜色是否正确。,就存在一种合法的涂色方案使得惩罚值小于等于。

2025-05-05 16:41:21 742

原创 【codeforces 2104D,E】欧拉筛,字符串上dp

可以通过上述操作变成理想数组,也有可能变不成。现在我们可以删除一些元素,使得无法变成的数组可以变成。为什么数组从大到小排序,每次删除最小的元素?所以我们可以构造出任意所有元素和比之前小的数组。注意到,若想使得所有元素两两互质,那么所有数必须是质数。的字符出现的第一次出现的位置。:首先分析两种操作,发现通过这两种操作,我们可以将数组。已经是理想数组或可以通过上述两种操作变成理想数组)变成相同长度的,所有元素和比当前数组小的任意数组。将数组元素从大到小排序,计算前缀和,记为。可能是理想的,也可能不是。

2025-04-29 22:03:32 645

原创 【codeforces 2086d】背包+组合数学

例如此题,在构造字符串这个问题规模不断缩小和扩大时,奇数位的数量在变化。同时,我们考虑的字母也是不同的。此外,我们还可以基于熟悉的背包模型,思考此题的状态。在观察一道题是否是动态规划时,或转移方程是什么时,我通常思考有哪些决策。例如此题,我们经过推理,得到决策后,动态规划的转移方程也呼之欲出。我们发现对于一个字母来说,我们必须将其全部放在奇数位或者全部放在偶数位,才能保证任意相同字母之间的距离必须是偶数。现构造一个字符串,要求任意相同字母之间的距离必须是偶数。来说,我们有两种决策方式:将其全部放入奇数位;

2025-04-29 17:21:26 692

原创 【codeforces思维题1982c】单调性枚举——双指针(尺取法,滑动窗口)的巧妙应用

同时,双指针还有很多与这篇内容毫无关联的归类。比如反转字符串中的双指针等等。我认为单调性枚举非常关键,使用双指针维护区间信息给人的启发很大。个数划分成若干个互不相交的字段。什么时候可以使用双指针来维护区间(单调性枚举)?这很容易维护,只需用一个变量即可。对于这题,我们要维护一个区间的和。个数,和上下界,下界是。的字段数最多有多少?时,需要向右移右指针。时,需要向右移左指针。

2025-04-23 20:19:38 964 1

原创 【codeforces思维题】前缀和的巧妙应用(2053B)

以上内容可以在前缀和中快速检查。我们要在一个区间中检查该区间中所有数字是否都可以满足某个性质时,不妨将该数轴上的数字标记。,意味着区间中任意一个数字都不满足该性质;反之,则说明该区间有数字可以满足该性质。个印象,每个印象对应一个区间,印象可以是该区间中任意一个数字。考虑所有印象,若该印象可以是唯一的,输出。考虑区间上问题时,不妨从前缀和角度思考问题。所以当且仅当存在一个。(这个很好统计,不妨用桶或。这个数字的出现次数)。不能被唯一化当且仅当对于所有。,我们要检查每个印象在。,证明了该区间的和是。

2025-04-22 19:47:44 611

原创 CF思维题(cf round 1019 div.2 b题)

首先对于反转一个字符串中的子串,只有在反转处会改变连接状态,对于反转位置之前,中间,之后的地方,字符串的连接状态没有改变。例如,对于下面这个字符串,我们想要反转区间。定义操作次数为:使用上述两种操作,选择其一,输出完整个字符串所需要的操作次数。对于一个字符串来说,我们不妨假设每一个字符串的前面都加上了一个虚开头。,原因是反转只改变了反转连接处的连接关系。,我们总是能通过反转使得操作次数减少。,我们就可以在新字符串上操作。开头的字符串,这样操作说明了。字符串,其中字符串的长度是。,我们可以使得操作次数减少。

2025-04-22 13:39:23 558

原创 探究CF1009(div3)C题——XOR and Triangle

标记出了需要进位的位。读者不妨列出竖式,这样更易理解。同时,也可基于上面式子实现不使用加法运算符号的加法。,这表明当前位上的数字是正确的。是否成立,若不成立,则无法找到。对于上述第二个式子,显然成立。是尽可能小的,此时只需检验。后左移一位表示了进位,即。的最低位开始找,找到是。

2025-04-21 21:54:57 621

原创 【树形dp题解】dfs的巧妙应用

Bessie 正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会。当然,她会选择最方便的地点来举办这次集会。在选择集会的地点的时候,Bessie 希望最大化方便的程度(也就是最小化不方便程度)。个农场作为集会地点,它的不方便程度是其它牛棚中每只奶牛去参加集会所走的路程之和(比如,农场。来说,我们可以从上到下计算,也可以从下到上计算。条道路连接,并且从任意一个农场都能够到达另外一个农场。为根的子树中奶牛数量的和。个农场中的一个,这些农场由。为根,非叶子节点的节点来说,为根时树的叶子节点来说,

2025-04-16 22:36:19 578

原创 【简单数论】(模运算,快速幂,乘法逆元,同余,exgcd,gcd,欧拉函数,质数,欧拉筛,埃式筛,调和级数枚举,约数,组合数)

模运算,快速幂,乘法逆元,同余,exgcd,gcd,欧拉函数,质数,欧拉筛,埃式筛,调和级数枚举,约数,组合数

2025-04-05 21:27:17 527

原创 【JavaWeb】前端基础

HTML:Hyper Text Markup Language超文本标记语言。html是解释型语言,不是编译型语言。浏览器是容错的。标签是通过一组尖括号+标签名的方式来定义的。标签有单标签和多标签。标签体:开始标签…结束标签html文件是浏览器负责解析和展示的。浏览器通过网络访问服务器上的html文件(向服务器发送请求),服务器将html文件以响应的形式发送给浏览器。浏览器解析文件。

2025-04-01 22:13:26 605

原创 【Mysql】基础(函数,约束,多表查询,事务)

指从多张表中查询数据,多表查询时要消除无效的笛卡尔积。多表查询的分类:连接查询内连接:相当于查询A,B交集部分数据。外连接:左外连接:查询左表所有数据,以及两张表交集部分数据。右外连接:查询右表所有数据,以及两张表交集部分数据。自连接:当前表与自身的连接查询,自连接必须使用表别名。子查询。

2025-04-01 12:58:46 942

原创 【Mysql】基础(基础概念,sql语言)

数据库操作:create database 数据库名;use 数据库名;drop database 数据库名;表操作:create table 表名 (字段 字段类型, 字段 字段类型);desc 表名;show create table 表名;alter table 表名 add/modify/change/drop/rename to;drop table 表名;

2025-03-30 15:49:51 604

原创 【Java】注解

2025-03-28 21:11:56 205

原创 【Java】反射

反射就是:加载类,并允许以编程的方式解剖类中的各种成分(成员变量,方法,构造器等)。

2025-03-28 21:11:23 131

原创 【Java】File与IO流

若想一次序列化多个对象,则可以用ArrayList集合存储多个对象,然后直接对集合进行序列化。● PrintStream继承自字节输出流OutputStream,因此支持写字节数据的方法。● PrintWriter继承自字符输出流Writer,因此支持写字符数据出去。●打印数据的功能上是一模一样的:都是使用方便,性能高效(核心优势)对象如果要序列化,必须实现Serializable接口。以内存为基准,把内存中的数据以字节形式写到文件中。用于读取数据输出流写出去的数据。允许把数据和其类型一并写出去。

2025-03-27 19:59:14 790

原创 Lambda表达式与方法引用

Lambda表达式的作用是用于简化匿名内部类的代码写法。Lambda表达式可以简化函数式接口的匿名内部类。格式。

2025-03-25 19:50:00 267

原创 Java集合

HashMap:无序,不重复,无索引。LinkedHashMap:有序,不重复,无索引。TreeMap:按照大小默认升序排序,不重复,无索引。

2025-03-25 16:51:28 574

原创 Java常用类

String,StringBuffer,StringBuilder三者异同。格式化:将Date按指定格式格式化成String。19700年1月1日到现在的毫秒数。解析:将String解析成Date。

2025-03-22 21:12:12 502

原创 Java多线程

多线程的创建,方式一:继承于Thread类创建一个继承于Thread类的子类重写Thread类的run() – >将此线程执行的操作声明在run()中创建Thread类的子类的对象通过此对象调用start()一个对象只能调用一次start()。想调用多次只能创建多个对象。不能直接调用run()。这样程序是单线程。

2025-03-19 21:22:50 565

原创 Java异常处理

try {} else {以上代码说明了:如何自定义一个运行时异常类并且抛出一个异常对象。try {} else {} else {以上代码说明了:如何自定义一个编译时异常类并且抛出一个异常对象。

2025-03-17 16:45:24 247

原创 Java面向对象(下)

abstract可以修饰类和方法。abstract修饰类:抽象类此类不能实例化。抽象类中一定有构造器,便于子类实例化时调用(涉及:子类对象实例化的全过程)。开发中,都会提供抽象类的子类,让子类对象实例化,完成相关的操作。abstract修饰方法:抽象方法抽象方法只有方法的声明,没有方法体。包含抽象方法的类,一定是一个抽象类。反之,抽象类中可以没有抽象方法。若子类重写了父类中的所有的抽象方法后,此子类方可实例化若子类。

2025-03-16 15:36:37 800

原创 Java面向对象(中)

继承性的好处:减少了代码的冗余,提高了代码的复用性。便于功能的拓展。为多态性的使用提供了前期。A:子类,派生类,subclass。B:父类,超类,基类,superclass。体现:一旦子类A继承父类B后,子类A中就获取了父类B中声明的所有结构:属性、方法。特别地,父类中声明为private的属性或方法,子类继承父类之后,仍然认为获取了父类的私有的结构。但是因为封装性的影响,使得子类不能直接调用父类的结构。子类继承父类以后,还可以定义自己特有的属性和方法。

2025-03-15 14:12:54 720

原创 Java面向对象(上)

在类的方法中,我们可以使用”this.属性“,”this.方法“的方式,调用当前对象的属性或方法。特别地,如果方法的形参和类的属性名同名时,我们必须显式的使用”this.变量“的方式来表示属性而非形参。我们在类的构造器中,可以显式的使用“this(形参列表)“方式,调用本类中指定的其他构造器。定义:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或参数类型不同即可。可变个数形参的方法与本类中方法名相同,形参不同的方法之间构成重载。四种权限可以修饰类及类的内部结构:属性,方法,构造器,内部类。

2025-03-12 21:36:20 836

原创 dp1 题解

考虑将森林中每一颗树看成一个物品组,这是一个分组背包问题。​ 若每个地窖与别的地窖若相通,则可以建边。同时根据题意,可以发现当前地窖不可能与之前的地窖连边,故为DAG。​ 给定一个食物链,该食物链是一个DAG。考虑统计每个点的入度和出度,在拓扑排序的同时dp。​ 对于根节点,有选和不选两种情况。对于儿子,在根节点选的情况下,才可以进行选择,同时枚举是否选择可以二进制枚举。同时,这也是状态机或者拆点的思想。​ 数字三角形的升级版。​ 根据题目叙述,发现为DAG图。​ 多重背包的方案数问题。

2025-03-03 20:06:11 818

原创 算法——数学知识(质数,约数,欧拉函数,快速幂)

对于每一对约数,我们只需检验其中的一个。我们每次检查每对中较小的一个。在埃氏筛法中,合数可能被多次筛去。我们想要一个合数被筛掉一次,那么每次筛就要用最小质因数筛。由算数基本定理可知,大于1的正整数都可以被写成若干个质数相乘。有多少个素数,显然我们不能满意对所有小于等于。对于每一个合数,我们都用质数把它筛掉。时,由于我们是从小到大枚举的质数,所以。时,由于我们是从小到大枚举的质数,所以。另外,对于 C++17,我们可以使用。的质因数最多只有一个。我们每次使用最小质因数筛掉合数。由于因数是成对分布的,所以。

2024-12-06 01:31:33 813

原创 算法竞赛进阶指南——递归与递推

当向上回溯时,观察上图,我们发现在合并成区间[3, 8]的过程中,左边是有序的,右边是有序的。所以一个数在左半边,另一个数在右半边的逆序对的数量(如果可以形成),就是左半边区间从8开始到尽头的数量。对于一个数列,我们将它一分为二。这就像把一个问题拆成了两个同类的子问题,即左半边的序列的排序问题和右半边序列的排序问题。一个数列逆序对的数量等于左半边逆序对的数量加右半边逆序对的数量加一个数在左半边另一数在右半边逆序对的数量。其次,显然,左右两边是否排序不影响一个数在左半边,另一个数在右半边的逆序对的数量。

2024-12-01 16:22:17 648

原创 算法竞赛进阶指南——位运算

该编码按位取反后得到的编码~C表示的数值是。

2024-11-30 20:48:18 1142

原创 c ++零基础可视化——字符串

c ++零基础可视化——字符串string定义:string str1 = "012345"; // 012345string str2 = str1; // 012345string str3(6, '#'); // ######string str4("012345");

2024-11-28 19:44:15 544

原创 算法——滑动窗口

【代码】算法——滑动窗口。

2024-11-25 00:53:24 234

原创 c ++零基础可视化——高级输入输出

c ++零基础可视化——高级输入输出

2024-11-25 00:52:39 150

原创 c ++零基础可视化——vector

的人,先选出来的排在前面,后选出的排在后面。对题面的理解:每次选出的人都应该在第一个人的索引上加上k的倍数。启发:模拟题,题目不难,显然上面的代码精简。但我的方法很冗长复杂,究其原因还是没有熟练掌握vector的精髓之处。我与其对比,纵观我的代码,我总是想要存储数据,但这完全不必要。每次排出新的队伍,就保存在newNums中,再将新队伍newNums赋值给nums,最后将newNums清空。重新定义vector的大小。若比原先大,则用0填充新增的元素;本题面加深了我的理解力。这导致我的方法不够好。

2024-11-20 19:20:37 834

原创 c ++零基础可视化——数组

关于对加法的理解,一个人的编号加上2就是前进两个人。将 type T 的元素作为第一个参数,将 range 中的元素作为第二个参数的二进制运算,并返回一个可分配给 type T 的值。它包含 first 和 last 之间的所有元素,包括 first 指向的元素,但不包括 last 指向的元素。它包含 first 和 last 之间的所有元素,包括 first 指向的元素,但不包括 last 指向的元素。对数组的理解:和上面的方法相同,采用递推的方法求解阶乘并将其存储在数组中。序列中的初始和最终位置。

2024-11-17 21:14:39 989 2

原创 最短路板子及其应用

​ 我们注意到,每次找到不在集合中的点的时间复杂度最高。故我们才用小根堆,其可以有效解决这个问题。

2024-06-01 18:39:08 447

原创 拓扑排序板子及其应用

int n, m;#define N100010n和m分别表示图中的节点数和边数。N是预定义的常量,表示节点的最大数量。e 和 ne 是数组,用于存储图的边信息。e[i] 表示边的目标节点,ne[i] 存储与当前节点相连的下一条边的索引。h数组用于存储每个节点的边的开始部分,即每个节点的邻接表的头部。idx 是用于填充 e和 ne 数组的当前索引。d数组用于存储每个节点的入度。queue 用于实现拓扑排序的队列,head 和 tail 分别是队列的头部和尾部索引。

2024-05-12 19:09:01 404

原创 FloodFill算法及其应用

给定一个地形图,浅色表示洼地,深色表示高地。向这个图中的一个格子注水,随后询问这个格子的四个方向上的格子,显然,只有浅色的格子才可以被洪水覆盖,高低不会被覆盖。这个算法可以在线性复杂度内找到某个点所在的连通块。

2024-05-11 22:12:58 1668 1

原创 并查集的作用、原理、实现及应用

每个集合用一棵树来表示,树根的编号就是整个集合的编号。每个节点存储它的父节点,p[x]表示x的父节点。如何求x的集合编号:while (p[x]!= x) x = p[x] 优化:路径压缩。如何合并两个集合:px是x的集合编号,py是y的集合编号。p[px] = py。如何判断树根:if (p[x] == x) 除了根节点之外p[x]都不等于x。

2024-05-05 19:05:31 265

原创 二分(整数二分,浮点数二分)

当我们将区间[l, r]划分成[l, mid - 1]和[mid, r]时,其更新操作是r = mid - 1或者l = mid;,此时为了防止死循环,计算mid时需要加1。当我们将区间[l, r]划分成[l, mid]和[mid + 1, r]时,其更新操作是r = mid或者l = mid + 1;,计算mid时不需要加1。

2024-05-05 17:13:24 345

原创 容斥原理及其应用

如果被计数的事物有A、B两类,则A类和B类元素的总和=A类元素个数+B类元素个数—既是A类又是B类的元素个数。即$$$$如果被计数的事物有A、B、C三类,那么,A类和B类和C类元素个数总和= A类元素个数+ B类元素个数+C类元素个数—既是A类又是B类的元素个数—既是A类又是C类的元素个数—既是B类又是C类的元素个数+既是A类又是B类而且是C类的元素个数。​ 即∣A∪B∪C∣∣A∣∣B∣∣C∣−∣A∩B∣−∣A∩C∣−∣。

2024-04-28 19:05:40 779

空空如也

空空如也

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

TA关注的人

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