- 博客(11)
- 收藏
- 关注
原创 【20CSPJ普及组】真题解析
如果这个数是偶数,那么一定可以满足题目条件,那么我们只需要依次减去离当前剩余数最接近的 2 的尽可能大次幂的数,也就是说如果当前数为 26,那么我们减掉 16,当前数变为 26 - 16 = 10,然后我们减掉 8,当前数变为 10 - 8 = 2,然后我们减掉 2,当前数变为 0,那么我们的答案就是 16 8 2。我们注意到,每个选手的成绩均为不大于 600 的非负整数,那么我们只需要统计每个分数出现的次数,然后按分数从大到小计算出现次数的总和即可。输入输出使用 scanf, printf。
2024-07-08 14:28:48 865
原创 【22CSPJ普及组】真题解析
第二种:a >= 2,int 类型能表示的最大数为 2^31 - 1,所以对于 a 来说,最多暴力计算 31 次答案就会超过 int 值,所以我们只需要暴力计算即可,无需优化。先将点集进行从小到大排序,第 i 个点可由第 i - 1 个点转移,假设两个点之间的距离为 len,则需要添加 len - 1 个点就可以满足题设条件。由题,我们知道 p 和 q 都是 n 的因子,于是我们只需要枚举其中较小的一个因子 p 即可,另外一个因子即为 n / p。,其中,n m 均为已知数。则题目变为解一元二次方程。
2024-07-07 13:53:20 1042
原创 小高组试卷二
数据最大为 1e12,如果存在质因子,那么一定小于等于 1e6,我们只需要预处理出 1e6 范围内所有质数,如果这些质数不是输入这个数的因子,那么就不存在质因子。题目保证询问是递增的,那么我们没有必要去重复处理,直接从上一次处理完的数组接着处理即可。暴力判断的时间复杂度不足以通过全部样例。
2024-07-03 10:44:01 248
原创 小高组试卷一
也就是说如果我们将最后的数字 1 尽可能的往前移动,数变得越大,如果我们将最后的 1 和最前面的 0 交换,这个数会变成最大的数,题目要求我们求第二大的数,那我们将右起数第二个 1 和最前面的 0 交换即可。如果是有效区域,就分别按规则提取数组不旋转,以及旋转 i * 90° 后的字母,挨个输出即可。对数组进行旋转预处理:预处理出数组旋转 90°,180°,270°,360° 后的数组,便于后续的使用。前置知识:对二进制数来说,数字 1 越靠前,表示的数越大。具体实现:每一阶段均暴力实现即可。
2024-06-28 10:31:08 386
原创 十大经典排序算法(C++)
(所有举例均为从小到大排序)一:冒泡排序二:选择排序三:插入排序四:快速排序五:希尔排序六:归并排序七:堆排序八:记数排序九:桶排序十:基数排序
2023-04-18 21:46:20 834 1
原创 数据结构--二叉树的基本操作
贴一下代码。定义:struct BiNode{ string data; BiNode* lchild, * rchild;};typedef BiNode* BiTree;初始化:int InitBiTree(BiTree& T){ T = NULL; return 0;}根据前序遍历建二叉树:char* CreateBiTree(BiTree& T, char* str){ // 约定#表示空结点 if (*str == '#') {
2021-11-15 11:28:08 345
原创 Python 列表 元组 字符串
1:创建列表1)创建空的列表list=[]2)创建含元素的列表list=[1,2,3]2:列表元素的获取1)通过索引(下标)获取元素list=['a','b','c','d']list[3]='d'2)通过元素获取索引list=['a','b','c','d']list.index('a')=03)查看元素是否存在于列表list=['a','b','c','d']'b' in list //true'e' in list //fals
2021-04-19 23:11:30 254
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人