摘要:
思路 观察下图: 红色箭头代表枚举顺序。 我们4次枚举 $x,y$,依次判断 $x,y$ 是否满足图中的四个条件。 注意左下-右上的箭头对于下标是逆序的,枚举时要注意。 代码 #include <iostream> #include <algorithm> using namespace std; 阅读全文
摘要:
思路 枚举每个位置。 如果能和前面接上(和前一项相等)就累计长度,更新最大值。 否则把长度重置成1,继续枚举。 代码 #include <iostream> #include <algorithm> using namespace std; int n, k, t = 1, s, a[101]; i 阅读全文
摘要:
思路 定义数组 $cnt,cnt[i]$ 表示 i 的出现次数。 枚举一遍原数组,统计每个数出现的次数。 然后从 0 到 fmax 遍历 cnt,输出从 0 到 fmax 每个数的出现次数。 代码 #include <iostream> #include <algorithm> using name 阅读全文
摘要:
思路 排一遍序,找出最大值和最小值,累加剩下的值。 平均值即为累加值$/n-2$。 再用平均值依次减所有有效值,找到差的绝对值的最大值。 代码 #include <iostream> #include <algorithm> #include <cmath> #include <cstdio> us 阅读全文
摘要:
思路1 升序排序,最后一项即为最大值,记录 遍历数组,累加所有与记录的最大值不同的元素 代码1 #include <iostream> #include <algorithm> using namespace std; int n, a[101], s, x; int main() { cin >> 阅读全文
摘要:
思路 定义 bool 数组 $a,a[i]$ 表示第 $i$ 个灯是否关闭。 从 $1$ 到 $n$ 枚举每个人,对于每个人,枚举倍数。 令人数$×$倍数 $≤ n$,再修改 $a[$ 人数 $×$ 倍数 $]$ 的状态。 代码 #include <iostream> using namespace 阅读全文
摘要:
思路 用一个map<string,int>存每个人的总得分 用一个pair<string,int>数组存每回合的情况 找出最高总得分后,再建一个map<string,int>模拟每回合 如果过程中发现有人已经到达最高分,而且总分是最高分,输出这个人的名字 代码 #include <iostream> 阅读全文
摘要:
思路 输入每个病人的年龄后,判断属于哪个年龄段,累加每个年龄段的人数。 最后用每个年龄段的人数 ÷ 总人数 × 100 输出即可。 注意 printf 输出一个百分号是printf("%%"); 代码 #include <iostream> #include <cstdio> using names 阅读全文
摘要:
思路 因为 $ax+by=c$,所以 $ax=c-by$。 又因为 $by≥0$,所以 $ax≤c$。 同理 $by≤c$,枚举范围内所有 $x,y(0 ≤ ax,by ≤ c)$ 代码 #include <iostream> using namespace std; int a, b, c, an 阅读全文
摘要:
队列模板题,容易出各种玄学错误 这题需要用到的$STL$芝士: list<int> l:建立一个元素为int的链表 l.push_back(n):在l的末尾加入n 设it为list的迭代器 next(it):it后面的迭代器 l.insert(it,n):在it前面加入n,返回插入的新元素的位置 l 阅读全文
摘要:
思路 有这么一个神奇的函数,叫做 to_string。 它可以把一个整数变成 string。 还有这么一个神奇的函数,叫做 count。 它可以统计 string 里某个字符出现的次数。 把 $[L,R]$ 里的每个数都转成 string,统计 '2' 的个数累加。 代码 #include <ios 阅读全文
摘要:
思路 纯模拟,令 $i$ 从 1 到 $n$ 赋值,累加 $x^i$。 注意多项式最后有一个$+1$。 代码 #include <iostream> #include <cstdio> #include <cmath> using namespace std; double s = 1, x;int 阅读全文
摘要:
思路 纯模拟,令 $i$ 从 $1$ 到 $n$ 赋值,累加 $\dfrac{1}{i!}$。 注意公式开始时是 $1+...$, 所以 $e$ 的初始值要设成 $1$ 。 要注意浮点数的转换和保留小数。 代码 #include <iostream> #include <cstdio> using 阅读全文
摘要:
思路 模拟一下 10 次弹跳的过程。 第一次落地: h 第一次弹跳: h/2 第二次落地: h/2 第二次弹跳: h/4=h/2^2 第三次落地: h/4=h/2^2 第三次弹跳: h/8=h/2^3 ... 第十次落地: h/512=h/2^9 第十次弹跳: h/1024=h/2^10 所以第十次 阅读全文
摘要:
思路 结果只取最后三位,而之前的数不会参与幂的计算 所以第三位之前的数肯定和结果无关 可以每乘一次 $a$ 就 $\bmod$ 一次 $1000$,舍弃前面的数。 %03d可以在前面补满 3 位的 $0$。 要注意结果 $s$ 的初始值要设成 $1$ 否则 $0$ 乘以任何数都还是 $0$ 代码 # 阅读全文
摘要:
注意:题目中求的是大于 $1$ 的整数 $x$。 思路1 直接从2开始枚举 $x$,直到符合要求为止。 因为保证有解,可以不写循环边界。 代码1 #include <iostream> #include <algorithm> using namespace std; int a, b, c; in 阅读全文
摘要:
思路 观察公式,设每一项的分母为 $i$。 $i$ 是奇数时加上 $\frac{1}{i}$ ,$i$ 是偶数时减去 $\frac{1}{i}$。 令 $i$ 从 $1$ 到 $n$ 赋值,就可以得到结果。 代码 #include <iostream> #include <cstdio> using 阅读全文