07 2021 档案

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

点击右上角即可分享
微信分享提示