自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 cf场+线性dp

令a[1]=x[1]+1后我们可以让a[i+1]=a[i]+x[i],但是这样的话数可能会比较小,所以我们可以累加a[i],因为是mod所以只要不大于x[i+1]可以一直加下去。2.n>b-a>0这种情况我们还需要考虑到使用到的a,在此之前我们按照等差数列出售了(b-a)个,那么剩下n-(b-a)个我们则需要按照a来出售。采用双指针,一个指向a的头部,一个指向b的头部,两者开始进行匹配,若相同则b往下走一位,否则就终止。题目的第一问其实就是让我们求最长不上升子序列,第二问就是求有多少段最长不上升序列。

2024-07-23 15:51:47 329 1

原创 abc363+cf960div.2+牛客周赛49轮

由题意可知两者每次肯定都会做出最佳选择(即选取最大),所以我们只需要判断最大值是奇数还是偶数即可(因为是Alice先手,所以奇数A必胜,否则B胜)罗列出排列的每一种情况,再根据题目要求进行判断。思路其实很简单,根据需要的i-th进行判断即可。求区间异或和(以后直接套用模板算了)本质就是求最大连续子段和。

2024-07-21 17:07:16 582

原创 牛客周赛50轮+cf955+abc363

判断当前有多少个>=p的就行,不满足要求的时候我们从最大的开始看(其实就是求有限范围里满足题目要求的最小值)仔细看题目,题目的意思是有可能,即没可能的情况只有一种(即x1,y1和x2,y2相交的情况)数据范围很小,直接暴力枚举吧(注意条件)不会,只能看题解写了(QWQ)abc363只a了三道题。

2024-07-21 09:41:18 468

原创 cf刷题(800分场)+牛客周赛51轮补提+abc360

刚写的时候没考虑周全,只判断了两种情况(能快充和不能快充),其实还有一个情况(在不能快充时我们把电量消耗到可以快充的大小,再进行快充,最后判断一下哪一种情况的耗电量最小即可)对k=1和n=1的情况特判一下,然后我们不难知道,k内最多上传1gb,在k+1时也上传1gb(为了得到最小值),然后推出公式即可。看到最短直接开始bfs,我们从数据范围的两头进行二分广搜,一步步缩小数据范围,最后直接输出就行了。每个盒子里只能放一个物品,我们找到盒子里多于一个物品盒子,把最大的留下,小的全部转移即可。

2024-07-18 14:58:18 381

原创 Codeforces Round 958 (Div. 2)

要满足这几个条件我们还得从n本身来看,为了使数或一个比它大的数为n,我们从n的二进制从后往前来看,我们统计n的二进制中有多少个1,依次从右到左对不同的1取非操作,有多少个1,得到的序列长度就是1的数目+1(n的本身也算),序列中的数就是n的二进制从右开始对1取非之后的转换为十进制的数。因为可以连续操作无数次,我们可以把每一段连续的0都看作一个0,最后统计0和1的个数,1多就可以(直接把起点和终点看作范围),0多就不行。看能分多少个k-1出来吧,再看最后的余数为多少。1.a里的所有数都小于等于n。

2024-07-16 19:30:45 254

原创 7.15洛谷蓝题

可以得到cn,n=1时c1=0,n>1时cn=cn-1-an-1-1;求得全部的和sum,平均值ave=sum/n,如图我们可以看出。题目虽少,难度却不小。

2024-07-15 21:27:39 154

原创 牛客小白月赛98+ABC362补题

将左边界和右边界的所有数都加起来,若同时满足左边界<=0且右边界>=0则一定可以找到相应的序列,否则就不能,用一个变量记录左边界的全部和sum(最小值,还用一个数组来记录序列,初始化为左边界的数),我们一轮一轮的来看,得到每一轮的左右边界差,若能够使sum>=0则记录序列的数组相应的位置要变成能够使sum=0的值,否则让sum加上这一轮的边界查且当前序列数组变成这一轮的右边界。直接判断这个数在数组里有没有就行。判断字符串首字符即可。

2024-07-15 10:06:07 499

原创 Codeforces Round 957 (Div. 3)

其实巨简单(想得太多了反而做不出来),就是求一个最大的f和一个最小的g就行了,根据两个特殊值m和k就行,先输出所有>m且<=k的值(1~n,不能重复),输出<m的值要注意一下,因为我们要让g最小,即<m的要先输出小的再输出大的(因为最后都会得到相同的和,此时就必须要取小的)例如,如果是 a=2 、 b=3 和 c=4 ,那么可以将 a 增加三次,再将 b 增加两次。以最大的为基准,把所有都累加到最大上面(为1时直接+1就行,>1时加上该值的两倍-1(分出1和把1合并是两步))幸运的是,一切都可以补救。

2024-07-14 09:16:48 730

原创 刷题刷题刷题

bfs题(基本上是模板但是有坑点),对每一次出队的点进行判断,若是传送门我们则需找到另一个传送门。正常搜索只有50分,必须要动态压缩才能过(看了题解和视频才搞定)分为左端点和右段点两种,每一种端点又有多种不同的情况。思路:(实在没想出来,看的题解)

2024-07-12 15:14:35 213

原创 贪心+动态规划

拓扑排序,从最底层开始(即不能吃别人,只能被吃),往前进行搜索,一层一层的进行,每一层搜完后删除这一层,然后把这一层的数值累加到其对应的消费者身上,一直到最高处(使用vector建图,以每个最底层为一个点进行建边,能吃它的就加到它后面)我们在其前面加上一个0作为x值,也就是(0 4 3 2 5 3 5),从4开始输入作为k,若输入的值k大于x,则Sum+=k-x,不管是否大于小于,每次输入后都要将当前k值变为x值。4 3 2 5 3 5 这个数据。原理上就是一个差分数组,例如。

2024-07-09 22:02:52 221

原创 刷题刷题刷题

利用vector进行建边,从第一个点开始搜索,每搜完一个点要进行回溯(因为要分别以每个点作为出发点进行搜索得到最大的 长度),从每个出发点开始进行递归搜索得到最大长度(也要回溯)从1,1开始dfs,若行数x>n则立马刷新最大值退出搜索,若y>m则进入下一行从第一列开始搜索即x+=1,y=1,对当前的搜索点x,y的八个方向进行+1,因为不能相邻。贪心题,将逆序的字符串和正序的从头开始对比,谁小就输出谁就行了(一定要记录输出的次数,每输出80次换一下行,我就是忘记看了导致一直卡样例)

2024-07-09 09:43:58 187

原创 搜索+动态dp

思路:虽然是bfs板子题,但是bfs的板子已经忘光了该死的普及搜索题,一道黄题代码过百思路:由题意可知该题的结果=空的个数+周围没有空格的数字个数,首先将雷全部标记为-1(方便后续对数字的操作,然后对数组进行遍历,当遇到雷时即-1时搜索其八个方向,将所有非雷的元素全部+1,然后统计的周围没有空格的数字个数即不为0,-1且周围没有空格的个数,最后统计空的个数)AC代码:思路:代码简单到我不敢相信(其实就是贪心,没用dp),

2024-07-07 22:19:12 361

原创 搜索+动态规划

从第一种饲料开始进入搜索,每次搜索进行一次判断,若饲料数已超过数据则马上结束这一次搜索(对当前饲料进行搜索,用数组记录),得到需要的饲料数,并用数组存起来所需的饲料编号,对所有饲料的相同一种的维他命进行判断,得到最优解,继续进行搜索有两种可能(一是不算当前饲料,即饲料数加1,但是所需饲料数不加1,二是当前饲料数和所需饲料数都加1),最后所有搜索结束后按照题目要求输出即可。开始没写出来,看了题解后有了一些头绪(感觉应该有普及+的难度了)。01背包思路(太久远了,忘了)来几道板子题唤醒一下沉睡的记忆。

2024-07-05 22:30:49 313

原创 字典树模板+位运算

trie树板子题,稍微有一丢丢不一样,套用字典树模板稍加修改就能过。

2024-07-04 21:09:40 425

原创 7.2总结

顺时针和逆时针是相反的,会了一个就能会另一个,花点时间就能看懂,根据题意我们可以知道要旋转的是以目标点中心的2r+1阶矩阵,矩阵最左边为x-r,最右边为x+r,最上面为y+r,最下面为y-r,将这个矩阵复制一次,方便之后对原来的矩阵进行修改。好久没刷题了,写了几个简单的模拟题和高精度题温习一下。

2024-07-02 18:58:09 161

原创 6.18总结

给定一个能达到数据范围的斐波拉契数组,包含所有数据范围内的斐波拉契数,再进行几个特判。需要得到每个(x,y)下的最大公约数,再找出一定的规律。01背包问题,就题目改了一下,直接用模板就行。设两个方程直接解出来就行。

2024-06-18 21:27:39 188

原创 6.13总结(省赛排位赛1)

当前一个数k在集合m里,由题可知2k+1,3k+1都在集合里,每一个数又可以延伸出两个数到集合里,每判断一个数k时,顺便对2k+1,3k+1也进行判断,当这个数大于我们输入的数时可知是不可能有结果的,因为无论如何k的倍数都是大于k的,而x小于k。利用并查集和弗洛伊德,对需要传递的对象都进行标记,经过处理后使他们的父亲发生相应的改变,最后对数组进行查询累加即可。其实就是一个斐波拉契数列,当前项=前两项之和,先将范围内的数全部存起来放进一个数组,再进行累加查询。简单的二分查找题,直接套模板都行。

2024-06-09 21:47:07 257

原创 6.6小结

将每次的字符串进行比对得到最小的(反转后添加的字符串和当前的字符串)一次最多只能走一步或者两步,只需要判断后面两个是不是都是*就行。加上每两个时间之间的间隔。

2024-06-06 17:02:19 201

原创 6.4总结

和逆序数有点相似的感觉,因为要得到的是K,所以把(1~n-k+1)放到最后面,把最后k+1位放到最前面,因为最后k+1位都是递增的,所以会产生k个。每个字母尝试一次花费1分钟,将每个字母所花费的时间进行记录,最后和其需要的对应时间进行对比,若在时间范围内就进行+1。看题解写的(思路没打开)

2024-06-04 19:06:23 254

原创 6.2总结

它首先调用 split 函数将 IP 地址按点号分割成四部分,然后将每个部分转换为整数,再将每个整数转换为对应的 8 位二进制数,最后将这 4 个 8 位二进制数组合成一个 32 位的 bitset。4.main 函数:该函数首先读入一个整数 n,表示要判断的 IP 地址和子网掩码的组数。然后,它循环 n 次,每次读入一个 IP 地址和一个子网掩码,调用 judge 函数进行判断,并输出结果。总体来说,这段代码是一个简单的 IP 地址匹配器,用于判断一个 IP 地址是否匹配给定的子网掩码。

2024-06-02 20:29:13 356

原创 5.30总结

数据范围还不是很大,开一个10000大小的数组就可以,用这个数组来记录从2到10000的所有质数,用一个数来进行总和,放进一个循环一直加下去直到总和大于数据,再进行判断。看成一个平面,坐标的x,y点用分别用一个数组来记录,x,y的变化也分别用一个数组来记录即可。登录 - Luogu Spilopelia。

2024-05-30 21:19:25 189

原创 5.28总结

三剑客:JS CSS HTML新建一个test.html文件,内容如下其中:<!DOCTYPE html> 声明为 HTML5 文档<html> 元素是 HTML 页面的根元素<head> 元素包含了文档的元(meta)数据,如 <meta charset="utf-8"> 定义网页编码格式为 utf-8(由于在大部分浏览器中直接输出中文会出现乱码,所以要在头部将字符声明为UTF-8)<title> 元素描述了文档的标题<body> 元素包含了可见的页面内容<h1> 元素定义一个大标题<p

2024-05-28 21:06:28 264

原创 5.26总结

利用两个vector数组,用一个结构体vector(为了节省空间,咱用vector来存)存储每个边的起点和终点,然后用一个二维vector(也就是一个vector数组)存储边的信息。依次对其进行dfs和bfs遍历(队列)理解一下题意就能明白,题目的意思是取一个值(即在原有序列中直接去掉这个值),要得到<=这个值的最大值,其实就是得到序列中除最大值之外的次大值。

2024-05-26 17:11:27 250

原创 5.23总结

针对项目功能点的创新:大部分都是利用java sound实现。

2024-05-23 20:26:16 243

原创 聊天室项目总结

2.项目的结构和风格非常不好,最开始写的时候甚至都没有将客户端和服务端进行分离,登陆注册写完之后才进行修改,各个类中多次使用了public static 类型 变量名的形式在不同的类之间进行传递,get和set方法使用的较少,甚至在最开始的时候还在前端直接使用mysql语句进行数据库操作。3.在完成功能点的同时没有考虑到使用时的体验感,最开始想做一个新版QQ,实现上遇到困难之后改作老版QQ,一个普通的聊天室做出了接近两位数的界面,用起来也十分不方便。1.再用一周的时间完成一个创新功能点。

2024-05-21 20:00:08 155

原创 4.28总结

根据项目要求进行在线状态功能的实现(还未真正实现,仅在数据库进行修改状态并与服务器断开连接)在线程中设置一个监听,服务端与客户端进行连接或断开时进行监听并返回,对数据库采取相应的操作。通过不退出界面进行离线操作(有点类似于隐身)在个人主页进行退出登录,直接返回到主界面。连接成功后数据库里的在线状态进行更改。我设置了两种方式来进行改变状态。此时数据库的状态又重新变为0。

2024-04-28 22:06:17 154

原创 4.23总结

两种不同的套接字通道实现,两种通道都支持阻塞和非阻塞两种模式。对于低负载、低并发的应用程序,可以使用同步阻塞I/O来提升开发速率和更好的维护性;对于高负载、高并发的(网络)应用,应使用 NIO 的非阻塞模式来开发。Java NIO的通道类似流,但又有些不同:既可以从通道中读取数据,又可以写数据到通道。通道可以非阻塞读取和写入通道,通道可以支持读取或写入缓冲区,也支持异步地读写。Selector是一个ava NIO组件,可以能够检查一个或多个NIO通道,并确定哪些通道已经准备好进行读取或写入。

2024-04-23 22:26:07 830

原创 4.21总结

由于之前的项目没有使用服务器搭建,这两天进行了一些修改,以服务器为中端进行搭建,登录注册等功能从直接与数据库关联改为由服务器进行(直接关联只能在自己的端口进行修改,放在别人电脑上就无法进行)顺遍了解了一下雪花算法(自增id且具有唯一性,通过位处理来得到想要获取的位数)

2024-04-21 22:39:31 278

原创 4.18总结

md5加密不可逆,加密之后数据库里的数据都会改变成加密后的内容(一堆乱七八糟的东西),会导致原来的账号密码无法登录,必须在注册放进数据库之前把加密前的传给登录界面(用一个东西来接接收),注册完成之后在登录界面输入原来的账号密码(通过代码实现将传过来的明文进行加密,判断与数据库里的加密账号密码是否相等,相等就跳转)。登录时账号密码的判断(根据rs的返回值通过if语句来判断登录成功或者失败)账号密码不匹配就会弹出相应提示界面。登录成功之后的聊天室界面还未实现。学习加密算法并简单实现。学习实现发送邮箱验证码。

2024-04-16 22:04:28 292

原创 4.14总结

利用TCP协议相关知识搭建一个简单的服务器,使服务端可以与多个客户端进行相连,且客户端可以和服务端之间进行多次通信。3:创建一个Socket对象来监视是否有信息传入,若有则新搭建一个多线程。2.创建输出流对象,将低级的输出流包装成高级的打印流。4.之后的操作进入循环(打印输入的的数据并进行刷新)1:创建一个ServerSocket用来连接端口。2:创建一个输入流对象,对客户发送的数据进行读入。1.首先创建一个Socket对象(地址,端口)

2024-04-14 17:42:59 231

原创 4.11总结

IO流根据流的类型分为两种:一种是输入流,另一种是输出流输入流只能用来读取数据,输出流只能用来写入数据。

2024-04-11 15:07:27 706

原创 4.9总结

程序内部的执行路径就叫线程,为了满足需求同时执行多个任务,就有了多线程第一种是并发:在同一时刻,有多个指令在单个CPU上交替运行第二种是并行:在同一时刻,有多个指令在多个CPU上交替运行电脑的多线程可以通过CPU的来查询,逻辑处理器就是类似多线程表示的一种形式1:Thread2:Runnable3:Callable需要注意的是第一种和第二种都不能有返回值,第三种可以有返回值线程池。

2024-04-09 17:34:13 391

原创 4.7总结

对于之前学过有关集合的东西感觉忘记了很多,重新学了一下泛型的知识。

2024-04-07 19:23:40 785

原创 4.4总结

树状数组与完全二叉数结构上大致相同,但是完全二叉树每个节点只能存储单个数,而树状数组存储的是数组的范围。这两天学习了线段树和树状数组,今晚上学长还在进行JDBC和MYSQL的教学,也收获到了一些东西。即取一个数末尾0前的1将其进行二进制转换,这个值就等于其t[x]的长度。这两天学的东西比较少,明天把ER图和JDBC进行更进一步的学习。今晚简单了解了一下制作ER图的流程,明天再进行深入的学习。使用Navicat进行简单的表的创建和用代码进行修改。还学习了一下lowbit函数。

2024-04-04 23:11:52 393

原创 4.2总结

1.接口一般使用关键字interface来定义2.public interface 接口名{}3.接口不能实例化4.接口和类之间是实现关系,通过关键字implements来表示5.接口的子类(实现类):一:要么重写接口中的所有抽象方法二:要么是抽象类。

2024-04-04 22:55:22 431

原创 3.31总结

这两天对于java知识的学习又收获了一些新的东西,如内部类、抽象类、接口、权限修饰符、代码块、final.

2024-03-31 22:08:04 601

原创 3.28总结

对于面向对象进行了更加深入的学习通常使用extends使两个类之间建立继承关系例如:public class 子类 extends 父类1.子类重复代码可以抽取到父类中,提高代码的复用性2.子类可以在父类的基础上增加新的功能,使子类更加强大一般当类与类之间存在共性的内容,并满足子类是父类的一种时可以使用继承继承父类的子类有一些特点:1.子类可以得到父类的属性和行为,子类可以继续使用2.子类可以在父类的基础上进行扩充在JAVA中,只支持单继承,不支持多继承,但支持多层继承。

2024-03-28 19:51:55 376

原创 3.26总结

JAVA学习到了集合部分,自己试着做了一些集合的简单练习来加强理解Q - 生日蛋糕7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体。设从下往上数第i(1 Hi+1。由于要在蛋糕上抹奶油,为尽可能节约经费,我们希望蛋糕外表面(最下一层的下底面除外)的面积Q最小。令Q = Sπ。

2024-03-26 22:17:17 375

原创 3.24总结

比 n 行,每行包括 n 个整数 Tij ( 0<=Tij<10),i 的行和 j 的整数 Tij 表示在解决问题 i 后,将花费 Tij 分钟来解决问题 j。一个比他已经解决的问题容易的问题。现在一芬飞给他n个难度问题,在解决另一个问题后告诉他解决的相对时间。所以在解决了问题 0 之后,他可以选择问题 1 和问题 2,因为 T01 >=0 和 T02>=0。提示:示例一,正如我们所知,zty 总是通过花费 0 分钟来解决问题 0。对于每个测试用例输出,zty 可以解决的最大问题数。输入包含多个测试用例。

2024-03-24 22:15:53 317

原创 3.21总结

在扑克桌上,扑克玩家常常会玩一种叫做“洗筹码”的游戏。洗筹码是通过将两堆扑克筹码和进行交错堆叠来完成的,每堆筹码包含个筹码。每堆筹码可能包含多种不同颜色的筹码。实际的洗牌操作是通过将中的一枚筹码与中的一枚筹码交错堆叠来完成的,如下所示,当= 5 时:得到的单一结果堆包含 2 *个筹码。的底部筹码是来自的底部筹码。在这枚筹码上面,是来自的底部筹码。交错堆叠过程继续,将来自底部第二枚筹码放在上,然后是来自底部第二枚筹码,以此类推,直到将来自的顶部筹码放在上。洗牌操作后,被分成两堆新的筹码,从底部取出。

2024-03-21 21:25:17 454

空空如也

空空如也

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

TA关注的人

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