07 2021 档案
摘要:FBI Warning 此题是一道思维题,请不要"对着题解调试程序"(大雾 前置芝士 一维前缀和(就够了) 最大子段和(P1115) 二维数组(能做到蓝题的应该都会吧) 思路 注意,这题的 和 是和其他题反过来的! 这题明显是一个卡了我两天的最大子矩阵和板子题。 有同学就要问了:那为
阅读全文
摘要:7.29 Update 支持大小比较,大改码风。 除了负数除法取模位运算 #include <iostream> #include <string> #include <algorithm> using namespace std; class big { public: int a[10001]
阅读全文
摘要:最短路果然是水题法宝 就是这题大家快来切了他 思路 自底向上分析问题。 拆一个点分两步:1.拆结界发生器。2.去这个点。 但是,机器人是可以分成几路走的。 所以这两个过程可以同时发生,只不过快的过程要等慢的过程。 所以,若拆第 i 个点的结界发生器需要 in[i],去这个点需要 arr[i], 则拆
阅读全文
摘要:好家伙,这数据加强就改个 long long 就行了。 前置芝士 to_string(int n):把 n 转成 string。 reverse(iterator a, iterator b):将 a 到 b 的区间反转。 pow(double a, double b):求 思路 枚举进
阅读全文
摘要:前置芝士 to_string(int n):将 n 转换为 string stoi(string s):将 s 转换为 int reverse(iterator a, iterator b):反转 a 到 b 之间的区间。 思路 暴力模拟,枚举 到 的每一个数。 依次判断区间内的数,
阅读全文
摘要:板子题:https://www.luogu.com.cn/problem/P5905 个人认为是最难的一个最短路算法了,因为实现中用到了很多其他的最短路 数据: 负权边:支持 判断负环:不支持 复杂度: (实际上是 ,这里采用堆优化dijkstra)
阅读全文
摘要:前置芝士:bellman-ford 板子:https://www.luogu.com.cn/problem/P3385 大家应该都会SPFA判负环了,但代码量实在是大的惊人。 那有没有相对方便的做法呢?有,SPFA的祖宗的原版bellmanford 那有同学就要问了: bellman-ford稳定r
阅读全文
摘要:导航: 邻接矩阵:https://www.luogu.com.cn/blog/388651/guan-yu-lin-jie-ju-zhen 邻接链表:https://www.luogu.com.cn/blog/388651/guan-yu-lin-jie-lian-biao 链式前向星:https:
阅读全文
摘要:反正那两种都写了,这也写一下吧 邻接矩阵,最为朴实无华的存图方法,其基本思路为: 如果u,v之间存在长度为w的有向边,那么矩阵edge[u][v]=w 那么加边就可以轻松实现了: void add(int u, int v, int w) { edge[u][v] = w; } 那么遍历点的出边也就
阅读全文
摘要:大家好我又来讲存图了 相信大家手写链表肯定方法都不一样 所以这里我们统一使用 邻接链表的基本思路就是给每一个点开一个链表 然后把与 点相连的点加入 点的链表中 问题来了:怎么存边权呢? 答:用结构体用pair! 把与 点相连的点加入 点的链表时,同时加入该点
阅读全文
摘要:这题和B2097 最长平台异曲同工 思路 从第二位开始枚举字符串,判断能否和前一位借上。 为什么不从第一位开始呢?因为第一位没有前一位。 如果能接上,记录当前的"平台"的长度。 否则就输出当前的答案,重置当前的字符和长度,接着往下找。 注意最后的"平台"的后面没有能和这个平台接不上的字符,所以要补一
阅读全文
摘要:思路 这题要求初始集合在操作之后 与输入集合相同。 步骤最少。 那不操作,集合不变,与初始集合相同。 而且一步也没有,就是步骤最少了。 代码 int main(){}
阅读全文
摘要:前置芝士 isupper(char c):判断 是否大写字母。 islower(char c):判断 是否小写字母。 toupper(char c):返回 的大写形式。 tolower(char c):返回 的小写形式。 上面四个函数都在 <cctype> 中 rev
阅读全文
摘要:前置芝士 round(double x) :将 四舍五入成整数。 思路 建一个新矩阵用来存放答案,枚举一遍原矩阵。 如果枚举到的点在边上,就直接把值赋给新矩阵。 否则就取原矩阵的点的上下左右中的平均值。 因为按顺序处理新矩阵时,下方和右方都是0, 所以不能用新矩阵的平均值。 代码 #incl
阅读全文
摘要:按照SteelBallRun说的,本文将会介绍set,map,vector和pair set set是按特定顺序存储唯一元素的容器。——C++ Reference 所谓特定顺序默认为升序。 定义 如果要定义一个存放int的set set<int> s; 如果要定义降序排列的set set<int,
阅读全文
摘要:T1 此题是模拟,直接按照题目模拟即可(别被哈希吓到) #include <iostream> using namespace std; int n, m, k, p[101], x, a[1000001];bool f; //f表示当前询问的位置有没有0 int main() { cin >> n
阅读全文
摘要:7.17更: 昨天spfa堆优化写错了,重发一下 #include <iostream> #include <queue> #include <utility> #include <functional> #include <cstring> #include <stack> using names
阅读全文
摘要:虽然很多人肯定都会了,我还是加深一下印象吧 首先,链式前向星需要一个结构体: struct Edge //存边 { int v, w, nxt; }edge[m]; v,w分别是终点,边权 若这条边的起点为u,则nxt是u的上一条出边的编号 还需要一个数组: int head[n]; head[u]
阅读全文
摘要:模板题 大佬们的位运算蒟蒻一直看不懂,于是就一直不敢碰快速幂 但是度娘给了我们学下去的希望 其实快速幂就是这么一个递归函数: 定义$ qp(a,b)=\left\{ \begin{aligned} & 1\ &b=0 \ & a\ &b=1\ & qp(a,b/2)^2\ &b\bmod 2=0
阅读全文
摘要:思路 观察样例,注意每一行和每一列的关系。 可以看出,第 i 行与第 i 列是完全一致的。 所以,我们只需要调换每一行与同序数的列即可。 换句话说,把行和列的下标换一下。 代码 #include <iostream> using namespace std; int a[101][101], at[
阅读全文
摘要:思路 用二维数组输入,保存 。 接着,枚举所有 ,根据公式求值。 可以看出,公式中变化的下标是从 到 的。 所以可以从 到 枚举这个下标。 注意每次枚举的边界。 代码 #include <iostream> #include <cstdio
阅读全文
摘要:这题快给我写吐了 单调队列模板题,我想试试用deque写 然后 #include <iostream> #include <deque> using namespace std; deque<int> p;int l, r, n, k, a[1000001]; struct min_q { dequ
阅读全文
摘要:思路 观察下图: 红色箭头代表枚举顺序。 我们4次枚举 ,依次判断 是否满足图中的四个条件。 注意左下-右上的箭头对于下标是逆序的,枚举时要注意。 代码 #include <iostream> #include <algorithm> using namespace std;
阅读全文
摘要:思路 枚举每个位置。 如果能和前面接上(和前一项相等)就累计长度,更新最大值。 否则把长度重置成1,继续枚举。 代码 #include <iostream> #include <algorithm> using namespace std; int n, k, t = 1, s, a[101]; i
阅读全文
摘要:思路 定义数组 表示 i 的出现次数。 枚举一遍原数组,统计每个数出现的次数。 然后从 0 到 fmax 遍历 cnt,输出从 0 到 fmax 每个数的出现次数。 代码 #include <iostream> #include <algorithm> using name
阅读全文
摘要:思路 排一遍序,找出最大值和最小值,累加剩下的值。 平均值即为累加值 。 再用平均值依次减所有有效值,找到差的绝对值的最大值。 代码 #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 数组 表示第 个灯是否关闭。 从 到 枚举每个人,对于每个人,枚举倍数。 令人数 倍数 ,再修改 人数 倍数 的状态。 代码 #include <iostream> using namespace
阅读全文
摘要:思路 用一个map<string,int>存每个人的总得分 用一个pair<string,int>数组存每回合的情况 找出最高总得分后,再建一个map<string,int>模拟每回合 如果过程中发现有人已经到达最高分,而且总分是最高分,输出这个人的名字 代码 #include <iostream>
阅读全文
摘要:思路 输入每个病人的年龄后,判断属于哪个年龄段,累加每个年龄段的人数。 最后用每个年龄段的人数 ÷ 总人数 × 100 输出即可。 注意 printf 输出一个百分号是printf("%%"); 代码 #include <iostream> #include <cstdio> using names
阅读全文
摘要:思路 因为 ,所以 。 又因为 ,所以 。 同理 ,枚举范围内所有 代码 #include <iostream> using namespace std; int a, b, c, an
阅读全文
摘要:队列模板题,容易出各种玄学错误 这题需要用到的 芝士: 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 里某个字符出现的次数。 把 里的每个数都转成 string,统计 '2' 的个数累加。 代码 #include <ios
阅读全文
摘要:思路 纯模拟,令 从 1 到 赋值,累加 。 注意多项式最后有一个 。 代码 #include <iostream> #include <cstdio> #include <cmath> using namespace std; double s = 1, x;int
阅读全文
摘要:思路 纯模拟,令 从 到 赋值,累加 。 注意公式开始时是 , 所以 的初始值要设成 。 要注意浮点数的转换和保留小数。 代码 #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 所以第十次
阅读全文
摘要:思路 结果只取最后三位,而之前的数不会参与幂的计算 所以第三位之前的数肯定和结果无关 可以每乘一次 就 一次 ,舍弃前面的数。 %03d可以在前面补满 3 位的 。 要注意结果 的初始值要设成 否则 乘以任何数都还是 代码 #
阅读全文
摘要:注意:题目中求的是大于 的整数 。 思路1 直接从2开始枚举 ,直到符合要求为止。 因为保证有解,可以不写循环边界。 代码1 #include <iostream> #include <algorithm> using namespace std; int a, b, c; in
阅读全文
摘要:思路 观察公式,设每一项的分母为 。 是奇数时加上 , 是偶数时减去 。 令 从 到 赋值,就可以得到结果。 代码 #include <iostream> #include <cstdio> using
阅读全文
摘要:观察题面,公式中分子分母都是斐波那契数列。 分母为第 项,分子为第 项。 斐波那契数列:每一项=前两项的和。 即 ,考虑打表。 我们就可以得到总共要打到第 项,打表程序: #include <iostream> #includ
阅读全文
摘要:思路 读入药房,人数,循环输入每个人拿的药。 比较当前的人拿的药与药房里剩下的药。 剩下的药比要拿的药多,就可以再拿。 如果剩下的药大于等于要拿的药,就从药房中拿走。 剩下的药比要拿的药少,就拿不了了。 拿不了就要计入答案。 代码 #include <iostream> using namespac
阅读全文
摘要:思路 输入数据时,判断是否第一组。 用第一组计算鸡尾酒疗法的有效率。 其他数据是新疗法有效率。 按题目要求比较两个有效率,输出新疗法的效果。 代码 #include <iostream> using namespace std; double n, a, b, x, y; //x为鸡尾酒疗法有效率,
阅读全文
摘要:思路 这题无非就是几个需要注意的点。 判别式: 。 当 时,方程有两个不相等的实数根; 当 时,方程有两个相等的实数根; 当 时,方程无实数根。 不同解根小者在前。 输入数据后,先计算 的值,判断 与 的关系。 根据
阅读全文
摘要:打开Code.exe同级目录 新建文件夹data 建两个文件夹 将%APPDATA%中的Code复制进data,重命名为user-data 将%USERPROFILE%\.vscode里所有东西复制进data 现在data应该是这样的: 完成 现在扩展和一些设置都会存到U盘里啦
阅读全文