- 博客(14)
- 收藏
- 关注
原创 【牛客】1003-第k小
有一个长度为n的数组,值为 a[i], 牛牛想找到数组中第 k 小的数。比如 1 2 2 3 4 6 中,第 3 小的数就是2.牛牛觉得这个游戏太简单了,想加一点难度,现在牛牛有 m 个操作,每个操作有两种类型。1 x 1 代表操作一,给数组中加一个元素 x。2 2 代表操作二,查询第 k 小的数。如果没有 k 个数就输出−1。
2024-06-14 00:12:32
283
原创 【牛客】1005 Forsaken喜欢数论
Forsaken有一个有趣的数论函数。对于任意一个数xxx,f(x)f(x)f(x)会返回xxx的最小质因子。如果这个数没有最小质因子,那么就返回0。现在给定任意一个nnn,Forsaken想知道∑i=1nf(i)\sum_{i = 1}^{n}{f(i)}∑i=1nf(i)的值。
2024-06-10 00:13:35
204
原创 【牛客】1004 素数分布
素数分布函数π(n)\pi (n)π(n)表示小于或等于n的素数的数目。例如π(10)=4\pi (10)=4π(10)=4(2,3,5,7是素数)。这个函数涉及到许多高等数论的内容,甚至和黎曼猜想挂钩,目前还有很多数学家正在不断探索其中的奥秘。千里之行始于足下,现在你开始关心一个问题:在正整数域中素数的分布是怎么样的。为了探索这个问题,你需要计算出一些π(n)\pi (n)π(n)的值。
2024-06-09 00:38:34
171
原创 【牛客】1002 素数回文
现在给出一个素数,这个素数满足两点:1、 只由1-9组成,并且每个数只出现一次,如13,23,1289。2、 位数从高到低为递减或递增,如2459,87631。请你判断一下,这个素数的回文数是否为素数(13的回文数是131,127的回文数是12721)。
2024-06-09 00:08:33
271
原创 【牛客】1001-素数判断
第1行,如果x是素数,输出“isprime”(不含双引号),否则输出“noprime”(不含双引号)。给出一个数x,判断它是否为素数,并输出所有它的素因子。第2-T+1行每行输入一个数x表示对应询问。第1行输入组数T,代表有T组数据。对于每组询问输出两行表示结果。数据保证:2≤x≤109。第2行,输出x的素因子。
2024-06-07 23:52:19
149
原创 リモコン(简单思维)
首先,我们需要取一下x-y的绝对值,然后在这个数大于10的时候我们肯定是要对空调加减10度这点肯定无疑,当加减到小于10度时,我们就需要考虑1-9每一个数子需要操作的最小次数,其实并不难找,最后的规律是1,2,3,2,1,2,3,3,2。本题数据量较小,用搜索强行搜出答案也无妨,但是用思维方法则会更加简单。小明想将空调温度从x度调到y度,求最小的操作次数。空调可以上调或下调1、5、10度。
2022-11-14 21:31:42
490
1
原创 楼兰图腾(树状数组)
这样的话这题思路就很清晰了,运用树状数组维护一下当前数字前面有多少数大于或小于当前数字,这样就得到了所有数字的前缀数量,再倒序来一遍得到后缀,将前缀和后缀相乘就是当前数字为中心组成的图腾数量。思路: 题目字很多,但是题意并不难懂,其实我们就是要找当前数前面和后面分别有多少数大于或小于当前数字,然后再将找到的两个数量相乘就是当前数字能组成的图腾数量。对于其中的“3”左边有两个小于它的数,右边也有两个小于它的数,所以以“3”为中心能组成的“V”图腾有 2 * 2 = 4 个以此类推。
2022-11-14 21:18:59
438
2
原创 区间和问题——离散化
很显然不行,因为这道题数据范围实在是太大了,所以但是并不是每个点都用上了,真正有过添加值的点最多不过1e5因此我们需要考虑的就是如何处理这1e5个数了。ok经过上述推到我们手动模拟了离散化,现在我们只需要把给定区间的l和r通过二分找到前缀数组的左右边界就可以得到答案就是前缀和数组a[r]-a[l-1]。接下来,进行 mm 次询问,每个询问包含两个整数 ll 和 rr,你需要求出在区间 [l,r][l,r] 之间的所有数的和。原始数组:-1 -2 6 7 6。排列:-2 -1 6 6 7。
2022-11-11 16:38:07
388
原创 没有上司的舞会(树形dp)
做为树形dp的经典题目,看到这道题我们首先可以想到,每个上司跟他的下属的关系就跟子节点和父节点关系一样。由此可以想到,题目关系可以看作一棵树,其中每个上司都是每一个下属的父节点,以此关系可以建树,然后再考虑如何更新状态。2 对于状态的更新:每次每个节点都可以选择或者不选,我们可以开一个二维数组f[N][2],其中。即为f[i][1]+=max(f[i-1][0],f[i-1][1]);f[i][0]代表不选当前节点,f[i][1]代表选择当前节点。即为f[i][0]+=f[i-1][1]。
2022-11-10 21:26:31
511
原创 最长公共子序列问题(线性dp)
对于这种问题很容易想到用dp去解决它,因为很明显当前最长子序列肯定是由前一个子序列状态更新而来的。我们先开一个数组 f[N][N] 来表示第一和第二个子串的位置。然后就可以分析情况推状态转移方程了。=b[j]时,那我们必须要舍弃一个字符可能是a[i],或者是b[j],那这个时候可以知道。问题简述:给你两个长为n和m的字符串a和b,求两个字符串的公共子序列长度。1:当a[i]==b[i]时,f[i][j] = f[i][j]+1;然后就可以根据两种情况更新状态,求出最长公共子序列长度啦。
2022-11-08 23:06:40
638
原创 常用简单算法-质因数分解
我们要学习质因数分解前,先了解一下基本知识,任何一个合数都可以由质数相乘获得,例如:4=2*2,6=2*3。这之中2,3都是质数,了解这个概念之后,咱们就可以构建一下质因数分解的基本概念了。2:如果i可以被a整除,证明i是a的质因数,然后一层while循环用来去重,例如:24=2*2*2*3,24的质因数是2和3,那咱们可以让24一直除2直到无法整除,这样就可以完成去重操作啦!对于质因数分解,在做题当中是很常用的,有时候还能用他创造奇迹呢。1:首先得到一个数a求它的质因数,先从2开始遍历。
2022-11-02 20:33:57
1560
原创 1~n中与n互质数的个数(欧拉函数)
以上就是欧拉函数的推到过程啦(图源来自acwing),推导结束就可以根据结论进行代码实现了。在开始讲欧拉函数之前,需要先了解质因数分解,传送门:。ok现在正式开始欧拉函数的推导。对于1~n中所有跟n互质的数的个数问题,我们会用欧拉函数来解决。
2022-11-02 20:19:04
1119
2
原创 2022NYIST(计科ACM&TC)第一次招新赛题解
p(a)=n-1/n(未被锁定盒子里面有小飞棍的总概率),p(b)=1/(n-m-1)(打开m个盒子后每个盒子所占总概率的份数)。那么显而易见最大概率公式为:p(a)*p(b)=n-1/((n-m-1)*n),再注意一下精度问题就好ok啦。最后也是求出来一个L和一个R,答案就是R-L+1.),换之后的概率永远大于等于换之前,当且仅当没有盒子被打开的时候换不换的概率就是一样的了那么答案就很明显了。用二分就是板子:先搜索一个L让L*L>=a,然后再搜索一个R让R*R
2022-10-23 18:20:52
1906
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人