题解
文章平均质量分 89
u010290366
这个作者很懒,什么都没留下…
展开
-
NOIP2010普及组复赛 解题分析
1.数字统计算法分析剥数。#include <iostream>#include <cstdio>#include <cstring>#include <string>#define ll long longusing namespace std;int main(){ int l, r; scanf("%d%d", &l, &r); int ans = 0; for (int i = l; i <= r; +原创 2022-04-28 18:24:26 · 511 阅读 · 0 评论 -
NOIP2011普及组复赛 解题分析
1.数字反转算法分析反转后需要考虑前导0。重新组数就可以规避这个问题。就是剥数和组数的过程。#include <iostream>#include <cstdio>#include <cstring>#define ll long longusing namespace std;int main(){ int n; scanf("%d", &n); if (n < 0) { n = -n; printf("-"); }原创 2022-04-28 12:56:08 · 633 阅读 · 0 评论 -
NOIP2012普及组复赛 解题分析
1.质因数分解算法分析nnn是两个不同的质数的乘积,如果求出较小的那个,也就求出较大的那个了。较小的那个小于根号nnn。枚举法。#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#define ll long long using namespace std;int isprime(int n){ int i = 2, t = sqrt(n); w原创 2022-04-28 12:44:34 · 528 阅读 · 0 评论 -
NOIP2013普及组复赛 解题分析
1.计数问题算法分析剥数。#include <iostream>#include <cstdio>#include <cstring>#define ll long longusing namespace std;int main() // 剥数 { int n, x; scanf("%d%d", &n, &x); int sum = 0; for (int i = 1; i <= n; ++i) { int t =原创 2022-04-27 15:36:36 · 1035 阅读 · 1 评论 -
NOIP2014普及组复赛 解题分析
1.珠心算测试算法分析有人可能会误读题意。题意说的是,有多少个数,能够由集合中的另外两个数构成。不是说集合中的数a、b、c,由多少对能组成等式“a + b = c”。下面数据:51 2 3 4 5输出的是3,不是4。枚举每一个数,然后再枚举集合中的数,判断能否构成,一旦找到break退出。#include <iostream>#include <cstdio>#include <cmath>#include <cstdlib>using原创 2022-04-26 16:32:18 · 748 阅读 · 0 评论 -
NOIP2015普及组复赛 解题分析
1.金币算法分析直接模拟。#include <iostream>#include <cstdio>#include <cstring>using namespace std;int main(){ int i=1,sum=0,ans=0,n; scanf("%d",&n); while(1) { sum+=i; // sum是天数 if(sum>n) break; ans+=i*i; ++i; } ans+=原创 2022-04-24 17:02:30 · 1745 阅读 · 0 评论 -
NOIP2016普及组复赛 解题分析
1.买铅笔算法分析不能整除则加1。#include <iostream>#include <cstdio>#include <cstring>#define ll long longusing namespace std;int main(){ int n; scanf("%d", &n); int snum, sprice; int ans = 1e8, t; for (int i = 1; i <= 3; ++i) { s原创 2022-04-24 16:02:00 · 635 阅读 · 0 评论 -
NOIP2017普及组复赛 解题分析
1.成绩算法分析据说这题当年官方评测时也闹出过乌龙。小数会产生异变,比如以下代码:inta=80∗0.2int \quad a = 80 * 0.2inta=80∗0.2赋值号右侧是实数,最后结果可能会为16.000001或15.999999,赋值给aaa的话,aaa的值可能是16或15,产生错误。解决方法:化乘为除(A,B,C 都是 10的整数倍),或定义为doubledoubledouble,最后结果保留0位输出。#include <iostream>#include <c原创 2022-04-24 11:15:09 · 1692 阅读 · 0 评论 -
NOIP2018普及组复赛 解题分析
1.标题统计算法分析由于算法竞赛中已经用不了getsgetsgets函数,可以考虑用getchargetchargetchar或stringstringstring。因为字符串有空格,不能用scanfscanfscanf读入,因为scanfscanfscanf读入时遇到空格就停止了。题面说只有一行字符串,但是包括换行符,因此换行符只能是文末换行符。正好用getchargetchargetchar读入时可以判断是否结束。#include <iostream>#include <cst原创 2022-04-11 18:01:30 · 1343 阅读 · 0 评论 -
CSP-J2019第二轮 解题分析
1.数字游戏算法分析共8个字符,可以用循环读入,也可以用scanfscanfscanf一次性读入。然后判断计数。#include <iostream>#include <cstdio>#include <cstring>#define ll long longusing namespace std;int main(){ char c; int num = 0; for (int i = 1; i <= 8; ++i) { cin>原创 2022-04-11 12:02:37 · 1962 阅读 · 1 评论 -
CSP-J2020第二轮 解题分析
1.优秀的拆分算法分析奇数不存在优秀的拆分。偶数一定存在优秀的拆分。从大到小枚举2的iii次方,从24到1。如果nnn能被2i2^i2i整除,说明2i2^i2i是他的一个拆分项,输出。2i2^i2i可以表示为1<<i1<<i1<<i。#include <iostream>#include <cstdio>#include <cstring>using namespace std;int main(){ int n; s原创 2022-03-29 18:32:11 · 2301 阅读 · 0 评论 -
CSP-J2021第二轮 解题分析
1.分糖果算法分析糖果总数k属于[l,r][l, r][l,r],其中l>=nl >= nl>=n,每个小朋友最少会分到⌊l/n⌋\lfloor l / n \rfloor⌊l/n⌋块糖果。分完这⌊l/n⌋\lfloor l / n \rfloor⌊l/n⌋块糖果后,还剩余[l−n∗⌊l/n⌋,r−n∗⌊l/n⌋][l - n * \lfloor l / n \rfloor, r - n * \lfloor l / n \rfloor][l−n∗⌊l/n⌋,r−n∗⌊l/n⌋]原创 2022-03-22 20:22:54 · 2682 阅读 · 0 评论 -
2021统一省选 A卷 day1解析
题面,就参照洛谷的吧。卡牌游戏矩阵游戏图函数现在官方数据没出来,所以下面解析不能保证结果正确性。重点看思维过程。卡牌游戏爆搜的话,过前两个点没问题。枚举要翻牌的数量m,然后从n张中翻m张,直接统计最大最小值。考虑到卡牌是按照正面数值由小到大排序的,从结果出发,设最大值为maxn,最小值为minn,那么正面数值在这个区域的,是不用翻牌的。对于正面来说,假设最小值minn的下标为i,最大值maxn的下标为j。如下:那么区间[i,j]是不需要翻牌的。区间[1,i-1]和[j+1,n]原创 2021-04-13 17:16:06 · 208 阅读 · 0 评论