自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Codeforces Round 895 (Div. 3)(A~G)

n除以x可以找到x在1到n中可以占几个位置,同理也能找到y在1到n中占几个为止,n除以x和t的最小公倍数可以这个共同位置,这样就可以用贪心解决,x单独占的位置我们设为尽可能大,y占的位置我们设为尽可能小,共同位置不讨论,最后得到正确答案。我们用贪心的办法解决,一个大于3的偶数肯定能分成两个部分,并且他们的最小公约数不为1,当出现L等于R的情况,并且L是质数,则不能满足题目要求,反之我们暴力枚举找到。从每个联通块价值最小的点出发,遍历并且输出完整个联通块的点,最后输出自己,最终得到最优序列。

2024-07-18 10:08:10 439

原创 Codeforces Round 898 (Div. 4)(A~H)

题目给出限制,每两个顶点最多有一条边相连,有n条边n个顶点,那么就必成一个环,我们要找到的是b到环中最近的一个顶点叫做入环点。找入环点,如果b已经在一个环中,那么它本身就是入环点,反之从b开始搜索,遍历过的点标记,当遍历到一个已经遍历过的点,并且这个点不是它的父节点,那么这个点就是入环点。找到所有的连续A段,再找到字符串元素B的个数。将每个A段按照长度从大到小排序,每个A短对应一个元素B,答案加上A段的长度,最后得到答案。从头枚举,找到B的位置,答案加一,从这开始的前k-1个位置的B不用给答案+1。

2024-07-17 10:56:44 745

原创 每日刷题(cf)

题目要求我们构造一个最长的序列,使得任意相邻两个元素按位或等于n,我们对n的二进制分析发现,最长序列就是n的二进制位中1位的个数,元素是依次将其中的某个1替换成0后大小。我们可以对部分或完整的苹果分成两个原来的两半,我们可以一直分,直到当前的苹果数量可以整除人数。由于二者都是按照最优方案,所以操作的元素肯定是各自数组里面的最大值和最小值。当k为偶数时,先手和后手操作相同,但后手更有利。当k为奇数时,先手多操作一步。按照最优贪心即可得到答案。

2024-07-16 22:33:00 237

原创 Codeforces Round 957 (Div. 3)(A~E)

先找到数组的最大数,不需要对它处理,只需将分出的1和它合并即可,想将a[i]分成a[i]个1需要a[i]-1步,将a[i]个1合并需要a[i]步。我们需要最大化全部f(x)的和,最小化全部g(x)的和。那么我们就需要让大于k的数提早出现并且最大,让小于m的数最晚出现。我们观察ab和n的范围,发现a*n-b最大不超过1000000,所以我们可以暴力求解答案,将求解过程分为n为1位数和二位数,三位数是0。当三个数更接近与同一个数时,三个的乘积就是最大的。

2024-07-12 11:53:23 420

原创 每日刷题(二分图,二分查找,dfs搜索)

我们知道,就是寻找按照要求的联通块,我们可以用dfs遍历,这样询问时,只需要找到这个位置在哪个联通块里面,每个联通块的权重就是联通块内元素的数量。其实就是二部图的最大匹配,在我们给出的矩阵中,我们给(i,j)建边,当找到的最大匹配大于等于n时,那就说明可以组成一条主对角线的元素都为1。先求出每个路标之间的距离,再二分查找每个mid,如果有间距大于mid的,那我们就设立路标,到最后,看新设置的路标数量是否在要求的范围之内。先将每个起点和终点排序,安装具体情况更新L和R,最后答案减去(R-L+1)。

2024-07-11 22:07:58 416

原创 每日刷题(二分查找,匈牙利算法,逆序对)

这道题就是要求我们在给的的位置放入 palantir,每个 palantir有R大小的射程范围,要求求出最少需要安装多少个 palantir,才能将让所有的军队在射程范围内。对衣服的湿润度排序,找到大于mid的衣服,将它减去,再除以烘干片每分钟可以减少的湿润度,向上取整。先枚举第一个位置,二分找到小于等于这个位置+R的位置,在此位置安装一个 palantir。求逆序对,分别讨论两个逆序对的奇偶性,奇偶性相同则输出YES,反之输出NO。二分答案去求解,L为1,R为最湿的衣服的湿润度。操作1:当前位置+1。

2024-07-09 20:34:24 674

原创 区间最值问题-RQM(ST表,线段树)

我们可以给f[i][0]....f[n][0]先初始化为上面数组的值,我们将f[i][j]分为两端,一段是i到i+2^(j-1)-1为一段,i+2^(j-1)到i+2^j-1,f[i][j]就是分出来的这两个段的最大/小值。线段树其实也就是相当于区间分段,(a,b)的左孩子区间就是(a,(a+b)/2)和右孩子((a+b)/2+1,b),(a.b)区间的最值就是他分出的两个区间的最值的最值。例如:我们给出一个数组a[10]={0,1,2,4,6,7,9,2,12,3};其实就是区间最小值。

2024-07-07 22:25:27 388

原创 Codeforces Round 918 (Div. 4)(A~F)

当我们对元素按照终点的编号大小按照从小到大排序后,单独将他们的起点编号设置为一个数组,我们发现这个数组的逆序对就是我们要的答案,但是n^2的求解肯定会超时,我们可以用分治或者树状数组去快速求解逆序对,由于本人对树状数组熟悉一些,下面演示的是树状数组求解的代码。其实就是找到一个连续子数组的奇位与偶位的元素和相同,那我们不妨将所有偶位元素ai设置为-ai,在遍历数组用前缀和记录,当当前前缀和的数字为0或者出现第二次,那么则出现了目标的连续子数组。的位置,再分析它这行和列出现的元素。

2024-07-04 09:59:40 429

原创 Codeforces Round 954 (Div. 3)(A~D)

我们发现符合题意的每个数是互不影响的,即改变了其中一个不会影响到另一个,直接找到所以符合题意的数,再将这个数变成周围数的最大值。仔细看就会发现这个操作数组顺序其实没多大关系,只要找到需要操作的所以,再一次填入已经排好序的元素即可。直接找到第二大的数,答案就是这个数与其他两个数的差值的和。当含有元素0时,那么答案就是0,因为可以将他们全部相乘。当所以元素都为1时,答案就是1,可以全部相乘。其他情况,答案就是不为1的所有元素的和。

2024-07-02 21:36:20 284

原创 Codeforces Round 922 (Div. 2)(A~C题解)

如果a>b,先跳过a从左到右第一个1位,并且这个位置b是0位,为了保证a还是大于b,但是会通过后面的不同的位与去缩小他们两的差距,当遇到第二个或者大于二个的这样的位置,那么我们就判断这个位置r的范围可不可以达到,如果可以a和b都异或一下,拿一个累加数组添加当前二进制位置为1的十进制数。我们先将输入的a和b转化成二进制模拟一下,是不是发现a如果大于b,那么二进制一定有一个高于b的1位,反之亦然,a和b的二进制位如果相同,异或同一个数是不会发生变化的,所以我们要去找不同的位。一道贪心的签到题,直接放代码。

2024-06-20 20:31:59 326

原创 Codeforces Round 923 (Div. 3)(A~E题解)

思路:先对两个数组排序,我们只需要1到k之间的数,大于的就不需要了,用两个标记组数去计数两个数组中1到k之间元素的出现的情况,出现了标1,反之为0,当对于一个1到k之间的元素,这两个标记数组都是0,此时可以直接输出NO退出。题意:问在一个只含有'W'和'B'元素的字符串中,选择一个L到R范围,将之间包含的B全部变成W,W则不变,找到(R-L+1)的最小值。我们发现我们的标记数组b非常的巧妙,从b[L]到b[R]之间出现的第一个大于前一个元素的值就是我们要找的不同的下标。(2)现在我们解决第二个问题。

2024-06-18 21:45:50 822

原创 Codeforces Round 952 (Div. 4)(C~F)

思路:用一个前缀和,一直判断当前的最大值是否为当前所有元素之和的一半。

2024-06-16 19:16:35 342

原创 Codeforces Round 933 (Div. 3)(A~D题解)

思路:我们发现最左边的元素的大小改变与它右边的元素有关,那我们直接遍历一遍,如果此时的元素不为0,那个它右边的元素就减去2*这个元素,它右边的右边的元素减去相同值,如果出现负数,则证明这个数组不能通过这个操作全部变成0。思路:其实就是找"map"和"pie"的个数,但是会有"mapie"的出现,这时只需删除一个即可。题意:题目给出一个数组,要求我们将这个数组的元素全部变成0,只能进行一种操作多次或者不操作。选择一个索引r,1

2024-06-09 21:15:42 240

原创 Codeforces Round 927 (Div. 3)(A,B,C,E题解)

题意:当出现第一个征兆才会出现第二个,依次类推,我们需要求出n个征兆在第几年全部出现。a数组表示出现的周期,比如ai=5时,第i个征兆的出现周期是5,10,15,20.....年,但是前提是第i-1个征兆已经出现。思路,遍历一遍周期数组,每次循环当前年数+1,如果ai的周期大于当前年数,直接用这个周期替换当前年数,如果ai为1,那么跳过。后来转念一想,为什么不能反过来求,先求最后删去的那个元素对m的取余,再乘上前一次被删除的元素,再对m取余就是倒数第二个答案。但是这个数的大小太大了,所以需要使用到高精度。

2024-06-06 20:07:20 349

原创 Codeforces Round 916 (Div. 3)(A~D题解)

题意:题目给出两个数组,a数组为任务第一次完成加的经验,b数组为第2次或者以上完成这个任务所加的经验,并且第i个任务必须i-1个任务完成后才能解锁,一开始时,任务1是可以完成的,k是可以完成的任务次数,求最大经验。n的范围是1x10^5,所以不能暴力,但是我们需要找出的是最大值,那么我们只需要找到每个数字最大的三个数字的下标,再进行一个三重for循环即可。A问题要学1分钟,Z问题要学26分钟,按照这个规律,看字符串问题出现的次数,如果出现次数大于要学的时间,那么意味这解决了这个问题。

2024-06-04 21:11:03 547

原创 Codeforces Round 925 (A,B,C)

题目要求我们只能将左边的水倒到右边的桶,如果最后不能使得全部桶的水都一样对,则输出NO,反之输出YES,我们只需要求出后缀和,变量判断此时的后缀和是否小于等于变量的元素数*最后的平均数即可,如果出现大于的情况,则最后桶的水不能都一样。当数组的首元素等于尾元素时,输出(n-前缀最长连续的相同元素-后缀最长连续的相同元素)(可能出现答案为负数的情况,此时输出0)。反正,输出(n-前缀最长连续的相同元素和后缀最长连续的相同元素的最大值)因为我们需要输出最小代价。

2024-06-02 16:26:21 301

原创 (Codeforces 第 935 轮(第 3 组)(A~D)题解​)

这道题主要考察对题目的理解和前缀和的知识(比赛的时候没有前缀超时了),去网上看了一些题解对题目的了解更加通透了,其实就是通过一个前缀和计算不同位置的和,然后表示出0和1的分布情况,最后做判断,每一边满意度是否过半。这到题是一道思维题,理解题目意思就会觉得很简单首先内向的人肯定是一个人一个帐篷,我们只要关心外向的人就可以了,我们只要分外向的人可不可以被3整除,分成两种情况再讨论就可以了.这题我一开始认为要用。

2024-05-30 15:08:48 810

原创 5月28号总结

思路:找到给出字符串按小到大的所以元素,再按照i对应n-i-1的关系,用map保存对应关系,遍历一遍题目串,更改每个元素为对应关系。思路:当只看2x2的图标个数n时,最少需要的屏幕个数为(n+1)/2,查看是否需要添加屏幕,要看屏幕流出的1x1的个数够不够用。题意:题目给我们1x1和2x2的图标个数,让我们求最少需要多少个5x3的屏幕。

2024-05-28 20:06:49 416

原创 (Codeforces Round 947 (Div. 1 + Div. 2)前三题)

题意:对于整个数组,我们可以选择一个范围(l,r),将这个范围内的数全部变为这个范围内的中位数,可以进行多次操作或者不做操作,求最后的数组的全部元素的最大值。思路:因为当选择的范围长度是2时,就可以将这个范围的两个数全部变为这两个数的较小值(x),那么一定存在一个长度为3的范围内的中位数

2024-05-26 20:09:55 451

原创 5月23号总结

昨天完成了项目的功能拓展点,聊天中新增了语音聊天。

2024-05-23 16:32:07 310

原创 5月21号总结

有点思路,当时没想出来,还认真的去找01串,10串的个数和最长01串的长度,结果只需要找到01和10串的个数即可。题目需要我们重新排序字符串的元素,得到一个不同的字符串,当输出NO时,只有可能是字符串都是同一个元素。另外一条线的两点其中一个出现在另一条线的两点围成的劣弧里面。两点都在或者都不在则不会相交。

2024-05-21 21:10:49 538

原创 项目总结(5月13号)

在每次退出聊天室时,及时将接收信息的循环线程关闭,避免错误接收服务端传回来的消息,在聊天中,我还加了聊天气泡来辨别用户和好友的信息。登录注册,找回密码/密码修改,个人资料/群资料编辑,群管理/好友管理,UUID,雪花算法,MD5加密,私聊,群聊,加群/好友审核。因为我用的是非阻塞io,所以聊天窗口不能多开,当只开一个窗口进行聊天时,可以实现聊天信息的实时更新。随着5号的答辩结束后,我又完成了群聊管理,和图片发送的功能,还有添加好友和群聊时,优化成了搜索。这里介绍一下项目的关键功能点,私聊和群聊。

2024-05-13 15:12:50 140

原创 4月23号总结

里面的judge方法用于判断输入的验证码是否正确,sendEmail方法用于发送邮件。在做聊天室项目的时候,由于需要发送邮箱验证码,所以自己查找了这方面的内容。然后就可以定义一个发消息的类,发送消息直接调用里面的方法,首先要开通SMTP服务,先进入qq邮箱。首先需要在Maven里面依赖。发送邮件以QQ邮箱举例。找到第三方服务开通即可。

2024-04-23 21:51:16 216

原创 4月21号总结

三层架构是一种软件设计模式,通常用于构建应用程序或系统。它将应用程序分解为三个主要的逻辑层:表示层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。这种分层架构有助于提高应用程序的可维护性、可扩展性和可重用性。表示层(Presentation Layer):这一层负责处理用户界面和用户交互。它接收用户的输入,将数据传送到业务逻辑层进行处理,并将结果展示给用户。

2024-04-22 08:21:14 404

原创 4月18号总结

网络分层是将网络通信划分为不同的逻辑层次,每一层负责特定的功能,从而实现网络通信的模块化和标准化。常用的网络分层模型包括OSI(开放系统互联)模型和TCP/IP模型。总的来说,网络分层模型是一种组织网络通信的方式,将复杂的通信过程分解为多个层次,使得网络设计和管理更加简单和可靠。

2024-04-16 21:00:00 1084 1

原创 4月14日总结

多线程允许程序的多部分(线程)在同一时间片段内并行执行,从而实现并发。

2024-04-14 21:57:10 583

原创 4月11号总结

这些流可以用于读取和写入不同类型的数据,如文本,图片,声音等。需要注意的是,我们在往后的使用中,文件的数据通常有几十万个字节,如果我们一个一个读取就会需要循环几十万次,这样效率太低了,所以我们可以一次读取多个字节。字节流由于其特性,可以输入输出任何数据,但是对文本文件的输入输出的效果却比不上字符流方便,所有在处理文本文件尽量使用字符流,也可以很好对中文进行处理。因为在输出中文时,是一次性将中文所占的三个字节全部拿出了,如果再整合成了一个字符,如果你换一下文本前面字母数字的个数,输出还是会异常。

2024-04-11 20:40:52 738 2

原创 4月9号总结

Stream 是 Java 8 中引入的一种处理集合数据的新抽象。它提供了一种高效且便利的方式来处理集合中的元素,支持函数式编程的特性,使得集合操作变得更加简洁和灵活。

2024-04-09 22:04:32 870

原创 4月7号总结

表示第一个数字在1到9之间,后面全部是由数字组成,不包括第一个字符在内后面有4到9个数字,加起来就是限制在5到10个数字。比如我们需要匹配一个qq好是否合理,我们知道qq号全部是由数字组成,并且第一个数字不能为0,长度在5到10之间。但是如果你使用了多字符还是会和上面一样,返回false,因为这个也是匹配单字符的。上面代码表示,如果字符串t里面的元素之含[]里面有的,那么就返回真,反之返回假。注意:这里虽然是一个反斜杠,但是我们在写代码时需要两个,这是一个规则。2是数字,所以结果应该是真。

2024-04-08 00:00:47 596

原创 4月4号总结

定义接口需要使用到关键字interface去定义接口。格式如下:类与接口的关系不是继承,而是实现,用关键字implements,格式如下:这个类去实现接口,其中的关系就相当于,接口是类的“干爹”,因为类可以实现多个接口,而继承虽然可以多层继承,但是父类只能有一个,而接口作为“干爹”的关系可以有很多个。一个类可以同时继承父类,也可以同时实现多个接口。但是要分清楚主次关系,当亲爹与干爹有相同的方法名时,调用子类的方法会优先调用亲爹的方法。B.run();

2024-04-04 22:32:18 1076

原创 4月2号总结

用abstract关键字修饰的方法是抽象方法,抽象方法没有方法体。值得注意的是,抽象方法必须出现在抽象类中。

2024-04-02 23:30:26 555

原创 java学习计划

3.每天刷2道算法题,保持思路,也为后面的蓝桥杯做准备。1.开始专项投入项目,养成java写项目的思维方式。4.学习java后面的接口,集合内容知识。1.距离蓝桥杯越来越近,每天3道算法。4.学习java的io流和多线程知识。3.完成java的残余知识,查漏补缺。1.开始着手java的简单项目。2.学习javafx的使用。5.每周的cf比赛必不可少。2.自主学习蓝桥杯重点算法。第8周(4.15~4.22)第7周(4.8~4.14)第6周(4.1~4.7)5.每天2道算法题。

2024-04-01 00:18:34 223

原创 3月31号总结

这是由于Java的继承机制,子类对象具有父类对象的所有特征,所以可以通过将子类对象赋值给父类类型的引用变量来实现向上转型(从小范围转向大范围)。在上面我们看到,一个people对象可以有学生对象、老师对象和医生对象,因为这三者都是人,这种叫做对象多态。通过上面例子我们知道,一个对象又包含几种不同的对象,在同一对象中,它们的行为又不同。对象多态:一个对象可以有多种身份,比如一个人,可以是一个父亲,一个老师,或者等等。行为多态:都是同一个身份但是表现的能力不同,比如一个人,有的跑得快,有的跑得慢。

2024-04-01 00:01:19 667

原创 3月28号总结

子类可以继承父类的属性和方法,同时可以添加自己的新属性和方法,也可以重写父类的方法。代码中的demo方法用于判断学生语文成绩是否合格,而图中的this的作用在于引用当前学生对象的变量,如果不加this关键字,就会因为就近原则,方法里面的chinese_score变量都会变成我们传进去的参数值,这样就没有比较的意义。比如,我们知道人的体重不可能为负数,也不可能非常小,那么如果我们没有对对象进行封装,用户就可以通过访问成员变量将它的值修改成一个不合理的值,这会导致我们的程序出错,所以我们要对数据进行封装。

2024-03-28 21:37:41 1192

原创 3.26日总结

思路:由于在同一个位置翻转两次的话,相当于没有翻转,所以每一个位置有且仅能最多翻转一次,想要将矩阵某个位置的1变为0,只能通过操作下一行同一列的位置,可以对第一行的元素按照要求翻转多次,次数为2^m(m为矩阵的列数),直到所有的情况都尝试过。题意:在题目输入的矩阵,在这个矩阵的基础上,通过最少基础反转,可以将矩阵元素全部变为0,如果不能达到目标则输出"IMPOSSIBLE",达到目标则输出一个操作最少次数的矩阵。

2024-03-26 21:25:39 515

原创 3.24号总结

这道题需要我们找出从给出的起点到回到起点之间遍历完所有城市的路径条数,并且需要按照字典序从小到大排序,我们可以使用深搜,当搜到目标路径,直接输出。注意:每个城市只能到达一次。

2024-03-25 12:07:56 890

原创 搜索测试题题解(3月21号总结)

思路:因为只有ab两个瓶子,所以全部的操作只有6种,所以可以用6个if来判断是否push(当然可以用更加灵活的方法,只是本人想不出),v数组可以用当前ab瓶子里面的水升分别有多少。思路:思路很简单,就是,每单个数字+1,-1或者与相邻的数字交换位置后的数字串分别入队,只是v数组用map来代替。题意:本题要求将s1和s2合并,再将合并的s分为s1和s2,知道s为我们需要得到的期望s,输出此时的洗牌次数。题意:给出两个数字串,将第一个数字串变为第二个数字串需要多少步骤。

2024-03-21 17:37:11 451

原创 搜索测试题题解(3月19号总结)

这道题要求我们找到一个Y和M去到一家肯德基汇合的最短时间和,我们可以分别给Y和M定义一个距离数组,为Y和M到相应位置的距离,后面对肯德基的位置比较,找到一个最短距离和。则这两油为同一种类的油,可以用dfs对一油袋周围深搜,搜到的油改为平底,这用每搜一次,对应的不同种类油就可以+1。这道题与普通的bfs模板题就是地图变成三维的了,其余一律按照模板做法来即可。该题需要我们找出有多少种类的油,当两油的相对位置如下。

2024-03-19 21:01:36 453

原创 练习题解(关于KMP)

这道题和第二题有异曲同工之妙,也是需要我们找出字符串的最长相同前后缀长度n,输出原串,然后重复k-1次输出下标为n后面的子串。这道题需要我们找一个字符串重复自身形成的字符串的子串为我们输入的字符串,并且要求输出这个字符串的长度(最小)。那我们如何找这个循环串的长度,首先求出next数组来求输入字符串的最长前后缀长度。既然是KMP算法的模板题,那么做这道题之前需要掌握KMP算法的基础知识,可以看看。就可以推出循环串长度为n(字符串长度)-k(最长相同前后缀长度)。直接给AC代码吧,毕竟模板题。

2024-02-22 20:01:46 533

原创 初识字符串哈希(Hash)

字符串哈希是一种将字符串映射为一个固定长度的整数或哈希值的技术。它的主要目的是加速字符串比较和搜索操作,通常用于在大量字符串中快速查找特定字符串或判断两个字符串是否相等。字符串哈希的基本思想是将字符串视为一个较大的数字,然后使用哈希函数将其转换为一个较小的、固定长度的整数。这个哈希值可以作为字符串的"指纹",用于快速比较字符串是否相等或用于在哈希表等数据结构中进行快速查找。既然要保证这个哈希值可以作为某个字符串的“指纹”,那就证明这个哈希值是独一无二的,不存在两个不同的字符串有相同的哈希值的情况。

2024-02-21 20:51:02 717

空空如也

空空如也

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

TA关注的人

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