- 博客(126)
- 收藏
- 关注
原创 【基础】龟兔赛跑
兔子又来找乌龟赛跑啦!同样的错误兔子不会犯两次,所以兔子提出赛跑的时候,乌龟就觉得这场比赛很 不公平。于是兔子进一步放宽了条件,表示他可以在比 赛开始以后先睡 t 分钟再开始追乌龟。乌龟这下没办法确定比赛到底公平不公平了,所以请你来帮忙。假设乌龟每分钟可以跑 x 米,兔子每分钟跑 y 米 (x < y)。他希望你计算最大的整数赛跑距离(米),满足乌龟能在兔子先睡 t 分钟的前提下,比兔子更早或同时到达终点。
2024-10-26 12:00:34
418
原创 【入门】猜数游戏
有一个“就是它”的猜数游戏,步骤如下:请你对任意输入的一个三位数x,在这三位数后重复一遍,得到一个六位数,467-->467467.把这个数连续除以7、11、13,输出最后的商。
2024-09-14 13:56:02
419
原创 [普及][NOIP2002 普及组] 过河卒
棋盘上 �A 点有一个过河卒,需要走到目标 �B 点。卒行走的规则:可以向下、或者向右。同时在棋盘上 �C 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。棋盘用坐标表示,�A 点 (0,0)(0,0)、�B 点 (�,�)(n,m),同样马的位置坐标是需要给出的。现在要求你计算出卒从 �A 点能够到达 �B 点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。
2024-06-16 02:30:00
2095
原创 [NOIP2006 普及组] 数列
给定一个正整数�(3≤�≤15)k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当�=3k=3时,这个序列是:(该序列实际上就是:30,31,30+31,32,30+32,31+32,30+31+32,…30,31,30+31,32,30+32,31+32,30+31+32,…)请你求出这个序列的第�N项的值(用1010进制数表示)。例如,对于�=3k=3,�=100N=100,正确答案应该是981981。
2024-06-16 02:15:00
687
原创 [普及~提高][NOIP2013 提高组] 转圈游戏
�n 个小伙伴(编号从 00 到 �−1n−1)围坐一圈玩游戏。按照顺时针方向给 �n 个位置编号,从 00 到 �−1n−1。最初,第 00 号小伙伴在第 00 号位置,第 11 号小伙伴在第 1 号位置,……,依此类推。
2024-06-15 22:11:11
450
原创 #HT1028. 士兵的生气指数
将军在攻占敌军城堡之前允诺每一位士兵将与他们一起瓜分城堡内的金币,将军的部队里一共有 �n 位士兵,对于第 �(1≤�≤�)i(1≤i≤n) 位士兵,将军允诺他在攻占城堡之后将会给他 ��ai 块金币。后来将军的部队在没有损失一兵一卒的情况下攻占了城堡,并收集到了 �m 块金币。但是将军发现这些金币可能是不够分给这些士兵的(也可能够分)。
2024-06-15 21:53:25
587
原创 #HT1055. 统计相邻字符对
我们总结一下,顺便把前面没说的一些小问题也给说一下。运用类似计数排序的方法统计每个字符串出现次数。定义一个变量maxn,遍历数组,统计字符串最大出现次数。再次遍历数组判断:如果这个数组的数与之前定义的maxn相等,就输出相应的字符串。(不在上一个循环,找到最大之后直接输出,是因为有可能会有多个出现次数相等的字符串)。程序结束。
2024-06-15 21:50:34
321
原创 [NOIP2017 提高组] 逛公园
策策同学特别喜欢逛公园。公园可以看成一张 �N 个点 �M 条边构成的有向图,且没有 自环和重边。其中 11 号点是公园的入口,�N 号点是公园的出口,每条边有一个非负权值, 代表策策经过这条边所要花的时间。策策每天都会去逛公园,他总是从 11 号点进去,从 �N 号点出来。策策喜欢新鲜的事物,它不希望有两天逛公园的路线完全一样,同时策策还是一个 特别热爱学习的好孩子,它不希望每天在逛公园这件事上花费太多的时间。
2024-05-06 17:45:00
931
原创 [NOIP2017 提高组] 宝藏
参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 �n 个深埋在地下的宝藏屋, 也给出了这 �n 个宝藏屋之间可供开发的 �m 条道路和它们的长度。小明决心亲自前往挖掘所有宝藏屋中的宝藏。但是,每个宝藏屋距离地面都很远,也就是说,从地面打通一条到某个宝藏屋的道路是很困难的,而开发宝藏屋之间的道路则相对容易很多。小明的决心感动了考古挖掘的赞助商,赞助商决定免费赞助他打通一条从地面到某个宝藏屋的通道,通往哪个宝藏屋则由小明来决定。在此基础上,小明还需要考虑如何开凿宝藏屋之间的道路。
2024-05-06 17:00:00
1114
原创 [NOIP2015 提高组] 子串
有两个仅包含小写英文字母的字符串 �A 和 �B。现在要从字符串 �A 中取出 �k 个互不重叠的非空子串,然后把这 �k 个子串按照其在字符串 �A 中出现的顺序依次连接起来得到一个新的字符串。请问有多少种方案可以使得这个新串与字符串 �B 相等?注意:子串取出的位置不同也认为是不同的方案。
2024-05-05 18:24:19
1014
原创 [CSP-S2019] 格雷码
综上,n + 1 位格雷码,由 n 位格雷码的 2^n个二进制串按顺序排列再加前缀 0,和按逆序排列再加前缀 1 构成,共 2^{n+1}个二进制串。合并得到:000,001,011,010,110,111,101,100,编号依次为 0 ~ 7。通常,人们习惯将所有 n 位二进制串按照字典序排列,例如所有 2 位二进制串按字典序从小到大排列为:00,01,10,11。3 位格雷码为:000,001,011,010,110,111,101,100,编号从 0∼7,因此 5 号串是 111。
2024-05-03 08:00:00
85
原创 [CSP-J 2022] 逻辑表达式(expr)
逻辑表达式是计算机科学中的重要概念和工具,包含逻辑值、逻辑运算、逻辑运算优先级等内容。在一个逻辑表达式中,元素的值只有两种可能:0 (表示假)和 1 (表示真)。元素之间有多种可能的逻辑运算,本题中只需考虑如下两种:“与”(符号为&)和“或”(符号为|)。其运算规则如下:在一个逻辑表达式中还可能有括号。规定在运算时,括号内的部分先运算;两种运算并列时,& 运算优先于 | 运算;同种运算并列时,从左向右运算。比如,表达式 0|1&0 的运算顺序等同于0|(1&0);
2024-05-03 07:00:00
998
原创 [NOIP1997 普及组] 棋盘问题
设有一个n*m方格的棋盘(1≤m,n≤100)。求出该棋盘中包含多少个正方形、多少个长方形(不包括正方形)。例如:当n=2,m=3时正方形的个数有8个,即边长为1的正方形有6个,边长为2的正方形有2个。长方形的个数有10个:2*1的长方形有4个;1*2的长方形有3个;3*1的长方形有2个;3*2的长方形有1个。
2024-05-02 09:30:00
269
原创 [普及~提高][NOIP2014 普及组] 螺旋矩阵
考虑到它是求第 �i 行第 �j 列的数,其实我们可以只针对第 �j 列的数,进行填数模拟,这样时间复杂度就降到了 �(�)O(n) 了,也不会爆。函数返回的都是 �j,�−�+1n−i+1 这种,没有考虑内层开头就不是 11 了(见图),这是我们通过 4×(�−1)4×(n−1) 计算出下一层的起头,这样就可以了。对于 100%100% 的数据,1⩽�⩽30,0001⩽n⩽30,000,1⩽�⩽�1⩽i⩽n,1⩽�⩽�1⩽j⩽n。函数表示 �×�n×n 的螺旋矩阵中 (�,�)(i,j) 的数字。
2024-05-01 09:15:00
1098
原创 [普及~提高][NOIP2011 普及组] 瑞士轮
其中合并有序区间的函数称之为 �����merge。我们可以胜者进入队列 �A,负者入队 �B。这样A、B自身仍是有序的,直接 �����merge 两个队列。归并的方法是把两个队列的最大比较一下,把更大的先入队,最后把一个剩下的队列里的东西全加进去。
2024-05-01 09:00:00
1016
原创 [普及~提高][NOIP2010 普及组] 导弹拦截
第一行包含 44个整数�1x1、�1y1、�2x2、�2y2,每两个整数之间用一个空格隔开,表示这两套导弹拦截系统的坐标分别为(�1x1,�1y1)、(�2,x2, �2y2)。两个点(�1,�1)(x1,y1)、(�2,�2)(x2,y2)之间距离的平方是(�1−�2)2+(�1−�2)2(x1−x2)2+(y1−y2)2。两套系统工作半径�1,�2r1,r2的平方和,是指�1,�2r1,r2分别取平方后再求和,即�12+�22r12+r22。
2024-04-30 22:58:00
815
原创 [普及~提高][NOIP2012 普及组] 寻宝
每个房间里有一个指示牌,指示牌上有一个数字�x,表示从这个房间开始按逆时针方向选择第xx个有楼梯的房间(假定该房间的编号为k),从该房间上楼,上楼后到达上一层的kk号房间。接下来�×�N×M行,每行两个整数,之间用一个空格隔开,每行描述一个房间内的情况,其中第(�−1)×�+�(i−1)×M+j行表示第�i层�−1j−1号房间的情况(�=1,2,…对于100100数据,有0
2024-04-30 22:54:09
238
原创 [普及~提高][NOIP2006 普及组] Jam 的计数法
在他的计数法中,每个数字的位数都是相同的(使用相同个数的字母),英文字母按原先的顺序,排在前面的字母小于排在它后面的字母。每次,Jam 还指定使用字母的范围,例如,从 2∼102∼10,表示只能使用 �,�,�,�,�,�,ℎ,�,�b,c,d,e,f,g,h,i,j 这些字母。(如果我们用 �U 、 �V 依次表示 Jam 数字 bdfijbdfij 与 bdghibdghi,则 �
2024-04-28 00:00:00
628
原创 [普及][NOIP2003 普及组] 乒乓球
国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。其中 1111 分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役。华华就是其中一位,他退役之后走上了乒乓球研究工作,意图弄明白 1111 分制和 2121 分制对选手的不同影响。在开展他的研究之前,他首先需要对他多年比赛的统计数据进行一些分析,所以需要你的帮忙。
2024-04-27 19:08:36
938
原创 [普及~提高][NOIP2008 普及组] 立体图
小渊有一块面积为�×�m×n的矩形区域,上面有�×�m×n个边长为11的格子,每个格子上堆了一些同样大小的积木(积木的长宽高都是11),小渊想请你打印出这些格子的立体图。接下来的�m行,是一个�×�m×n的矩阵,每行有�n个用空格隔开的整数,其中第�i行第�j列上的整数表示第�i行第�j列的个子上摞有多少个积木(1≤1≤每个格子上的积木数≤100≤100)。画布的宽可以用类似求 �y 的公式求出,因为求 �L 其实和求 �=0,�=�i=0,j=M 时的特殊点差不多,因为这一个位置它的特殊点最靠右。
2024-04-27 18:38:09
755
原创 #1394. [普及][NOIP2016 普及组] 海港
��,�xi,1,xi,2,…第三艘船在第1010秒到达海港,最近2424小时到达的船是第一艘船、第二艘船和第 三艘船,共有4+2+1=74+2+1=7个乘客,分别是来自国家4,1,2,2,2,3,34,1,2,2,2,3,3,共来自44个不同 的国家。第二艘船在第33秒到达海港,最近2424小时到达的船是第一艘船和第二艘船,共有4+2=64+2=6个乘客,分别是来自国家1,2,2,3,2,31,2,2,3,2,3,共来自33个不同的国家。NOIP2016 普及组 T3。
2024-04-27 18:36:47
756
原创 [NOIP2002 提高组] 均分纸牌
如果按照我们原来的把多的移到少的上去的思路,那么把A_1A1缺了的1补上就要从A_3A3上移1到这上面,这样就需要2步,再从A_3A3上移2到A_2A2上,这样有需要1步,同理,从A_3A3移4到A_4A4上,又需要1步。从 ③ 取44张牌放到 ④ (9,8,13,109,8,13,10)-> 从 ③ 取33张牌放到 ②(9,11,10,109,11,10,10)-> 从 ② 取11张牌放到①(10,10,10,1010,10,10,10)。有NN堆纸牌,编号分别为 1,2,…
2024-04-25 00:15:00
826
原创 [普及][NOIP2013 普及组] 表达式求值
我们可以把加法直接压进栈,不用操作,乘法即时操作,算完压回栈。一行,为需要你计算的表达式,表达式中只包含数字、加法运算符“+”和乘法运算符“\times×××”,且没有括号,所有参与运算的数字均为 0 到 2^{31}-1231−1之间的整数。所以我们观察中缀表达式,考虑一下三年级数学讲的带符号搬家,我们发现,除了最开始一个数字,其他数都带有一个操作符。这道题的输入很明显是中缀表达式,我们程序对逆波兰表达式算起来得心应手,可是对于中缀就没有什么办法了(至少直接算来),我们可以构造树将其转换为后缀的逆波兰,
2024-04-25 00:15:00
414
原创 [普及][NOIP2004 普及组] 火星人
如果把五根手指――拇指、食指、中指、无名指和小指分别编号为 1,2,3,41,2,3,4 和 55,当它们按正常顺序排列时,形成了 55 位数 1234512345,当你交换无名指和小指的位置时,会形成 55 位数 1235412354,当你把五个手指的顺序完全颠倒时,会形成 5432154321,在所有能够形成的 120120 个 55 位数中,1234512345 最小,它表示 11;火星人只有一只手,但这只手上有成千上万的手指,这些手指排成一列,分别编号为 1,2,3,\cdots1,2,3,⋯。
2024-04-25 00:15:00
650
原创 [普及][NOIP2004 普及组] 花生采摘
第i + 1i+1行的第jj个整数P_{ij}(0 \le P_{ij} \le 500)Pij(0≤Pij≤500)表示花生田里植株(i, j)(i,j)下花生的数目,00表示该植株下没有花生。例如在图2所示的花生田里,只有位于(2, 5), (3, 7), (4, 2), (5, 4)(2,5),(3,7),(4,2),(5,4)的植株下长有花生,个数分别为13, 7, 15, 913,7,15,9。现在给定一块花生田的大小和花生的分布,请问在限定时间内,多多最多可以采到多少个花生?
2024-04-24 17:05:27
439
2
原创 [入门][NOIP2015 普及组] 金币
第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……这种工资发放模式会一直这样延续下去:当连续n 天每天收到 n 枚金币后,骑士会在之后的连续 n+1 天里,每天收到 n+1 枚金币。骑士第一天收到一枚金币;第二天和第三天,每天收到两枚金币;第四、五、六天,每天收到三枚金币。因此一共收到 1+2+2+3+3+3=141+2+2+3+3+3=14 枚金币。NOIP2015 普及组 T1。
2024-04-24 16:47:17
441
原创 [入门][NOIP2015 普及组] 金币
这种工资发放模式会一直这样延续下去:当连续n 天每天收到 n 枚金币后,骑士会在之后的连续 n+1 天里,每天收到 n+1 枚金币。这题目就是一个要点:金币增加的天数(1,3,6,10。)是一个二阶的等差数列,所以可以算出来在前n天内包含几个涨薪水(即比上一次多出一个金币)的日子,然后判断是否是涨薪水的日子,是的话就涨薪水(这不废话吗)。骑士第一天收到一枚金币。其实这数很小,O(n^2)O(n2) 瞎搞都行(循环k天,傻的找不到规律只能每次循环都找一下加几个金币,我想。一个正整数 k,表示发放金币的天数。
2024-04-24 08:24:30
653
原创 [NOIP1999 普及/提高组] 导弹拦截
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是\le 50000≤50000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。
2024-04-24 08:18:01
296
原创 连续部分和
但其实还能再简单,这个递推(��DP 以递推形式出现了)只用到了 ��−1fi−1 和 ��ai,完全可以一边输入一边处理。甚至不用存数组,一个 ����pref 存储 ��−1fi−1,一个 �x 存储 ��ai。状态好设计,就 ��fi 表示前 �i 个数最大连续部分和。然后我们转念一想,“连续部分和”,这名字跟“最长连续子序列”好像啊,用 ��DP!但是再一看数据范围:−100≤��≤100−100≤ai≤100。其实根本用不到 ��DP,只是大材小用罢了,其实这题特别好水过,数据很小。
2024-04-24 03:45:00
194
原创 【入门】计算税金
对一批货物征收税金。价格在1万以上(含一万元)的货物征税5%,在5000元以上(含5000元),一万元以下的货物征税3%,在1000元(含1000元)以上,5000元以下的货物征税2%,1000元以下的货物免税。这题简单,我也同样提供两种方法,但是两种方法的思路一样,但方法不一样,来先看看思路吧!方法②:把乘以的数存储在变量里再统一输出(UP推荐)编程序,读入货物的价格,计算并输出应缴的税金。税金,要求保留小数点后两位小数。方法①:在条件判断里直接输出。接下来就是两个方法的区别了。
2024-04-23 21:07:59
393
原创 【基础】连续自然数和
每行两个自然数,给出一个满足条件的连续自然数段中的第一个数和最后一个数,两数之间用一个空格隔开,所有输出行的第一个按从小到大的升序排列,对于给定的输入数据,保证至少有一个解。对一个给定的自然数M,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为M。的情况,这种情况是不允许的,即(�−�+1)/2≠(�+�−1)/2(,那么���(�,�)=(�+�)(�−�+1)/2=�。,可以列一个二元一次方程组�−�+1=�。,即(�+�)(�−�+1)=2�(,解得�=(�−�+1)/2。
2024-04-23 21:05:09
535
1
原创 [入门][NOIP2011 普及组] 数字反转
这里并不是没有问题,虽然不会无限循环,但是减完最后一个0,�p 会越界,�p 必须 �>=0p>=0。我们会发现,当 �=0N=0 时,第二步会陷入无限循环,这是因为 00 一直成立但是 0/10=00/10=0。因为如果 �=0N=0 时,�>=1p>=1 可以无论如何保住一位,我们就不用写特判了,而且经过简单的证明,不会出现去除第一位的情况。对于 100%100% 的数据,−1,000,000,000≤�≤1,000,000,000−1,000,000,000≤n≤1,000,000,000。
2024-04-23 20:29:08
708
1
原创 [入门][NOIP2016 普及组] 买铅笔
她发现商店一共有 3种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。这题也太简单了吧,就是个 �(1)O(1),楼下还要个带cmp的sort!观察一下代码,会发现神似,只有a1、b1、c1之类的需要改,妥妥的循环啊!这题太简单了,没得说,就是输入,然后模拟三个价格,注意因为购买数量只有是最小的大于 �n 的数才有可能花费最少(用ceil)。接下来三行,每行用2个正整数描述一种包装的铅笔:其中第1个整数表示这种 包装内铅笔的数量,第2个整数表示这种包装的价格。NOIP2016 普及组 T1。
2024-04-23 20:25:11
376
1
原创 [普及][NOIP2016 普及组] 回文日期
其中,1,3,5,7,8,10,121,3,5,7,8,10,12月每个月有3131天;一个88位数字是回文的,当且仅当对于所有的�i ( 1≤�≤81≤i≤8)从左向右数的第i个 数字和第9−�9−i个数字(即从右向左数的第�i个数字)是相同的。保证����_�date_i和都是真实存在的日期,且年份部分一定为4位数字,且首位数字不为0。一个整数,表示在����1date1和����2date2之间,有多少个日期是回文的。对于60%60%的数据,满足����1=����2date1=date2。
2024-04-23 17:00:00
1139
1
原创 [入门][NOIP1997 普及组] 棋盘问题
可以发现,(�−�+1)(N−x+1) 可以求出 �N 方向上有多少长度为 �x 的线段,(�−�+1)(M−x+1) 同理,这样根据乘法原理,就可以计算出来有多少了。我们发现,�x 的取值在 11 到 ���(�,�)min(N,M) 之间。这样第二个式子就可以转化为:�∗�∗(�+1)∗(�+1)/4N∗M∗(N+1)∗(M+1)/4。设有一个�×�N×M方格的棋盘(1≤�≤100,1≤�≤100)(1≤N≤100,1≤M≤100)正方形的个数有88个:即边长为11的正方形有66个;
2024-04-23 17:00:00
686
1
原创 [普及][CSP-J 2021] 插入排序
首先我们要定义一个结构体数组,有两个元素,分别是需要存储的量和它的序号,用来存储在排序前他们分别占的位置,必须定义!数组的长度应是8000,因为n的值最大是8000,我们多开五个空间。int num,id;//数组里的值原和序号}a[8005];Copy还需要定义一个b数组,用来存放他们排序后的序号,b应是一个一维数组Copy。
2024-04-22 22:59:10
1393
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人