自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 问答 (17)
  • 收藏
  • 关注

原创 BS:最大化最小值

和最小化最大值是一回事,二分板子。

2023-12-31 12:57:39 417

原创 子集状压DP

本来应该放到DP篇。但由于这个部分灵神单列了题单,我就按题单刷题记录单列一篇。位运算状压应该算是我入门第一个接触到的算法级别的trick。知识图谱也列出来了:因此本篇会略过位运算,仅将其作为工具。主要还是子集DP。

2023-12-30 22:00:49 1984

原创 Depth First Search(Brute Force->Memorized->DP)

整个过程就是暴力搜索→记忆化搜索→DP。

2023-12-30 12:15:04 362

原创 字典树/前缀树(Trie)

直接有道题教板子了。

2023-12-29 17:14:57 377

原创 Sliding Windows

本质为同向双指针。大致来说就是当要统计符合某一性质的区间数量时,可以考虑左右指针选取一个窗口,不停地扩展窗口,边扩展边统计,直至窗口大小达到区间长度上限或窗口不再满足该性质为止。

2023-12-29 12:36:44 443

原创 Greedy

贪心本质上是不可能反悔的,这和贪心算法的定义是矛盾的:贪心每次都选取当前的最优解,所以一旦反悔了,被反悔的那次选择就不叫贪心了。但有时候因为题目的特殊性质,在明确了一个贪心算法之后,我们使用数据结构记录下每次的贪心选择,在之后做出贪心选择时查询记录,如果不满足“全局贪心”的结论,就置换贪心选择,称为反悔贪心。

2023-12-25 20:10:28 381

原创 BS:最小化最大值

按照LC的尿性,最小/大化最大/小值,九成九的二分板子。暴搜一定是TLE的。这种题都有单调性质:参数值越xxx,结果越xxx。

2023-12-24 16:42:33 412

原创 Shortest Path

无/有向图,可带负边权。java比较笨,没inf这种标识符。我就用包装类作为边权了,含null。因此特判有点多。dp(k)(i,j)表示从i到j的最短路,这条路径上除了i,j这两个节点,序号最大为k。

2023-12-24 13:21:04 382

原创 Binary Search

我一般喜欢左闭右开,像这样,[lp,rp)因此rp初始化要记得+1,因为取不到的。

2023-12-22 17:19:07 452

原创 前后缀分解

差分+前缀和重在差分,前缀和不过用来还原而已前后缀分解重在区间查询优化。

2023-12-22 16:53:17 479

原创 Computer_Graphics SDU2023 Lab1 Spinning_Pinwheel

山东大学软件学院2023秋计算机图形学实验一

2023-10-20 10:32:08 317 1

原创 Dynamic Programming (DP笔记)

DP笔记

2023-10-15 10:06:17 235 1

原创 Keras-CNN卷积神经网络训练识别手写数字模型

Kares-CNN+Opencv DL入门:识别手写数字

2023-10-10 23:28:49 186 1

原创 差分+前缀和

差分、前缀和概念,实战应用

2023-10-07 17:04:41 104 1

原创 山东大学软件学院2022-2023计组课设

山东大学软件学院2022-2023计组课设

2023-07-18 11:29:32 260 1

原创 中缀表达式的计算(一个很长的递归函数)

中缀表达式的计算(一个很长的递归函数)

2022-10-18 23:47:23 360 2

原创 上台阶问题的两种实现

一个实际的问题:“一共有20级台阶,一次只能上一级或两级,问一共有几种上法?” 这里我考虑了两种方式。第一种,解不定方程,随后组合并求和;第二种,递归。

2022-07-11 22:57:06 538

原创 一些利用鸽巢原理的优雅证明

鸽巢原理(抽屉原理)及其一般性定理不难证明。这里主要关注利用鸽巢原理的一些优美的证明。

2022-07-07 23:05:48 266

原创 递归解决不含连续的1的位串个数的问题

递归解决不含连续的1的位串个数的问题

2022-07-06 22:52:01 425

原创 DFS初见 整数分解与全排列

两道题目 整数分解与全排列 初步了解了一下深度优先搜索第一题:整数分解思路:当一个输入的整数被分解过后,它会产生一个剩余的数。比如7分解3会剩余4,4就成为了新的待分解的数。因此4就是7,于是分解过程是完全一致的。由是,选择递归递归基:当剩余的数为0时,意味着分解完毕。例如7分解3剩下4,4分解4剩下0,这个时候就分解完了,可以按照需求格式打印DFS代码部分:我们按照字典序,对于每一次的递归,都从小到大的挑选那个最小的分解数,随后把这个分解数存入一个数组中,之后在递归中挑选分解数..

2022-03-29 16:01:36 912

原创 PAT乙级 1100 区块反转 java(22/25) 测试点5超时

思路:由于不需要真的自己写一个链表,所以可以用uitl下的LinkedList来实现,只需要更新LinkedList中元素的address和next使打印的结果符合一个真链表的形式即可。创建Node类,属性包含int类型的地址、数据、下一个节点的地址。重写toString()方法以便打印Node对象。初始化Node类型的数组,读取所有元素的属性信息,创建对应的Node对象并以对象的地址属性为索引存储在数组中。创建初始链表与目标链表对象。根据区块长度计算区块个数,随后分类讨论,(1)可以整除...

2022-02-15 17:11:32 304

原创 PAT乙级 1075 链表元素分类 java(20/25) 测试点5超时

思路:由于不需要真的自己写一个链表,所以可以用uitl下的LinkedList来实现,只需要更新LinkedList中元素的address和next使打印的结果符合一个真链表的形式即可。创建Node类,属性包含int类型的地址、数据、下一个节点的地址。重写toString()方法以便打印Node对象。初始化Node类型的数组,读取所有元素的属性信息,创建对应的Node对象并以对象的地址属性为索引存储在数组中。创建三个LinkedList对象,对应题目中的三个类别,分别为:小于0、0到K、...

2022-02-14 21:01:36 237

原创 PAT乙级 1075 链表元素分类 java(20/25) 测试点5超时

思路:由于不需要真的自己写一个链表出来,所以可以用util下的LinkedList来实现题目要求的顺序,只要更新一遍链表中元素的地址和下一个元素的地址就可以了。创建Node类,属性包括地址,存储的数据,以及下一个节点的地址。重写toString()方法方便打印。读取所有的链表元素的属性信息,创建对象并存储在数组中。创建三个链表对象,分别对应题目中小于0、0到K、大于K三种类别的元素。随后通过数组下标遍历存储的节点,分类存入三个链表中。再把三个链表中的元素按照题目要求的顺序存储到最终的目标链表中。...

2022-02-14 20:46:49 256

原创 PAT乙级1020 月饼 java实现

思路:为了使用Collections的sort()方法进行单价的排序。在main()函数中创建Map对象,将输入数据的数组索引作为key,将库存、单价、销售总额三者组成的double类型数组作为value。自定义月饼类,以Map.Entry<>类型数据为属性,将键值对存储在MoonCake对象中,重写compareTo()方法以获得按照单价降序排列的动态数组。在main()方法中用动态数组存储所有的月饼对象。降序排序后利用迭代器迭代各月饼对象,并判断需求量是否达标,达标退...

2022-02-12 22:42:35 349

原创 PAT乙级1015 德才论 java(19/25) 测试点3、4超时 测试点2压线

思路:把德分和才分存入数组中,作为Map中的value,ID作为key。自定义考生类person,将person的属性设为Map.Entry<key,value>,随后重写compareTo()方法,伴随一个动态数组存储person类型的对象,最后Collections.sort()进行排序。也是意料之中的超时了,各位如果有AC的java代码也可以分享下!代码如下:import java.io.*;import java.util.*;/*考生类 包含键值...

2022-02-12 17:32:42 522

原创 PAT乙级1088 三人行 java 含测试点3,4

思路:现在草稿纸上分类解方程组 具体为1.9|a-b|=x*c 2.10b+a=y*c 其中a,b分别为甲能力值的十位与个位 c为丙能力值 得到9|a-b|=(10b+a)*x/y 之后分类去掉绝对值得到a与b的关系式 而a是正整数 b是整数(注意不一定是正整数,可以是0)令a遍历9到1 b遍历9到0(逆序的第一个解即最大) 若a b满足得到的关系式,那么(a,b)就是一组最大解 之后按照题目要求输出即可测试点3:输入90 9 1 输出 90 Ping Gai Gai我一开始错了这个,...

2022-02-08 18:47:43 256

原创 PAT乙级1050 螺旋矩阵 java实现

思路:观察发现,在填充过程中,总能找到一个时刻,使得二维矩阵的“最外层”均填充完毕,同时“内层”均未被填充过。于是可以以“圈”为单位考虑整个填充过程,即每次循环填充一圈。而每一圈由四个填充过程组成,分别是最上层,最右层,最下层,最左层。当每一层填充完毕后,便向内层收缩一圈,例如最上层是向下移动一行。需要注意的是每层填充都会把下一次填充时要填的第一个数填掉,所以除了整个填充过程中的第一次填充,其余每层都要跳过上一层的最后一个数,从本层的第二个数开始填充代码如下:import java.io.*...

2022-02-05 22:30:58 283 1

原创 PAT乙级1103 java 最后一个测试点

import java.util.*;public class Main { //判断是否是完全平方数的方法 public static boolean isSquare(int n){ int root=(int)Math.sqrt(n); if(root*root==n){ return true; } return false; } //求算数平方根 public...

2022-01-30 10:53:07 708

原创 一道发源于游戏中的数列题(求项数最大值)

之前上高中的时候打游戏时想到的一道题目扑克飞镖:每使用一次法力值消耗增加1点 初始法力值为零费 每次使用后回手吹气:获得五点法力值 手牌中法力值最高的牌消耗归零假设魔术师现在手中仅有上述两张手牌 且两张牌的配合机制如下: 当打出吹气后 扑克飞镖的法力值重新计算(即首项为零 公差为一的等差数列)请问:(1).当魔术师初始法力值为25 求本回合中她最多可以打出几次“扑克飞镖”?(2).当魔术师初始法力值为常数m时(m>0)求本回合中她最多可以打出几次“扑克飞镖”? (注:(1)与(2)中

2022-01-22 22:47:58 2453

原创 PAT乙级1087 有多少不同的值

作为一个小白,还没有学过set集合。查阅了一下其他的文章,多用set中的size方法来计算个数。私认为可能有另外一种简便的写法,希望得到大家的指教。思路:题目中要求的是从1到N对应的数列各项的不同数值的个数。而注意到数列{⌊n/2⌋+⌊n/3⌋+⌊n/5⌋}是一个非严格单调增的数列,也就是说只要数列各项的值相比于上一项发生过改变,那么它在整个数列中一定是第一次出现的。而导致各项的值发生改变的原因在于式子“被除数÷除数=商......余数”中的商发生了改变,因为这个商就是高斯函数最终的值。那么什么情况..

2022-01-21 20:23:03 659

空空如也

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

TA关注的人

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