- 博客(43)
- 收藏
- 关注
原创 暴力枚举--涂条纹
现有一个棋盘状的布,分成了 N 行 M 列的格子,每个格子是白色蓝色红色之一,小 a 希望把这个布改成合法图案,方法是在一些格子上涂颜料,盖住之前的颜色。只要一个由 N×M 个小方块组成的旗帜符合如下规则,就是合法的图案。小 A 很懒,希望涂最少的格子,使这块布成为一个合法的图案。接下来 N 行是一个矩阵,矩阵的每一个小方块是。对于 100% 的数据,N,M≤50。一个整数,表示至少需要涂多少块。第一行是两个整数 N,M。一共需要改 11 个格子。
2024-04-03 21:11:13
372
2
原创 暴力枚举--组合的输出
排列与组合是常用的数学方法,其中组合就是从 n 个元素中抽出 r 个元素(不分顺序且 r≤n),我们可以简单地将 n 个元素理解为自然数 1,2,…,n,从中任取 r 个数。所有的组合,每一个组合占一行且其中的元素按由小到大的顺序排列,每个元素占三个字符的位置,所有的组合也按字典顺序。一行两个自然数 n,r(1
2024-03-30 22:14:37
219
原创 暴力枚举--烤鸡
猪猪 Hanke 特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke 吃鸡很特别,为什么特别呢?因为他有 10 种配料(芥末、孜然等),每种配料可以放 1 到 3 克,任意烤鸡的美味程度为所有配料质量之和。现在, Hanke 想要知道,如果给你一个美味程度 n ,请输出这 10 种配料的所有搭配方案。第二行至结束,10 个数,表示每种配料所放的质量,按字典序排列。如果没有符合要求的方法,就只要在第一行输出一个 0。对于 100% 的数据,n≤5000。一个正整数 n,表示美味程度。
2024-03-29 20:41:11
396
1
原创 暴力枚举--统计方形(数据加强版)
题解分析:(n - i)*(m - j)//这里解释一下是什么意思:假如i为1,j为0,那么n - 1,就是将相邻方格两个方格看作一组,那么横向从左到右有n - 1组,j - 0即列方向上还是有m个方格,那么此时n*m个方格中有(n-1)*j 个2*1 的方格组。以此类推,通过i和j的不断变化实现方格组的变化,并且当i = j时,方格组是正方形。有一个 n×m 方格的棋盘,求其方格包含多少正方形、长方形(不包含正方形)。一行,两个正整数,分别表示方格包含多少正方形、长方形(不包含正方形)。
2024-03-28 21:21:19
296
原创 Java乘法表
append(**)//添加,括号内可写各种数据类型,该方法会将括号内自动转为字符串。请注意,乘法表中两个数相乘的顺序必须为样例中所示的顺序,不能随意交换两个乘数。九九乘法表是学习乘法时必须要掌握的。在不同进制数下,需要不同的乘法表。输出 P 进制下的乘法表。P 进制中大于等于 10 的数字用大写字母。给定 P,请输出 P 进制下的乘法表。reverse()可以实现字符串倒序。对于所有评测数据, 2≤P≤36。
2024-03-25 21:52:20
253
原创 Java时间显示
输出时分秒表示的当前时间, 格式形如 HH:MM:SS, 其中 HH 表示时, 值 为 0 到 23,MM 表示分,值为 0 到 59。在服务器上,朋友已经获取了当前的时间,用一个整数表示,值为从 1970 年 1 月 1 日 00:00:00 到当前时刻经过的毫秒数。现在,小蓝要在客户端显示出这个时间。小蓝不用显示出年月日,只需要 显示出时分秒即可,毫秒也不用显示,直接舍去即可。对于所有评测用例, 给定的时间为不超过 10^18 的正整数。给定一个用整数表示的时间,请将这个时间对应的时分秒输出。
2024-03-25 21:01:53
380
原创 Java螺旋折线
题解分析:题解中将螺旋折线分为两个部分,以y=-x为分界线,右上侧的点以y=x线上的点为基准进行加减运算;对于整点 (X,Y),我们定义它到原点的距离dis(X,Y) 是从原点到 (X,Y) 的螺旋折线段的长度。给出整点坐标 (X,Y),你能计算出 dis(X,Y) 吗?例如 dis(0,1)=3,dis(−2,−1)=9。对于 70% 的数据,−10^5≤X,Y≤10^5。对于 100%的数据,−10^9≤X,Y≤10^9。对于 40%的数据,−1000≤X,Y≤1000。输出 dis(X,Y)
2024-03-24 20:54:02
278
原创 动态规划--走方格
题解分析:与之前的那个机器人的题目一样,不过这个题加了一个条件,如果行数和列数都是偶数则不能走,那么到达此点的方案数为dp[i][j] = 0。这些点的编号就像二维数组的编号一样,从上到下依次为第 1至第 n 行,从左到右依次为第 1至第 m 列,每一个点可以用行号和列号来表示。现在有个人站在第 1行第 1 列,要走到第 n 行第 m 列。只能向右或者向下走。注意,如果行号和列数都是偶数,不能走入这一格中。输入一行包含两个整数 n,m。在平面上有一些二维的点阵。输出一个整数,表示答案。
2024-03-23 20:52:31
210
原创 Java完全平方数
因此完全平方数一定可以被分解为若干素数相乘,因此我们可以将n也分解为若干素数相乘,其中质因子的指数为奇数的相乘便是所求x,n*x相当于x把n中指数为奇数的质因子补为偶数。一个整数 a 是一个完全平方数,是指它是某一个整数的平方,即存在一个 整数 b,使得 a=b^2。给定一个正整数 n,请找到最小的正整数 x,使得它们的乘积是一个完全平方数。对于 60% 的评测用例,1≤n≤10^8,答案不超过 10^8。对于所有评测用例,1≤n≤10^12,答案不超过 10^12。输出找到的最小的正整数 x。
2024-03-23 20:26:26
329
原创 枚举--四平方和
题解分析:首先解释一下联合主键升序排列的含义,即abcd四个数的字典序最小,如0112和0122进行比较时两者第一,第二位都相同,那么看第三位显然1的字典序更小,因此0112比0122要更小,从这我们可以得到在求abcd的值时应该保证靠前的数要尽可能的小。题解中为了降低时间复杂度,只枚举abc三个数的值,而d的值通过n与abc计算得到,如果d是整数那么满足题意得到结果(循环保证了里层的数一定是大于外层数的)并对所有的可能表示法按 a,b,c,d 为联合主键升序排列,最后输出第一个表示法。
2024-03-21 20:41:56
236
原创 枚举--日期问题
小明知道这些日期都在 1960 年 1 月 1 日至 2059 年 12 月 31 日。令小明头疼的是,这些日期采用的格式非常不统一,有采用。,可能是 2002 年 03 月 04 日、2004 年 02 月 03 日或 2004 年 03 月 02 日。更加麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在很多可能的日期与其对应。给出一个文献上的日期,你能帮助小明判断有哪些可能的日期对其对应吗?这道题用java的日期类真是太太太方便了!输出若干个不相同的日期,每个日期一行,格式是。
2024-03-21 16:54:52
200
原创 最大公约数gcd--等差数列
计算两个数的最大公因数,在计算数组的最大公因数时可以先将第一个数作为最大公因数d,之后不断计算d与其他数的最大公因数并更新d。第二行包含 N 个整数 A1,A2,⋯,AN。(注意 A1∼AN 并不一定是按等差数列中的顺序给出 )。数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列,只记得其中 N 个整数。现在给出这 N 个整数,小明想知道包含这 N 个整数的最短的等差数列有几项?对于所有评测用例,2≤N≤10^5,0≤Ai≤10^9。输入的第一行包含一个整数 N。
2024-03-20 20:50:01
235
原创 前缀和--k倍区间
即x mod k == y mod k,则有|x - y| mod k == 0,因此如果我们找到前缀和数组求余后两个相同的余数,那么这两个前缀和中间的部分即为所求区间,如果有n个前缀和余数相同,那么就构成了n*(n-1)/2个区间。给定一个长度为 N 的数列,A1,A2,⋯AN,如果其中一段连续的子序列 Ai,Ai+1,⋯Aj(i≤j) 之和是 K 的倍数,我们就称这个区间 [i,j] 是 K 倍区间。第一行包含两个整数 N 和 K(1≤N,K≤10^5)。数据量大的地方一定要用long!
2024-03-18 21:48:30
215
原创 暴力/动态规划--有奖问答
小蓝可以在任意时刻结束答题并获得目前分数对应的奖项,之后不能再答任何题目。最高奖项需要 100分,所以到达 100 分时小蓝会直接停止答题。小蓝正在参与一个现场问答的节目。活动中一共有 30 道题目,每题只有答对和答错两种情况,每答对一题得 10 分,答错一题分数归零。已知小蓝最终实际获得了 70分对应的奖项,请问小蓝所有可能的答题情况有多少种?
2024-03-17 16:10:25
162
原创 Java平方差
题目分析:由数学公式可知y^2 - z^2 = (y+z)(y-z),那么可以将x = y^2 - z^2写做x = a*b且a,b的奇偶性相同,那么可知如果x可以被分解为奇偶性相同的两个数,则x一定满足题意。当x为奇数时可以被分解为1和x,两个都是奇数,因此所有奇数满足题意;若要将x分解为两个偶数的乘积,那么x定为4的倍数。给定 L,R,问 L≤x≤R 中有多少个数 x 满足存在整数 y,z 使得 x=y^2−z^2。对于 40% 的评测用例L,R≤5000;对于所有评测用例,1≤L≤R≤10^9。
2024-03-15 20:19:46
255
原创 动态规划--砝码称重
我们假设此时有个重量j,那么dp[j]是否为1,一定是取决于dp[j - arr[i]]是否为1,只有dp[j - arr[i]]这个重量是存在的,那么才有放置arr[i]后j重量的出现,这里现在的状态取决于之前的状态体现了动态规划的思想。同理,放在不同侧时,若未放砝码arr[i]时质量dp[j + arr[i]] == 1,则dp[j] = 1.1=1,2=6−4( 天平一边放 6, 另一边放 4) ,3=4−1,4=4,5=6−1,6=6,7=1+6,9=4+6−1,10=4+6,11=1+4+6。
2024-03-13 13:01:36
969
原创 动态规划--采药
题解分析:一维dp数组的原理是每次都使用上一个dp数组,例如在i = 1时,即对第一个草药进行从1到t的各个时间的dp数组初始化,而在i = 2时,dp数组中的值在更新时依然借助了i = 1时的旧值进行计算,即滚动数组的原理。dp[ j - time[i] ] + value[i]为采摘草药i后的价值,如果采摘草药i的价值比没采摘的价值更大,那么就对数组进行更新,相当于将草药i采摘了。在采摘第一个草药时应该借助于采摘第0个草药时的dp数组,其实就是还未采摘那么dp数组自然是为0,因此dp数组初始化为0.
2024-03-12 20:30:01
336
原创 Java完全二叉树的权值
总结:在计算对数时可以使用Math.log(double n)进行计算,方法默认以e为底计算n的对数,因此在此题中想要计算以2为底n的对数可以采用公式:log(n) / log(2)进行计算。现在小明要把相同深度的节点的权值加在一起,他想知道哪个深度的节点权值之和最大?如果有多个深度的权值和同为最大,请你输出其中最小的深度。对于所有评测用例,1≤N≤10^5,0≤∣Ai∣≤10^5。第二行包含 N 个整数 A1,A2,⋯,AN。第一行包含一个整数 N。注:根的深度是 11。输出一个整数代表答案。
2024-03-09 10:55:46
242
原创 Java航班时间
仔细观察后发现飞机的起降时间都是当地时间。由于北京和美国东部有 1212 小时时差,故飞机总共需要 1414 小时的飞行时间。但是小 h 得到了女朋友来回航班的起降时间。小 h 的女朋友发现小 h 上午十点出发,上午十二点到达美国,于是感叹到“现在飞机飞得真快,两小时就能到美国了”。对于一个可能跨时区的航班,给定来回程的起降时间。假设飞机来回飞行时间相同,求飞机的飞行时间。每组数据包含两行,第一行为去程的起降时间,第二行为回程的起降时间。保证输入时间合法,飞行时间不超过 2424 小时。
2024-03-07 21:33:48
453
原创 Java求和
题目分析:S= a1*a2 + a1*a3 +·..+ a1*an + a2*a3+·.·+ an-2*an-1+ an-2*an+ an-1*an将有共同前缀的部分写到一起有S = a1*(a2+a3+…an) + a2*(a3+a4+…+ an-1*an,因此解题的关键在于前缀和的计算,为了降低时间复杂度题解中采用从后往前计算前缀和,每次求和只需要加上新的元素即可。给定 n 个整数 a1,a2,··,an,求它们两两相乘再相加的和,即。第二行包含几 个整数 a1, a2,···an。
2024-03-07 16:15:20
200
原创 二分答案--分巧克力
题目描述儿童节那天有 Ⅸ 位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。小明一共有 N 块巧克力,其中第i块是 Hi,Wi的方格组成的长方形。为了公平起见,小明需要从这 N 块巧克力中切出 K 块巧克力分给小朋友们。切出的巧克力需要满足:1.形状是正方形,边长是整数。2.大小相同。例如一块6x5的巧克力可以切出6块2x2的巧克力或者2块3x3的巧克力,当然小朋友们都希望得到的巧克力尽可能大,你能帮小 ,计算出最大的边长是多少么。输入格式第一行包含两个整数 N 和 K。
2024-03-05 21:28:57
193
原创 二分答案--爱吃香蕉的珂珂
解题思路:题解采用二分答案算法,首先应该找到吃香蕉速度的范围,显然最小是1,最大应该是数组中的最大值。二分答案即在此范围中不断进行二分,以中间值作为答案看是否满足条件,因此需要一个方法进行判断此时的速度是否能够顺利吃完香蕉,如果可以将速度保存到ans,在左侧二分,如果不行则说明速度太小,在右侧继续二分。根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。(单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉。珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。珂珂可以决定她吃香蕉的速度。
2024-03-05 20:04:10
244
原创 Java冶炼金属
[蓝桥杯 2023 省 B] 冶炼金属## 题目描述小蓝有一个神奇的炉子用于将普通金属 O 冶炼成为一种特殊金属 X。这个炉子有一个称作转换率的属性 $V$,$V$ 是一个正整数,这意味着消耗 $V$ 个普通金属 O 恰好可以冶炼出一个特殊金属 X,当普通金属 O 的数目不足 $V$ 时,无法继续冶炼。现在给出了 $N$ 条冶炼记录,每条记录中包含两个整数 $A$ 和 $B$,这表示本次投入了 $A$ 个普通金属 O,最终冶炼出了 $B$ 个特殊金属 X。
2024-03-03 16:34:29
838
原创 枚举--带分数
100$ 可以表示为带分数的形式:$100 = 3 + \frac{69258}{714}$。程序输出数字 $N$ 用数码 $1$ ~ $9$ 不重复不遗漏地组成带分数表示的全部种数。注意特征:带分数中,数字 $1$ ~ $9$ 分别出现且只出现一次(不包含 $0$)。还可以表示为:$100 = 82 + \frac{3546}{197}$。类似这样的带分数,$100$ 有 $11$ 种表示法。### 样例输入 #1。### 样例输出 #1。### 样例输入 #2。### 样例输出 #2。
2024-02-28 22:37:30
196
原创 java翻硬币
解题思路:本题解使用贪心算法,如果同一个硬币被翻两次,那么它的状态还是和初始时一样,因此要想求翻转次数最少的情况,就需要保证每一个硬币的翻转次数都是最少的,显然翻转次数应该
2024-02-26 22:14:11
232
1
原创 动态规划--不同的二叉搜索树
题目分析: 当n为3时的5种情况分别为1,2,3为根节点,其中1为根节点时右子树是n为2时的二叉搜索树的两种情况,2为根节点时左右子树均是n为1时的二叉搜索树,3为根节点时右子树是n为2时的二叉搜索树的两种情况。因此 有3个节点的二叉搜索树的种数 = 头节点为1时的种数 + 头节点为2时的种数 + 头节点为3时的种数;:dp数组是不同的二叉搜索树的种数数组,其中dp[i]表示n为i时有dp[i]个不同的二叉搜索树。:dp[0] = 1,dp[1] = 1,dp[2] = 2(如果n >= 2)
2024-02-06 22:12:44
252
1
原创 动态规划--整数拆分
题目所求为n被拆分后的最大乘积,可以得知dp数组应为整数被拆分后的最大乘积,dp[i]即整数i被拆分后能够表示的最大乘积为dp[i];:只需要初始化最小的n即2,dp[2] = 1;),并使这些整数的乘积最大化。:用于debug自查代码。你可以获得的最大乘积。
2024-02-02 21:18:11
238
原创 动态规划--不同路径2
题目分析:这道题与不同路径类似,需要另外考虑的是关于障碍物的处理,显然机器人无法到达障碍物,因此障碍物处的路径为0。需要注意的是当起始点或终点处有障碍物时,结果显然直接为0。:与 不同路径 题目不同的是,在初始化最上一行和最左一列时需要注意如果遇到障碍物那么其后的点将无法到达。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。:dp数组为二维数组,表示网格各处的路径数;dp[i][j]表示网格中下标为i,j处的路径数。:障碍物所在处的路径数为0,因此只需要考虑无障碍处的路径数。
2024-02-02 12:34:49
324
原创 动态规划--不同路径
由递推公式可知,某个位置的路径数取决于其上和其左位置的路径数,而最左侧一列和最上方一行都不符合递推公式,因此应将这些位置初始化为1(机器人只能向下或向右走)题目分析:机器人只能向下或向右走,要到达i,j处机器人只能由i-1,j或i,j-1处走来,因此我们可以分析得到,该题的dp数组应该为到达i,j处的路径数。:dp数组为二维数组,表示到达各处的路径数,dp[i][j]表示到达横纵坐标分别为i和j处的路径数。:显然已知的dp在上和在左,因此遍历顺序为从左往右,从上往下。用于debug自查代码。
2024-02-01 22:26:06
286
1
原创 动态规划--使用最小花费爬楼梯
题目分析:例如cost[1]是从第1个台阶往上爬需要支付的费用,其中需要注意的是站在这个台阶上时不需要支付费用,一旦要从此台阶往上爬就需要支付cost[1];和 爬楼梯 题目相似,如果我们要想要知道要上到下标为i的楼顶上所需要最小费用,那么i-1和i-2所需要的最小费用必须已知。//因为题目中表示0和1都可以作为起始点,而到达起始点是不需要花费的。:dp数组是最小花费数组,其中dp[i]是到达下标为i的楼梯作为顶楼时的最小花费。- 支付 15 ,向上爬两个台阶,到达楼梯顶部。你将从下标为 1 的台阶开始。
2024-02-01 17:00:12
155
1
原创 动态规划--爬楼梯
这道题的难点是递推公式,首先假如有1阶台阶,那么显然此时有1种爬楼方法;假如有3阶台阶,那么在爬楼时只有两种情况:一是从第二阶到第三阶,二是从第一阶跨两级到第三阶,因此3阶台阶的方法种数就是1阶方法种数+2阶方法种数;同理,假如有4阶台阶,那么方法种数即3阶方法种数+2阶方法种数…1.dp数组以及下表的含义:dp数组即有i阶台阶的爬楼方法种数dp[i],其下标i即楼梯的台阶数;3.dp数组如何初始化:1阶台阶方法种数dp[1] = 1,2阶台阶方法种数dp[2] = 2;
2024-01-31 21:29:00
120
原创 动态规划--斐波那契数列
该题目递推公式题目以及给出即dp[n] = dp[n - 1]+dp[n - 2]F(n) = F(n - 1) + F(n - 2),其中 n > 1。:在该题目中dp数组显然是斐波那契数列,下标i即数字i对应的斐波那契数。:显然斐波那契数列的遍历顺序是从前往后的0 1 1 2 3 5 8…:题目中已经给出初始化即dp[0] = 0,dp[1] = 1。开始,后面的每一项数字都是前面两项数字的和。:这一步用于debug时自查代码。表示)形成的序列称为。
2024-01-31 17:59:37
371
原创 Java阶乘求和
显然是不是该题目的正确解法,因此我们应该寻找能够简化计算的方法,可以先从阶数较小的数字中寻求规律,例如:在计算1到6的阶乘之和时,我们可以发现5!=120,那么在此之后不论是哪个数字的阶乘,它的个位数一定是0。的过程中,一定有某个数字的阶乘后9位均为0,此时我们只需要计算这个数字往前的阶乘之和。此外,需要注意的是,在计算阶乘的过程中要不断对阶乘取1000000000的余数,这样才能避免因计算过程中数字太大而导致的错误数据。本题的结果为一个整数,在提交答案时只填写这个整数。,求S的末尾9位数字。
2024-01-17 18:40:33
378
原创 Java幸运数字
126 也是八进制下的哈沙德数,因为(126)10 =(176)8,(126)10 mod(1+7+6) = 0;同时 126 也是 16 进制下的哈沙德数,因为(126)10 =(7e)16(126)10 mod (7 +e) = 0。小蓝认为,如果 个整数在二进制、八进制、十进制、十六进制下均为哈沙德数,那么这个数字就是幸运数字,第 1至第 10 个幸运数字的十进制表示为:1,2,4,6,8,40,48,72,120,126...。这是一道结果填空的题,你只需要算出结果后提交即可。
2024-01-15 21:46:24
395
1
原创 Java特殊日期
对于一个日期,我们可以计算出年份的各个数位上的数字之和,也可以分别计算月和日的各位数字之和。请问从1900年1月1日至9999年12月31日,总共有多少天,年份的数位数字之和等于月的数位数字之和加日的数位数字之和。这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。例如,2022年11月13日满足要求,因为2+0+2+2=(1+1)+(1 +3)。题解1:使用LocalDate类。请提交满足条件的日期的总数量。两个题解均使用枚举法。
2024-01-14 18:37:23
363
1
原创 Java答疑
假设有A,B两位同学,A同学所用时间为a1,a2(a1为进入办公室和解题时间之和),B所用时间为b1,b2。若A先进教室,所用时间sum = a1+(a1+a2+b1),若B先进教室sum = b1+(b1+b2+a1),由两式可知是A还是B先进教室取决于a1+a2和b1+b2,因此在本题题解中,在使用排序时就应该以一个同学的问题总时间为比较的标准进行排序。1首先进入办公室,编号为的同学需要 s,毫秒的时间2.然后同学问问题老师解答,编号为的同学需要 a;接下来n行,描述每位同学的时间。
2024-01-12 22:25:20
310
1
原创 Java平行四边形面积
输出一个数,表示平行四边形的面积。如果面积为整数,请直接输出这个整数,不带小数点。如果面积不是整数,请四舍五入保留正好一位小数。输入的第一行包含一个整数,表示平行四边形的底边长度第二行包含一个整数h,表示平行四边形的高。其中,1
2024-01-11 21:45:33
712
1
原创 Java删除字符
这道题目使用了贪心算法,要保证删除t个字母后得到的字典序最小,就得保证单词中越是靠前的字母ascll码越小,比如字符串“bad”,如果删除了“b”,字符串变为“ad”;显然前者的字典序更小,那么在每一次删除字母的过程中,如果保证每次都是删除靠前的并且ascll码较大的字母,就能保证最后得到的单词的字典序最小——贪心算法。此外,需要注意的是,在编写代码过程中要考虑一些特殊情况,如果剩余的单词已经变成了越靠前ascll码越小的状况,在删除次数还未达到t时要从后往前删字母来减小字典序。输出一个单词,表示答案。
2024-01-10 21:58:24
340
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人