- 博客(21)
- 收藏
- 关注
原创 递归递推问题(DP?)
有1×n的一个长方形,用一个1×1、1×2和1×3的骨牌铺满方格。例如当n=3时为1×3的方格。此时用1×1、1×2和1×3的骨牌铺满方格,共有四种铺法。输入输入整数n输出输出铺法总数样例输入3样例输出4提示n <= 40。
2024-08-04 21:26:46
768
原创 王鹏爬泰山
泰山有好多好多的台阶,然后呢,他可以一步爬两个台阶或者一步一个台阶,那么他爬个山可以有几种方式呢?举个栗子,如果有两级台阶,那么他就有两种方式:第一种就是一步一个台阶,第二种就是biu的一下一步两个台阶。对于i > 2的台阶,可以从第i-1个台阶爬1个台阶上来,或者从第i-2个台阶爬2个台阶上来。输入包括许多测试用例,每一行都是一个整数N(N <= 40)的测试用例,N是泰山的楼梯台阶数。爬到第2个台阶有2种方法(即分别爬1个台阶两次,或者一次爬2个台阶)。爬到第1个台阶只有1种方法(即直接爬1个台阶)。
2024-07-28 23:59:16
213
原创 高精度问题
题目描述用高精度方法,求N!的精确值(N以一般整数输入)。输入输入一个整数n( 1<= n <= 350)输出输出n!样例输入10样例输出3628800思路题目最大要求350!,因此基本的数据类型都会溢出,选择高精度算法,利用数组来存一个数的各个位数,最后输出即可。代码。
2024-07-26 13:55:13
610
原创 吃糖果问题
HOHO,终于从Speakless手上赢走了所有的糖果,是Gardon吃糖果时有个特殊的癖好,就是不喜欢将一样的糖果放在一起吃,喜欢先吃一种,下一次吃另一种,这样;本题为典型的鸽巢原理问题,n种糖果个数的最大值max视为鸽子,其余糖果为隔板,至少需要max-1个隔板,糖果总个数为s;第一行有一个整数T,接下来T组数据,每组数据占2行,第一行是一个整数N(0<N<=1000000),第二行是N个数,表示N种糖果的数目Mi(0<Mi<=1000000)。对于每组数据,输出一行,包含一个"Yes"或者"No"。
2024-07-25 21:53:08
127
原创 Fibonacci Again(斐波那契)
递归与递推均超时,由手算可知斐波那契数列%3的余数有规律,每8个1循环,故只需计算0~7的F(n)值,由F(n%8)可得余数,判断是否可被3整除。还有另一类斐波那契数:F(0) = 7, F(1) = 11, F(n) = F(n-1) + F(n-2) (n>=2)。输入由一系列行组成,每行包含一个整数n (n < 1,000,000)。如果F(n)可被3整除,打印单词“yes”。如果不是,打印单词“no”。
2024-07-25 21:08:56
164
原创 Number Sequence(数字序列)
对于任意1个整数n,mod7的结果均在0~6之间,共7个值,因为题目有A、B两个参数,由排列组合可得,共7×7=49种排列方式,即f(n)%7每49一循环。故只需算1<=n<=49的f(n)的值,求f(n%49)的值。数列定义如下:f(1) = 1, f(2) = 1, f(n) = (A* f(n - 1) + B * f(n - 2)) mod 7。每个测试用例在一行中包含3个整数A、B和n (1 <=A,B <= 1000, 1 <= n <= 100,000,000)。输入由多个测试用例组成。
2024-07-25 20:50:45
329
原创 求佩尔方程的解
先输入组数t,对于每组数据,先输入正整数n,对于给定的二次不定方程,不难看出,x=sqrt(1+n*n),从1到10000枚举所有可能的y值,如果x * x - n * y * y=1,那么找到所求的y值,退出循环。
2024-07-22 17:46:15
102
原创 n个1问题
此题要考虑时间超限的情况,先输入整数t,表示有t组测试数据,对于每组测试数据,先输入1个整数k,如果k=1,那么由1个1组成的整数1就能被k整除,即n=1;如果k不为1,先假设只有1个1,即n=1,组成的数m=1,利用while循环判断每次m%k的余数是否为0,如果为0,能被k整除,满足题意,退出循环;如果不为0,那么更新1的位数n与组成的数m,继续循环。
2024-07-22 17:07:25
220
原创 士兵站队问题
要求步数sum最小,故取所有士兵纵坐标的中位数y0(将所有纵坐标排序,取下标为n/2的纵坐标),对于每个纵坐标,移动的步数为|y-y0|,循环计算所有士兵所需步数总和,sum+=|y-y0|。横坐标步数总和为|x1-x0|+|x2-x0-1|+……+|(xn-1)-x0|;,xn-1的中位数时,步数总和最小,故令在[0,n-1]内的所有xi-i,更新每个x,找x数列的中位数x0(对x排序,取下标为n/2的x),对于每个x,移动的步数为|x-x0|,循环计算所有士兵所需步数总和,sum+=|x-x0|。
2024-07-22 14:53:55
346
原创 第K小整数
如果k>=n,则所求的正整数不在数组内,输出“NO RESULT”,否则输出下标为k-1的元素。先定义一个数组,把n个数先存入数组,然后对数组中的元素进行排序,去重,同时。
2024-07-22 12:59:28
222
原创 时间复杂度样例
3.外循环k遍历n次,对于每次循环,t都变为t的2倍,内层循环从1迭代到t,因此,当k=1,内层循环迭代2次,即2 ^ 1;即,O(2 ^ n)……5.外循环k遍历n次,对于每次循环t都变为t的2倍,内层循环从t遍历到n,当k=1时,t=2,内层循环从2循环到n,迭代n-1次。当k=2时,t=4,内层循环从4循环到n,迭代n-3次,总时间复杂度为n^2-1-3-5-……+n,计算等差数列,和为n(n+1)/2,即O(n^2)6.外循环k遍历n次,内循环j遍历n次,总时间复杂度为n x n,即O(n^2)
2024-07-20 21:16:20
116
原创 AcWing 3549.最长非递减子序列
输入2:s2的长度等于(s1长度+连续2的长度),最坏情况下只有1个2,此时s2=s1+1,如果不是最坏情况,s2=s2+1;s4的长度等于(s3长度+连续2的长度),最坏情况下只有1个2,此时s4=s3+1,如果不是最坏情况,s4=s4+1。输入1:s1=s1+1;s3的长度等于(s2长度+连续1的长度),最坏情况下只有1个1,此时s3=s2+1,如果不是最坏情况,s3=s3+1。分别求s1长度,s1+s2长度,s1+s2+s3长度,s1+s2+s3+s4长度的最大值。
2024-07-05 20:10:45
144
原创 AcWing 5386.进水出水问题
DP状态表示f(i,j),i表示以i结尾,j表示差值;集合:所有以i结尾的且进水总速度-出水总速度=j的所有方案的集合;(3)i前有其他水管,i作为出水口;分为两部分:前i-1项f(i-1,j-a[i])与第i项;(4)i前有其他水管,i作为进出口;分为两部分:前i-1项f(i-1,j+a[i])与第i项;思路:时间复杂度O(logn)以内,用DP求解。(2)i前没有水管,i作为进水口;(1)i前没有水管,i作为出水口;DP状态计算:分4种情况(集合划分)
2024-05-23 19:44:02
153
1
原创 AcWing 5385.餐厅
思路:因为数据范围较大,所以需将时间复杂度控制在O(nlogn)以内,同时long long,已知q波客人,故每波客人的时间复杂度控制在O(logn),记录所到客人总数sum,统计每波客人后的客人总数,如果sum>=座位数,赶走客人,换下一波,sum=0,此时未坐满客人的桌子总数为n;如果sum
2024-05-23 16:50:59
183
1
原创 AcWing 3577.选择数字
因为题目要求输出一个数对,且答案不唯一,合理即可;故我们取两数组的最大值,显然,这对数满足题意,它们的和不属于任何一个数组(转化思维)思路:题目要求在a,b数组里各取一个元素,使得两元素之和不是a,b数组的元素。
2024-05-19 21:49:12
187
1
原创 AcWing 3548.双端队列
不一定要创建队列,操作?可以看作从左或从右弹出的最小数字数,而且题目规定并不是真的要弹出数字,所以只要确定他们在队列中的顺序(存下标)即可。
2024-05-18 18:08:33
190
原创 AcWing 3545.寻找奇特的数
利用两个指针l,r,l指向遍历的最小元素1,r指向遍历的最大元素n,循环体中先利用for循环枚举左指针的值(1<=l<=n),如果左右指针l*r的值大于m,则减小右指针,直到l*r乘积为m,计数。从1到n枚举所有数,如果它是m的因子并且m整除它的商<=n,计数。
2024-05-17 18:20:16
157
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人