自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 两只塔姆沃斯牛 The Tamworth Two

但是我们要考虑一个问题,我们不能每次移动都遍历一遍数组,太耗时间了,所以我们可以用两个整型数组储存奶牛和农夫的信息(x,y坐标以及方向),每次移动时只需调整信息即可。首先这是一个边长为10的地图,所以至少要开10* 10,但是为了更好的判断越界情况,我们可以开一个12* 12的数组,然后把边框全部变为'* ',这样相当于将边框变为了障碍物,判断更加方便。同时,它们不会离开地图。计算 Farmer John 需要多少分钟来抓住他的牛,假设牛和 Farmer John 一开始的行动方向都是正北(即上)。

2025-05-23 11:28:58 609

原创 动态规划之吃奶酪

设此时二进制状态为 k,终点为 i,起点为 j,可得状态转移方程:Fi,k​=min(Fi,k​,Fj,k−2i−1​+Ai,j​)。对于两个点 (x1​,y1​),(x2​,y2​),两点之间的距离公式为 (x1​−x2​)2+(y1​−y2​)2​。第 2 到第 (n+1) 行,每行两个实数,第 (i+1) 行的实数分别表示第 i 块奶酪的横纵坐标 xi​,yi​。定义一个数组 Fi,j​,表示老鼠走到第 i 个奶酪,且走过的二进制状态为 j 时,最短的距离。第一行有一个整数,表示奶酪的数量 n。

2025-05-22 10:00:19 913

原创 寻找最优美做题曲线

一个有趣的评测功能,就是系统自动绘制出用户的“做题曲线”。所谓做题曲线就是一条曲线,或者说是折线,是这样定义的:假设某用户在第 bi​ 天 AC 了 ci​ 道题,并且 bi​ 严格递增,那么该用户的做题曲线就是平面上点 (i,ci​) 依次连出的一条折线。比如你在第 1 天做了 3 道题,第 3 天做了 4 道题,第 6 天做了 1 道题,那么你在前 6 天的做题曲线就是从点 (1,3) 到点 (2,4) 到点 (3,1) 的连续折线。

2025-05-20 20:36:25 627

原创 二分之火枪打怪

当某个子弹射到第 i 个怪物,如果这个子弹的威力值为 p,除了这个怪物会掉 p 点血以外,它左边的第 j 个怪物 (j<i),也会遭到 max(0,p−(i−j)2) 的溅射伤害(好神奇的子弹)。我们用一个num数组来记录每个位置上射出子弹的个数(受到伤害为p而不是p-(i-j)*(i-j)的子弹个数,也就是说被溅射到的不算,溅射的子弹会用别的方法储存)。因为我们要求的是用k发子弹消灭所有怪物的最小威力值p,所以如果在当前回合的枚举中我们求得的cnt大于要求子弹个数k,我们便对p的范围向左二分,反之向右。

2025-05-17 21:13:33 856

原创 动态规划之数列

n−1,那么这个数列的和为 sum=2n(n−1)​,我们发现 n≤100,那么 sum≤4950,所以如果题目要求的 s>sum,那么一定无解,因为这个数列再大也大不过 sum,更不可能到达 s 了。,−(n−1),那么这个数列的和为 sum=−2n(n−1)​,我们发现 n≤100,那么 sum≥−4950。那么根据前面对数字间关系的讨论,我们知道,我们要凑出很多个 i,使这些 i 对应的 2(n−i+1) 加起来等于 k 就行了,即让所有的 n−i+1 加起来等于 2k​ 即可。

2025-05-15 20:53:36 973

原创 Feed流推送之订阅推送

数据结构的选择:用户的收件箱应该根据用户关注的博主发布的博客的时间戳来进行排序,而redis中能够进行排序的有两种数据结构,分别为list和SortedSet, list为传统角标排序,而sortedSet能够根据给定的值来排序,这里用sortedset数据结构,根据关注的博主发布的博客的时间戳来实现。在黑马点评的feed推送关注的博主的新发布博客中,一般用户的粉丝数不会特别大,采用推模式来实现,基于redis来实现推模式。Feed流推送一般有着三种方案。

2025-05-12 20:15:12 313

原创 动态规划之虫洞

他想要新建造 kn 条虫洞,并给它们 (m+1)∼(m+k) 的编号。实际上,我们可以通过归纳得到一个较为关键的性质:对于一个“连通块”,若看作无标号,那么其中任意两点都是等价的,即存在一种自同构使得这两个点对应,并且这种自同构是唯一的。以此类推,我们可以猜测出 k 种颜色的情况:之前的“环”与“柱”都可以被推广为“连通块”,每一轮都是对等价的“连通块”进行合并,形成更大的“连通块”。接下来 nm 行,每行三个正整数 u,v,w,表示一条编号为 w 的,起点为 u 号城市,终点为 v 号城市的虫洞。

2025-05-09 11:29:27 481

原创 动态规划之花园

小 L 有一座环形花园,沿花园的顺时针方向,他把各个花圃编号为 1∼n。花园 1 和 n 是相邻的。他的环形花园每天都会换一个新花样,但他的花园都不外乎一个规则:任意相邻 m 个花圃中都只有不超过 k 个 C 形的花圃,其余花圃均为 P 形的花圃。例如,若 n=10 , m=5 , k=3 ,则CCPCPPPPCCCCPPPPCPCP请帮小 L 求出符合规则的花园种数对 109+7 取模的结果。

2025-05-07 19:48:42 668

原创 动态规划之乌龟棋

小明过生日的时候,爸爸送给他一副乌龟棋当作礼物。乌龟棋的棋盘是一行 N 个格子,每个格子上一个分数(非负整数)。棋盘第 1 格是唯一的起点,第 N 格是终点,游戏要求玩家控制一个乌龟棋子从起点出发走到终点。乌龟棋中 M 张爬行卡片,分成 4 种不同的类型(M 张卡片中不一定包含所有 4 种类型的卡片,见样例),每种类型的卡片上分别标有 1,2,3,4 四个数字之一,表示使用这种卡片后,乌龟棋子将向前爬行相应的格子数。

2025-05-06 14:09:44 879

原创 图论之幻想迷宫

题目描述:幻象迷宫可以认为是无限大的,不过它由若干个 N×M 的矩阵重复组成。矩阵中有的地方是道路,用 . 表示;有的地方是墙,用 # 表示。LHX 和 WD 所在的位置用 S 表示。也就是对于迷宫中的一个点(x,y),如果 (xmodn,ymodm) 是 . 或者 S,那么这个地方是道路;如果 (xmodn,ymodm) 是#,那么这个地方是墙。LHX 和 WD 可以向上下左右四个方向移动,当然不能移动到墙上。

2025-05-03 18:09:51 714

原创 模拟退火之平衡点

为便于后续的计算和接受,减少算法耗时,通常选择由当前新解经过简单地变换即可产生新解的方法,如对构成新解的全部或部分元素进行置换、互换等,注意到产生新解的变换方法决定了当前新解的邻域结构,因而对冷却进度表的选取有一定的影响。第三步是判断新解是否被接受,判断的依据是一个接受准则,最常用的接受准则是Metropolis准则: 若Δt′<0则接受S′作为新的当前解S,否则以概率exp(-Δt′/T)接受S′作为新的当前解S。状态函数将决定你是否要选用当前的解,对于一个好的退火来说,状态函数的搜索空间应该足够大。

2025-05-01 23:34:18 726

原创 2-SAT之完美塔防

小N最近喜欢玩一款塔防游戏。

2025-04-29 20:54:23 855

原创 DP之书架

现按一定顺序给出所有要放置于书架上的书,共有 n 本,第 i 本书有一个长度 hi​。书架有若干层,层与层之间的宽度不一定相等,但是一层的宽度不能小于其上所摆放的任何一本书的长度。同时,每层上的书的长度之和不能超过一个给定的参数 m,且任何层上的书必须是给出的书的序列中连续的几本。书架的宽度是所有层的宽度之和,求书架的最小宽度。

2025-04-26 20:01:16 481

原创 银河英雄传说

更新很容易,我们来分析一下:对于原来的队头,它到队头的距离为0,当将它所在的队列移到另一个队列后面时,它到队头的距离就是排在它前面的飞船数,也就是合并前另一个队列的飞船数量。因此,就知道该怎样实现了,我们再建一个数组num,num[i]表示以i为队头的队列的飞船数量,初始时都是1,在每次合并的时候,fx为合并前飞船i的队头,fy为合并前飞船j的队头,每次合并时,先更新front[fx],即给它加上num[fy],然后开始合并,即fa[fx]=fy,最后更新num, num[fy]+= num[fx];

2025-04-21 10:06:46 630

原创 破解保险箱

举例说明,如 n=3,k=2(三位二进制数),其节点(二位二进制数)为 “00”,“01”,“10”,“11”,每个节点有 2 条边,节点上添加数字 0∼1 可转化到自身或另一个节点,如下图所示。如果我们从任一节点出发,能够找出一条路径,经过图中的所有边且只经过一次,然后把边上的数字写入字符串(还需加入起始节点的数字),那么这个字符串显然符合要求,而且找不出比它更短的字符串了。"01100"、"10011" 和 "11001" 也可以确保打开保险箱。,如果匹配,则能够打开保险箱。能够打开保险箱的任一。

2025-04-19 16:51:52 426

原创 缺失的第一个正数

但我们可以继续利用上面的提到的性质:由于我们只在意 [1,N] 中的数,因此我们可以先对数组进行遍历,把不在 [1,N] 范围内的数修改成任意一个大于 N 的数(例如 N+1)。我们对数组进行遍历,对于遍历到的数 x,如果它在 [1,N] 的范围内,那么就将数组中的第 x−1 个位置(注意:数组下标从 0 开始)打上「标记」。在遍历结束之后,如果所有的位置都被打上了标记,那么答案是 N+1,否则答案是最小的没有打上标记的位置加 1。因此,我们可以考虑将给定的数组设计成哈希表的「替代产品」。

2025-04-16 19:04:48 235

原创 Car的旅行路线

又到暑假了,住在城市 A 的 Car 想和朋友一起去城市旅游。她知道每个城市都有 4 个飞机场,分别位于一个矩形的 4 个顶点上,同一个城市中两个机场之间有一条笔直的高速铁路,第 i 个城市中高速铁路的单位里程价格为 Ti​,任意两个不同城市的机场之间均有航线,所有航线单位里程的价格均为 t。:图中并没有标出所有的铁路与航线。那么 Car 应如何安排到城市 B 的路线才能尽可能的节省花费呢?她发现这并不是一个简单的问题,于是她来向你请教。

2025-04-14 18:44:06 344

原创 蓝桥杯2024国B数星星

小明正在一棵树上数星星,这棵树有 n 个结点 1,2,⋯,n。两颗星星不相同当且仅当它们包含的结点集合 VG​ 不完全相同。小明想知道这棵树上有多少颗不同的星星包含的结点的数量在区间 [L,R] 中,答案对 1000000007 取模。

2025-04-12 23:17:30 436

原创 dfs之数字接龙

题目描述:小蓝最近迷上了一款名为《数字接龙》的迷宫游戏,游戏在一个大小为 N×NN×N 的格子棋盘上展开,其中每一个格子处都有着一个 0…K−10…K−1 之间的整数。游戏规则如下:从左上角 (0,0)(0,0) 处出发,目标是到达右下角 (N−1,N−1)(N−1,N−1) 处的格子,每一步可以选择沿着水平/垂直/对角线方向移动到下一个格子。

2025-04-10 21:35:21 807

原创 回溯算法之N皇后问题

n皇后问题属于棋盘问题,皇后的约束条件为:不能同行同列同斜线,以一个二维数组代表棋盘,对于每一行的数组只能存放一个Q, 对于每一列的棋盘只能存放一个Q,对于二维数组中每个元素,其45°或者135°方向不能存在其余的Q。单层搜索的逻辑为:递归深度就是row控制棋盘行,每一层for循环的col控制棋盘的列,每次都是要从新的一行的起始位开始搜索。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。的棋盘上,并且使皇后彼此之间不能相互攻击。如上图所示,4 皇后问题存在两个不同的解法。

2025-04-08 19:14:56 199

原创 kruskal算法之寻宝游戏

首先,从节点1出发,选择1,2节点,1,2节点不在同一个集合内,将1、2节点加入到集合和最小生成树当中,接着将4、5加入到最小生成树和集合当中,以此类推,当遍历节点5、7的时候,5、7节点已经在集合当中,这意味着会出现环,跳过该边,以此类推,就能得到最小的生成树。该图中,将边按照权值进行排序后[(1,2) (4,5) (1,3) (2,6) (3,4) (6,7) (5,7) (1,5) (3,2) (2,4) (5,6)]的顺序为上图。顶点编号是从1到V。例如:V=2,一个有两个顶点,分别是1和2。

2025-04-05 22:59:11 256

原创 prime算法题-寻宝

grid数组内容除了输入的数据,其他全部初始化为10001,代表极大值,minDist数组的元素全部初始化为10001,isInTree的元素全部初始化为false;不同岛屿之间,路途距离不同,国王希望你可以规划建公路的方案,如何可以以最短的总公路距离将 所有岛屿联通起来(注意:这是一个无向图)。遍历节点元素,找到当前尚未加入生成树且距离生产树最近的节点,将其加入最小生成树当中,然后再更新其他元素距离最小生成树的距离。在世界的某个区域,有一些分散的神秘岛屿,每个岛屿上都有一种珍稀的资源或者宝藏。

2025-04-03 23:23:58 314

原创 【C语言】PTA3-2*** 有重复的数据

问题描述:在一大堆数据中找出重复的是一件经常要做的事情。现在,我们要处理许多整数,在这些整数中,可能存在重复的数据。你要写一个程序来做这件事情,读入数据,检查是否有重复的数据。如果有,输出“YES”这三个字母;如果没有,则输出“NO”。

2023-12-23 23:25:19 1091 1

原创 【c语言】另类堆栈

其中Stack结构定义如下:/* 存储元素的数组 */ Position Top;/* 栈顶指针 */ int MaxSize;/* 堆栈最大容量 */ };注意:如果堆栈已满,Push函数必须输出“Stack Full”并且返回false;如果队列是空的,则Pop函数必须输出“Stack Empty”,并且返回ERROR。

2023-12-21 10:36:42 555

原创 【java】PTA7-2 计算m到n之间所有素数的和。

问题描述:计算m到n之间所有素数的和,其中 2 <= m <=n <=100。

2023-12-19 18:47:01 810

原创 【c语言】PTA7-6 求1+2+...+n的和

问题描述:输入一个正整数n(假设 n<=100),求1+2+...+n的和,并输出相应的运算表达式。

2023-12-15 09:25:09 413

原创 【JAVA】PTA7-1 统计各类字符个数

问题描述:分别统计一个字符串中出现小写字母、大写字母、数字和空格的个数。

2023-12-12 18:43:55 727

原创 6-1 查找子串(BF算法)

问题描述:C语言标准函数库中包括 strstr 函数,在主串中查找子串。作为练习,我们自己编写一个功能与之相同的函数。

2023-12-09 23:51:24 342

原创 【java】7-2 除去自身的最大因数

问题描述:输入一个整数,计算该整数除去自身的最大因数。

2023-12-07 23:04:13 296

原创 【JAVA】7-4 输出鞍点的行列下标

问题描述:一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。本题要求编写程序,求一个给定的n阶方阵的鞍点的行列值。

2023-12-05 23:49:31 153 1

原创 【C语言】PTA7-3矩阵对角线互换

本题目要求读入1个n×n的矩阵A,然后输出该矩阵正对角线与反对角线互换后的矩阵。

2023-12-02 19:06:55 1030

原创 【JAVA】7-5成绩统计

问题描述:编写程序,输入一批学生的成绩,遇负数表示输入结束,要求统计并输出各等级成绩的学生个数。成绩等级分为三级,分别为A(90~100)、P(60~89)、F(0~59)。

2023-11-30 12:49:31 603

原创 C语言 PTA 6-1 字符串比较

其中ab是用户传入的参数。函数比较两个字符串,如果ab,则返回值0;如果ab,则返回值1;如果ab,则返回-1。

2023-11-25 22:27:19 547

原创 JAVA PTA7-5 字符串排序

问题描述:本题要求编写程序,读入5个字符串,按由小到大的顺序输出。

2023-11-23 12:45:19 105

原创 JAVA PTA7-6 找出重复签到的学生

问题描述:找出签到数据中重复签到的同学。

2023-11-20 22:29:33 160 1

原创 C语言 PTA7-2 找出一个字符串中出现次数最多的一个字符

题目描述:7-2 找出一个字符串中出现次数最多的一个字符分数 15入门全屏浏览题目切换布局作者 陈英单位 南昌航空大学找出一个字符串中出现次数最多的一个字符。

2023-11-18 11:32:17 2125 1

原创 【JAVA】PTA7-1打印杨辉三角

问题描述:求杨辉三角的前n行数据。

2023-11-15 20:35:22 911

原创 JAVA PTA 7-1 吃火锅

问题描述:本题要求你实现一个程序,自动检查你朋友给你发来的信息里有没有。

2023-11-13 12:50:13 199

原创 【JAVA】PTA 7-4找出最小值

问题描述:本题要求编写程序,找出给定一系列整数中的最小值。

2023-11-11 00:06:56 254 1

原创 【java】PTA7-3 高空坠球

问题描述:皮球从某给定高度自由落下,触地后反弹到原高度的一半,再落下,再反弹,……,如此反复。问皮球在第n次落地时,在空中一共经过多少距离?第n次反弹的高度是多少?

2023-11-07 19:35:29 196

空空如也

空空如也

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

TA关注的人

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