
算法刷题
文章平均质量分 77
分享洛谷等OJ平台的题解,致力于排版做到最易读、讲解最通俗易懂!这是与你的分享,也是我自己的笔记。
异想之旅
一位热爱计算机技术和网络工程的高中生,退役的信竞&数竞选手,主攻Web开发
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法刷题【洛谷P1233】木棍加工(最长上升子序列、最长下降子序列模板题)
解这道题有两个步骤:首先推出这道题的答案即最长下降子序列,然后求解即可。第一步严谨的证明十分复杂,我就用一个符合直觉的描述来说服大家就好。信竞题没有必要全部严格证明。我们先来看第一步:构造数据 $(1,1),(2,2),(3,3),(4,4),(5,5)$,尝试按照柱状图的思路画出来他们(有点丑不要介意)...原创 2022-08-04 21:24:33 · 899 阅读 · 1 评论 -
算法刷题【洛谷P3375】【模板】KMP字符串匹配(KMP算法模板 超详细易懂讲解)
给出两个字符串 s_1s 1 和 s_2s 2 ,若 s_1s 1 的区间 [l, r][l,r] 子串与 s_2s 2 完全相同,则称 s_2s 2 在 s_1s 1 中出现了,其出现位置为 ll。现在请你求出 s_2s 2 在 s_1s 1 中所有出现的位置。定义一个字符串 ss 的 border 为 ss 的一个非 ss 本身的子串 tt,满足 tt 既是 ss 的前缀,又是 ss 的后缀。对于 s_2s 2原创 2022-06-04 03:04:24 · 953 阅读 · 2 评论 -
算法刷题【LOJ #10093】「一本通 3.5 练习 1」网络协议
原题来自:IOI 1996一些学校连接在一个计算机网络上。学校之间存在软件支援协议。每个学校都有它应支援的学校名单(学校 支援学校 ,并不表示学校 一定支援学校 )。当某校获得一个新软件时,无论是直接得到还是网络得到,该校都应立即将这个软件通过网络传送给它应支援的学校。因此,一个新软件若想让所有连接在网络上的学校都能使用,只需将其提供给一些学校即可。任务请编一个程序,根据学校间支援协议(各个学校的支援名单),计算最少需要将一个新软件直接提供给多少个学校,才能使软件通过网络被传送到所有学校;如原创 2022-05-17 20:30:22 · 318 阅读 · 0 评论 -
算法刷题【洛谷P4180 | BJWC2010】严格次小生成树
异想之旅:本人原创博客完全手敲,绝对非搬运,全网不可能有重复;本人无团队,仅为技术爱好者进行分享,所有内容不牵扯广告。本人所有文章仅在优快云、掘金和个人博客(一定是异想之旅域名)发布,除此之外全部是盗文!洛谷 P4180 [BJWC2010]严格次小生成树题目描述小 C 最近学了很多最小生成树的算法,Prim 算法、Kruskal 算法、消圈算法等等。正当小 C 洋洋得意之时,小 P 又来泼小 C 冷水了。小 P 说,让小 C 求出一个无向图的次小生成树,而且这个次小生成树还得是严格次小的,也就是原创 2022-04-16 12:23:21 · 592 阅读 · 0 评论 -
算法刷题【一本通YbtOJ1488】新的开始
异想之旅:本人原创博客完全手敲,绝对非搬运,全网不可能有重复;本人无团队,仅为技术爱好者进行分享,所有内容不牵扯广告。本人所有文章仅在优快云、掘金和个人博客(一定是异想之旅域名)发布,除此之外全部是盗文!先说句题外话,这个标题我很喜欢,种种原因吧做这道题的时候很emo(本来应该去写次小生成树的真的没有动力才来撕这道简单题)。做完一道水题,心情尚可了。1488:新的开始题目描述发展采矿业当然首先得有矿井,小 FF 花了上次探险获得的千分之一的财富请人在岛上挖了 nnn 口矿井,但他似乎忘记考虑的矿原创 2022-04-12 19:30:04 · 737 阅读 · 0 评论 -
算法刷题【洛谷P1991 | 一本通YbtOJ1487】无线通讯网 | 北极通讯网络
异想之旅:本人原创博客完全手敲,绝对非搬运,全网不可能有重复;本人无团队,仅为技术爱好者进行分享,所有内容不牵扯广告。本人所有文章仅在优快云、掘金和个人博客(一定是异想之旅域名)发布,除此之外全部是盗文!本题同时存在于,除输入数据的输入顺序外无任何区别,此处使用题目描述更详细的一本通的原题,洛谷题目思路完全相同,代码唯一区别会在注释中标明。1487:【例 2】北极通讯网络题目描述原题来自:Waterloo University 2002北极的某区域共有 nnn 座村庄,每座村庄的坐标用一对整数原创 2022-04-06 13:49:15 · 324 阅读 · 0 评论 -
算法刷题【洛谷P1661】扩散(三种解法:最小生成树 + 二分&并查集 + Floyd弗洛伊德)
两个点a、b连通,记作e(a,b),当且仅当a、b的扩散区域有公共部分。连通块的定义是块内的任意两个点u、v都必定存在路径e(u,a0),e(a0,a1),…,e(ak,v)。给定平面上的n给点,问最早什么时刻它们形成一个连通块。原创 2022-02-20 16:21:14 · 344 阅读 · 0 评论 -
算法刷题【洛谷P1185】绘制二叉树
题目描述二叉树是一种基本的数据结构,它要么为空,要么由根节点,左子树和右子树组成,同时左子树和右子树也分别是二叉树。当一颗二叉树高度为m-1m−1时,则共有mm层。除mm层外,其他各层的结点数都达到最大,且结点节点都在第mm层时,这就是一个满二叉树。现在,需要你用程序来绘制一棵二叉树,它由一颗满二叉树去掉若干结点而成。对于一颗满二叉树,我们需要按照以下要求绘制:1、结点用小写字母“o”表示,对于一个父亲结点,用“/”连接左子树,同样用“\”连接右子树。2、定义[i,j[i,j]为位于第ii原创 2022-02-06 22:46:06 · 1407 阅读 · 0 评论 -
算法刷题【洛谷P1080 & NOIP2012 提高组】国王游戏(附sort cmp函数使用警告)
展开题目描述恰逢 HH国国庆,国王邀请nn 位大臣来玩一个有奖游戏。首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。然后,让这 nn 位大臣排成一排,国王站在队伍的最前面。排好队后,所有的大臣都会获得国王奖赏的若干金币,每位大臣获得的金币数分别是:排在该大臣前面的所有人的左手上的数的乘积除以他自己右手上的数,然后向下取整得到的结果。国王不希望某一个大臣获得特别多的奖赏,所以他想请你帮他重新安排一下队伍的顺序,使得获得奖赏最多的大臣,所获奖赏尽可能的少。注意,国原创 2022-02-06 17:51:02 · 552 阅读 · 0 评论 -
算法刷题【洛谷P3383】线性筛素数(线性筛质数,欧拉筛法模板)
异想之旅:本人原创博客完全手敲,绝对非搬运,全网不可能有重复;本人无团队,仅为技术爱好者进行分享,所有内容不牵扯广告。本人所有文章仅在优快云和个人博客(一定是异想之旅域名)发布,除此之外全部是盗文!洛谷 P3383 线性筛素数题目描述如题,给定一个范围 nnn,有 qqq 个询问,每次输出第 kkk 小的素数。输入格式第一行包含两个正整数 n,qn,qn,q,分别表示查询的范围和查询的个数。接下来 qqq 行每行一个正整数 kkk,表示查询第 kkk 小的素数。输出格式输出 qqq 行,原创 2022-02-04 16:21:31 · 1373 阅读 · 0 评论 -
算法刷题【洛谷P2651】添加括号III
异想之旅:本人原创博客完全手敲,绝对非搬运,全网不可能有重复;本人无团队,仅为技术爱好者进行分享,所有内容不牵扯广告。本人所有文章仅在优快云和个人博客(一定是异想之旅域名)发布,除此之外全部是盗文!洛谷 P2651 添加括号III题目描述现在给出一个表达式,形如 a1/a2/a3/.../ana_{1}/a_{2}/a_{3}/.../a_{n}a1/a2/a3/.../an。如果直接计算,就是一个个除过去,比如 1/2/1/4=1/81/2/1/4 = 1/81/2/1/4=1/8。原创 2022-02-04 15:36:04 · 1518 阅读 · 0 评论 -
算法刷题【洛谷P1605】迷宫
异想之旅:本人原创博客完全手敲,绝对非搬运,全网不可能有重复;本人无团队,仅为技术爱好者进行分享,所有内容不牵扯广告。本人所有文章仅在优快云和个人博客(一定是异想之旅域名)发布,除此之外全部是盗文!洛谷 P1605 迷宫题目描述给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过。给定起点坐标和终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案。在迷宫中移动有上下左右四种方式,每次只能移动一个方格。数据保证起点上没有障碍。输入格式第一行N、M和T,N为行,M为列,T原创 2022-01-31 01:03:09 · 658 阅读 · 0 评论 -
算法刷题【洛谷P1825|USACO11OPEN】Corn Maze S
异想之旅:本人原创博客完全手敲,绝对非搬运,全网不可能有重复;本人无团队,仅为技术爱好者进行分享,所有内容不牵扯广告。本人所有文章仅在优快云和个人博客(一定是异想之旅域名)发布,除此之外全部是盗文!洛谷 P1825 Corn Maze S题目描述(跳过英文版,想看的请去原题)去年秋天,奶牛们去参观了一个玉米迷宫,迷宫里有一些传送装置,可以将奶牛从一点到另一点进行瞬间转移。这些装置可以双向使用:一头奶牛可以从这个装置的起点立即到此装置的终点,同时也可以从终点出发,到达这个装置的起点。如果一头奶牛处原创 2022-01-31 00:58:18 · 286 阅读 · 0 评论 -
算法刷题【洛谷P1593】因子和(附等比数列求和公式推导)
异想之旅:本人原创博客完全手敲,绝对非搬运,全网不可能有重复;本人无团队,仅为技术爱好者进行分享,所有内容不牵扯广告。本人所有文章仅在优快云和个人博客(一定是异想之旅域名)发布,除此之外全部是盗文!洛谷 P1593 因子和题目描述输入两个整数 aaa 和 bbb,求 aba^bab 的因子和。由于结果太大,只要输出它对 990199019901 取模的结果。输入格式仅一行,为两个整数 aaa 和 bbb。输出格式输出一行一个整数表示答案对 990199019901 取模的结果。输入输出原创 2022-01-30 22:54:43 · 1380 阅读 · 2 评论 -
算法刷题【洛谷U193909】华中
洛谷 U193909 华中题目描述严先生是华中科技大学的大一新生。体育选课了,严先生作为幸运 Ex 的联创人才,选上了“户外运动”这门课。严先生第一次课的内容是“定向越野”,具体来说是这样的:校园内共有 nnn 个检查点,他们之间有 n−1n − 1n−1 条路径相连。换句话说,检查点之间构成了一棵树。为了让事情更有趣一点,严先生把这些检查点划分为两种,权值分别为 000 和 111。但是学校有打卡规定,在一次越野之后,经过的所有检查点的权值异或和必须为 0。严先生的越野方案是这样的: 从某一个原创 2021-12-17 16:42:57 · 470 阅读 · 0 评论 -
算法刷题【洛谷U193902】橡皮泥
端点星 NOIP2021 临考模拟一 橡皮泥原创 2021-12-14 20:20:44 · 1021 阅读 · 0 评论 -
拓扑排序通俗描述及队列实现模板
题目描述:家谱树(信息学奥赛一本通-T1351)_Alex_McAvoy的博客-优快云博客概念部分为优快云博主「独-」的原创文章,遵循CC 4.0 BY-SA版权协议,按要求附上原文链接:https://blog.youkuaiyun.com/qq_41713256/article/details/80805338拓扑排序:在一个有向图中,对所有的节点进行排序,要求没有一个节点指向它前面的节点。算法概述:先统计所有节点的入度,对于入度为0的节点就可以分离出来,然后把这个节点指向的节点的入度减一。一直原创 2021-10-23 12:26:52 · 254 阅读 · 1 评论 -
算法刷题【洛谷P3366】最小生成树 - 模板(最小生成树Prim算法和Kruskal算法模板)
最小生成树真题可以康康这个:P3366 【模板】最小生成树 - 洛谷 | 计算机科学教育新生态C站最小生成树两种算法详解文章各个都是精品,但是到了代码……未免长了点,注释也不明了。这篇文章再给出信息学奥赛书上的两种算法模板。Prim算法算法详解推荐文章:Prim算法_杨氏计算机知识整理-优快云博客_prim算法以下可能是最简题解:#include <bits/stdc++.h>using namespace std;int g[101][101]; // 存放邻接矩阵//原创 2021-10-19 21:32:04 · 388 阅读 · 0 评论 -
算法刷题【洛谷P2078】朋友
题目背景小明在 A 公司工作,小红在 B 公司工作。题目描述这两个公司的员工有一个特点:一个公司的员工都是同性。A 公司有 N 名员工,其中有 P 对朋友关系。B 公司有 M 名员工,其中有 Q 对朋友关系。朋友的朋友一定还是朋友。每对朋友关系用两个整数 (Xi,Yi) 组成,表示朋友的编号分别为 Xi,Yi 。男人的编号是正数,女人的编号是负数。小明的编号是 1,小红的编号是 -1。大家都知道,小明和小红是朋友,那么,请你写一个程序求出两公司之间,通过小明和小红认识的人最多一共能配成多少对情侣原创 2021-10-10 13:32:49 · 1109 阅读 · 0 评论 -
算法刷题【洛谷P3367】并查集 - 模板
题目描述如题,现在有一个并查集,你需要完成合并和查询操作。输入格式第一行包含两个整数 N,M ,表示共有 N 个元素和 M 个操作。接下来 M 行,每行包含三个整数 Zi,Xi,Yi 。当 Zi=1 时,将 Xi 与 Yi 所在的集合合并。当 Zi=2 时,输出 Xi 与 Yi 是否在同一集合内,是的输出 Y ;否则输出 N 。输出格式对于每一个 Zi=2 的操作,都有一行输出,每行包含一个大写字母,为 Y 或者 N 。输入输出样例In 14 72 1 21 1 22 1 21原创 2021-10-10 00:26:26 · 327 阅读 · 0 评论 -
算法刷题【洛谷P1359】租用游艇(最短路径Floyd算法和Dijkstra算法模板题)
题目描述长江游艇俱乐部在长江上设置了 n 个游艇出租站 1,2,⋯,n 。游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇。游艇出租站 i 到游艇出租站 j 之间的租金为 r(i,j) (1≤i<j≤n) 。试设计一个算法,计算出从游艇出租站 1 到游艇出租站 n 所需的最少租金。输入格式第一行中有一个正整数 n,表示有 n 个游艇出租站。接下来的 n−1 行是一个半矩阵 r(i,j) (1≤i<j≤n) 。输出格式输出计算出的从游艇出租站 1 到游艇出租站 n 所原创 2021-10-09 23:43:54 · 542 阅读 · 0 评论 -
快速幂取模公式原理和C++实现
公式如下:(a * b) % c = (a % c) * (b % c) % c#include <bits/stdc++.h>using namespace std;int ksm(int m, int n, int k) { if (m == 1 || n == 0) return 1 % k; if (n % 2 == 0) return ((ksm(m, n / 2, k) % k) * (ksm(m, n / 2, k) % k)) % k;原创 2021-09-28 21:11:13 · 316 阅读 · 0 评论 -
算法刷题【洛谷P1786】帮贡排序——代码量子纠缠运行?
#include <bits/stdc++.h>using namespace std;struct node { string name, zw; long long bg, dj, id;} a[200], fbz[2];struct Node { string name; long long cnt;} zw[10];long long fbzl = 0;bool cmp(node x, node y) { if (x.bg !原创 2021-08-23 14:18:58 · 924 阅读 · 2 评论 -
算法刷题【洛谷P1591】阶乘数码
题目描述求 n! 中某个数码出现的次数。输入格式第一行为 t(t≤10),表示数据组数。接下来 tt 行,每行一个正整数 n(n≤1000) 和数码 a。输出格式对于每组数据,输出一个整数,表示 n! 中 a 出现的次数。输入输出样例In 125 27 0Out 112咋一看我好像题都没读懂(可能是我当时智障了吧……)于是直接看了题解意思很简单,就是n!的各个位置上a出现的次数然后看完题解意外得知了要高精*单精本着我命由我不由天的原则还是long long试了一下…原创 2021-08-22 20:21:46 · 779 阅读 · 0 评论 -
算法刷题【洛谷P1002 & NOIP2002 普及组】过河卒
题目描述棋盘上 A 点有一个过河卒,需要走到目标 B 点。卒行走的规则:可以向下、或者向右。同时在棋盘上 C 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。棋盘用坐标表示,A 点 (0,0)、B 点 (n,m),同样马的位置坐标是需要给出的。现在要求你计算出卒从 AA 点能够到达 BB 点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。输入格式一行四个正整数,分别表示 B 点坐标和马的坐标。输出格式一个整数,表示所有的路径条原创 2021-08-20 13:01:12 · 197 阅读 · 0 评论 -
算法刷题【洛谷P1025 & NOIP2001 提高组】数的划分(排列组合解法)
题目描述将整数 n 分成 k 份,且每份不能为空,任意两个方案不相同(不考虑顺序)。例如:n=7,k=3,下面三种分法被认为是相同的。1,1,5;1,5,1;5,1,1.问有多少种不同的分法。输入格式n,k (6<n≤200,2≤k≤6)输出格式1 个整数,即不同的分法。输入输出样例In 17 3Out 14说明/提示四种分法为:1,1,5;1,2,4;1,3,3;2,2,3.这道题的数据范围吧其实dfs暴力能过但是为了方便起见(并不是我不会dfs原创 2021-08-20 12:25:17 · 296 阅读 · 0 评论 -
算法刷题【OpenJudge & 编程兔】流感传染
题目描述有一批易感人群住在网格状的宿舍区内,宿舍区为n*n的矩阵,每个格点为一个房间,房间里可能住人,也可能空着。在第一天,有些房间里的人得了流感,以后每天,得流感的人会使其邻居传染上流感,(已经得病的不变),空房间不会传染。请输出第m天得流感的人数。输入输出格式输入格式:第一行一个数字n,n不超过100,表示有n*n的宿舍房间。接下来的n行,每行n个字符,’.’表示第一天该房间住着健康的人,’#’表示该房间空着,’@’表示第一天该房间住着得流感的人。接下来的一行是一个整数m,m不超过100。原创 2021-08-20 12:03:35 · 607 阅读 · 0 评论 -
算法刷题【洛谷P1443】马的遍历
题目描述有一个 n \times mn×m 的棋盘,在某个点 (x, y)(x,y) 上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步。输入格式输入只有一行四个整数,分别为 n, m, x, yn,m,x,y。输出格式一个 n \times mn×m 的矩阵,代表马到达某个点最少要走几步(左对齐,宽 55 格,不能到达则输出 -1−1)。输入输出样例In 13 3 1 1Out 10 3 2 3 -1 1 2 1 4原创 2021-08-20 11:48:34 · 792 阅读 · 5 评论