![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
模拟算法与基础语法
模拟算法与基础语法
hnjzsyjyj
这个作者很懒,什么都没留下…
展开
-
洛谷 P1068 [NOIP2009 普及组 T2]:分数线划定
● 按结构体某一字段对结构体数组进行排序:https://blog.csdn.net/hnjzsyjyj/article/details/120184972原创 2024-07-19 09:42:09 · 324 阅读 · 0 评论 -
洛谷 P1067 [NOIP2009 普及组 T1]:多项式输出
这是一道简单的模拟题。原创 2024-07-18 23:58:13 · 325 阅读 · 0 评论 -
全局变量 y1 会和 cmath 标准库中的变量产生冲突
全局变量 y1 会和 cmath 标准库中的变量产生冲突。解决方法为“将 y1 设为局部变量”。原创 2024-07-16 14:05:07 · 207 阅读 · 0 评论 -
洛谷 P1055 [NOIP2008 普及组 T1]:ISBN 号码
● 若 x 为数字 0~9 中的一个,'x' 为字符 '0'~'9' 中的一个,则 x 与 'x' 之间具有相互转换的关系。即,x+'0' 得到字符 '0'~'9' 中的一个,'x'-'0' 得到数字0~9 中的一个。● 若给定字符串 str,则在下面代码中,for 循环的循序变量 i 的上界为 str.size()-1。这是因为字符串 str 的第 str.size()-1 位的值需要进行计算求得。原创 2024-07-16 00:11:00 · 550 阅读 · 0 评论 -
AcWing 2074:倒计数 ← 双指针算法
双指针算法原创 2024-07-15 09:02:07 · 425 阅读 · 0 评论 -
洛谷 P1093 [NOIP2007 普及组 T1]:奖学金 ← 结构体排序
● 按结构体某一字段对结构体数组进行排序:https://blog.csdn.net/hnjzsyjyj/article/details/120184972原创 2024-07-14 10:26:19 · 411 阅读 · 0 评论 -
AcWing 1480:电梯
● 设用数组 q[] 表示楼层,由于电梯开始时位于第 0 层,故可将数组 q[] 下标从 1 开始。则计算时只需比较 q[i] 与 q[i - 1] 的关系即可。原创 2024-07-13 19:51:51 · 269 阅读 · 0 评论 -
AcWing 1515:U 形 Hello World
● 由已知 n1+n2+n3−2=n,n1=n3,可得 n+2=2∗n1+n2,其中n2>=n1● 由3≤n2≤n,故可对 n+2 进行模 3 操作,则有:(1)若 (n+2)%3=0,则 n2=n1,故此条件下可得 n+2=3*n1。(2)若 (n+2)%3=1,则 n2=n1+1,故此条件下可得 n+2=3*n1+1。(3)若 (n+2)%3=2,则 n2=n1+2,故此条件下可得 n+2=3*n1+2。● 综上,可得:(1)n1=(n+2)/3(2)n2=n1+(n+2)%3原创 2024-07-13 18:14:54 · 343 阅读 · 0 评论 -
AcWing 1633:外观数列
● 整数 d → 字符 ‘d‘ 的转换代码为:d+‘0‘。● 语句 string s="", s+=d+'0'; 不能写成 string s+=d+'0'; 语句,否则系统会提示 s 没有初始化。当然,语句 string s="", s+=d+'0';等价于string s=to_string(d);原创 2024-07-11 12:41:04 · 388 阅读 · 0 评论 -
字符 ‘d‘ → 整数 d 的转换代码为:‘d‘-‘0‘
字符 'd' → 整数 d 的转换代码为:'d'-'0'原创 2024-07-11 11:49:31 · 127 阅读 · 0 评论 -
整数 d → 字符 ‘d‘ 的转换代码为:d+‘0‘
整数 d → 字符 'd' 的转换代码为:d+'0'原创 2024-07-11 11:05:41 · 295 阅读 · 0 评论 -
AcWing 3381:手机键盘
●注意循环条件写为 while(cin>>str),不要写为 while(1) 之后且在其循环体中写 cin>>str,因为实践证明会 TLE。原创 2024-07-11 06:21:37 · 435 阅读 · 0 评论 -
AcWing 5458:进水排水问题
简单的模拟算法题。原创 2024-07-10 12:57:01 · 182 阅读 · 0 评论 -
AcWing 3207:门禁系统 ← 桶排序中“桶”的思想
本题利用了“桶排序”中“桶”的思想。原创 2024-07-06 22:36:51 · 294 阅读 · 0 评论 -
AcWing 1511:笨鸟
● 不管障碍物距 0 点的距离 x 是偶数还是奇数,能够到达的 y 值均是离散的且相差 2。之所以离散,是因为小鸟的坐标是按秒更新的。且,若障碍物距 0 点的距离 x 值是偶数/奇数,则能够到达的离散 y 值也是偶数/奇数。原创 2024-07-05 07:17:58 · 974 阅读 · 0 评论 -
AcWing 1544:霍格沃茨的 A + B
这是一道简单的模拟题,没有什么难度。原创 2024-07-04 12:29:00 · 154 阅读 · 0 评论 -
AcWing 1509:打怪 ← 模拟题
按结构体某一字段对结构体数组进行排序原创 2024-07-03 11:31:21 · 232 阅读 · 0 评论 -
AcWing 1508:划拳 ← 模拟题
本题没有什么难点,就是一道简单的模拟题。原创 2024-07-02 23:55:52 · 129 阅读 · 0 评论 -
AcWing 797:差分 ← 一维差分模板题
● 利用差分处理此类“多次对区间进行加减操作”的问题,可以大大降低算法的时间复杂度。这是因为,构造差分数组后,对原数组区间 [le, ri] 的加减操作就转化为对差分数组的区间端点的操作:d[le]+=x,d[ri+1]-=x。这明显大大降低了计算量,所以算法效率会很高。注意:此处的原数组及差分数组的下标都从1开始。原创 2024-06-25 17:28:06 · 421 阅读 · 0 评论 -
AcWing 3358:放养但没有完全放养 ← 按位匹配
因为输入样例的第一行为牛文字母表,所以 Farmer John 听到的字母一定是按“牛文”有序的。如果不是,那么就是又唱了一遍。原创 2024-06-22 00:25:01 · 481 阅读 · 0 评论 -
AcWing 1801:蹄子剪刀布 ← 模拟题
● 依据游戏规则,蹄子赢剪刀,剪刀赢布,布赢蹄子。据此,不失一般性,约定用编号1、编号2、编号3对游戏规则进行编码。由于编号1可能代表“蹄子”,可能代表“剪刀”,也可能代表“布”,编号2及编号3亦如此。故可得6种游戏规则编码,即 1 2 3、1 3 2、2 1 3、2 3 1、3 1 2、3 2 1。原创 2024-06-21 09:49:51 · 1273 阅读 · 0 评论 -
AcWing 4652:纸张尺寸 ← 模拟算法
模拟算法原创 2024-06-12 23:47:38 · 136 阅读 · 0 评论 -
结构体构造函数
结构体,若用构造函数进行初始化,通常无参构造与有参构造都要有。原创 2024-06-09 22:16:11 · 264 阅读 · 0 评论 -
洛谷 P2926:轻拍牛头 ← 模拟题
● 题目描述中,最后一句是核心。其他部分可以视为干扰的内容。● 特别要注意,最后一句表述中的“其他的数”。这表示,所求结果不包括自己本身。据此,就容易理解代码中的ans[a[i]]-1语句了。其中,ans[a[i]] 表示 Ai 的约数的个数。● 若 A 是 B 的倍数,那么 B 就是 A 的约数。当求约数的时间复杂度过大时,可从它的倍数的角度来考虑解决问题。也就是说,求出某个数的各个倍数的个数,等价于求出这些倍数相对于这个数的约数个数。这样操作,可由O(n^2)优化为O(nlogn)。原创 2024-06-04 23:58:08 · 413 阅读 · 0 评论 -
AcWing 1211:蚂蚁感冒 ← 模拟题
●两只蚂蚁碰面掉头,可以看作是一只蚂蚁穿过了另一只蚂蚁。因为,碰面之后两只蚂蚁都感冒了,掉不掉头其实无所谓,毕竟都感冒了。这样分析的话,本题就简单多了。●依据第一只感冒的蚂蚁向左还是向右,进行分析判断。由于蚂蚁速度相同,如果第一只感冒的蚂蚁向右,那么它右面向左走的一定会传染,右面向右走的一定不会传染,左面向左走的一定不会传染,左面向右走的会被右面向左走的被感染的感染。如果第一只感冒的蚂蚁向左,与上同理。原创 2024-06-04 18:12:38 · 514 阅读 · 0 评论 -
C/C++利用指针变量输入输出数组元素
● 在本例代码中,p 是指针(即地址),所以scanf("%d",p); 满足 scanf 函数的一般形式。又由于数组名 a 是指针常量,指向数组首元素 a[0],且在 for 循环中初始化 p=a,所以此时语句scanf("%d",p); 中的 p 就是数组首元素 a[0] 的地址,故 scanf("%d",p); 就等价于给数组元素a[0] 赋值。然后,随着 p 值的变化,就等价于给 a[1]、a[2]、…… 等赋值。原创 2024-05-29 09:21:11 · 284 阅读 · 1 评论 -
C/C++利用 %f 格式化输出整型变量的结果为0.000000
● 用 %f 格式化输出整数,会输出 0.000000。● printf函数不会进行任何类型转换,它只是按照 %d,%f 等控制字符输出所提供的元素的值。原创 2024-05-28 10:09:18 · 271 阅读 · 0 评论 -
C\C++ 语言中共用体 union 知识点及习题
● 若格式化输出未被赋值的 union 成员,会按指定格式输出内存相应字节中的已有内容。特别注意,分析 union 成员输出时,通常会将已输入数据转换为 16 进制数并结合此待输出成员的数据类型所占字节数进行分析。原创 2024-05-28 00:30:54 · 855 阅读 · 0 评论 -
C\C++语言中求由字符串构建的字符数组长度及所占字节数代码
在 C\C++ 语言中,由字符串构建的字符数组,以不可见字符'\0'作为结尾。'\0' 是字符串结束标志,不计入串长,但要占内存空间。若由字符串构建的字符数组为 s,则命令 strlen(s) 可得字符数组长度,命令 sizeof(s) 可得字符数组所占字节数。原创 2024-05-27 23:02:29 · 326 阅读 · 1 评论 -
C\C++ 中大端存储及小端存储的代码判定
简单而言,小端模式为“高字节存高地址,低字节存低地址”,大端模式为“高字节存低地址,低字节存高地址”。原创 2024-05-27 15:46:13 · 345 阅读 · 1 评论 -
C\C++ 语言中不同数据类型所占字节数及代码验证
C/C++ 语言中,各个数据类型所占的字节数是由编译器和目标平台决定的,它们可能会在不同的编译器和平台上有所不同。如果想要确定特定编译器和平台上数据类型的字节数,可以使用 sizeof 运算符来获取。例如,sizeof(int) 将返回 int 类型的字节数。原创 2024-05-27 14:42:10 · 319 阅读 · 0 评论 -
利用 getchar() 读取回车符解决 scanf() 读取单个字符的不足
利用 getchar() 读取回车符解决 scanf() 读取单个字符的不足。原创 2024-05-16 20:45:05 · 490 阅读 · 0 评论 -
逗号运算符后不能和 return、break、continue 连用
逗号运算符后不能和 return、break、continue 连用原创 2024-05-10 19:35:14 · 411 阅读 · 0 评论 -
浙江大学 → PAT 1012:数字分类
注意:输入样例的第一个数字是参与分类的数字的总数,不是参与分类的数字。原创 2024-05-08 22:30:24 · 478 阅读 · 0 评论 -
C++ 中 scanf 的高阶用法:scanf(“%[a-z]“,ch);
● C++ 中 scanf 的高阶用法:scanf("%[a-z]",ch);语句 scanf("%[a-z]",ch); 表示只读入小写字母入字符串。任何包含非小写字母的字符串,将不能读入,自然也不可能有输出。例如:运行下面代码:输入 abc,将输出 abc;输入 abcA,将无输出。原创 2024-04-30 16:18:29 · 116 阅读 · 0 评论 -
C++11 标准中的 for 循环,用 auto 以简洁、统一的方式来遍历容器和数组
● C++11 标准中的 for 循环,用 auto 以简洁、统一的方式来遍历容器和数组。原创 2024-04-27 23:08:34 · 252 阅读 · 0 评论 -
统计一个整数的因子个数
统计一个整数的因子个数的方法:1.对给定整数分解质因子2.把不同质因子的个数加 1 后相乘所得乘积,便是给定整数的因子的个数。(注意:计算出的因子个数包含 1 这个因子)原创 2024-04-22 18:36:52 · 363 阅读 · 0 评论 -
PTA:L1-006 连续因子
○ 若 n 是素数,输出 1 之后,换行输出它本身;○ 若 n 是合数,则在1~sqrt(n) 范围内进行因子判别。简证如下:给定一个数字 n,朴素的求其因子的方法为枚举 [1,n] 的所有数进行余数为 0 判定,算法时间复杂度为 O(n)。此处加入一个小优化,即若 m 为 n 的因子,那么 n/m 必然也为 n 的因子,不妨设 m≤n/m,则有 m≤sqrt(n),所以只需在[1,sqrt(n)] 内枚举所有数进行余数为 0 判定即可,算法时间复杂度优化为 O(sqrt(n))。原创 2024-04-22 13:32:24 · 361 阅读 · 0 评论 -
PTA:L1-020 帅到没朋友
%5d:右对齐;不足5位左补空格、大于5位按实际输出。 %05d:右对齐;不足5位左补0、大于5位按实际输出。printf("%5d",1); //输出:****1(*为空格)printf("%05d",1); //输出:00001原创 2024-04-10 23:15:54 · 798 阅读 · 0 评论 -
二维数组赋初值 -1 的典型错误语句:int a[5][5]={-1};
二维数组赋初值 -1 的典型语句:memset(a,-1,sizeof(a));原创 2024-04-09 12:43:13 · 146 阅读 · 0 评论