11 2020 档案
摘要:“在一棵树上进行路径的修改、求极值、求和”乍一看只要线段树就能轻松解决,实际上,仅凭线段树是不能搞定它的。我们需要用到一种貌似高级的复杂算法——树链剖分。 树链剖分是把一棵树分割成若干条链,以便于维护信息的一种方法,其中最常用的是重链剖分(Heavy Path Decomposition,重路径分解
阅读全文
摘要:Codeforces Round #687 (Div. 2, based on Technocup 2021 Elimination Round 2) A. Prison Break https://codeforces.com/contest/1457/problem/A 题意:给定一个n行m列的
阅读全文
摘要:L2-016 愿天下有情人都是失散多年的兄妹 (25分) 呵呵。大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人、父母、祖父母、曾祖父母、高祖父母)则不可通婚。本题就请你帮助一对有情人判断一下,他们究竟是否可以成婚? 输入格式: 输入第一行给出一个正整数N(2 ≤ N ≤10
阅读全文
摘要:L2-014 列车调度 (25 分) 火车站的列车调度铁轨的结构如下图所示。 两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7}的
阅读全文
摘要:布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位。无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们是否能被安排同席。 输入格式: 输入第一行给出3个正整数:N(<= 100),即前来参宴的宾客总人数,则这些人从1到N编号;M为已知
阅读全文
摘要:对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?,最长对称子串为s PAT&TAP s,于是你应该输出11。 输入格式: 输入在一行中给出长度不超过1000的非空字符串。 输出格式: 在一行中输出最长对称子串的长度。 输入样例: Is PAT&T
阅读全文
摘要:写算法题的时候突然发现自己忘记基本的C++:cout格式化输出了,赶紧拉出以前的C++学习笔记重新看一看。 部分内容来自教程:C语言中文网(一个很棒的网站) 有时希望按照一定的格式进行输出,如按十六进制输出整数,输出浮点数时保留小数点后面两位,输出整数时按 6 个数字的宽度输出,宽度不足时左边补 0
阅读全文
摘要:分析: ⽤⼆维数 组v存储师⻔谱系关系,v[i]表示编号为i的师傅所拥有的徒弟,如果徒弟个数等于0, 也就是说这是个得道者,那么v[i][0]保存放⼤的倍数,⽽且⽤visit[i] = true标记当前的这个编号的⼈是 得道者~⽤深度 优先搜索,每当遇到 visit[index] = true也就是
阅读全文
摘要:问题描述: 给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串? 输入格式: 输入在一行中给出全部由小写英文字母组成的、长度在区间 [4, 1e6] 内的字符串。 输出格式: 在一行中输出至多删掉其中 3 个字符后不同字符串的个数。 解法: d[i]
阅读全文
摘要:对一个十进制数的各位数字做一次平方和,称作一次迭代。如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数。1 是一个幸福数。此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得到 68,3 次迭代后得到 100,最后得到 1。则 19 就是幸福数。显然,在一个幸福数迭代到 1 的过程中
阅读全文
摘要:在上一篇文章当中我们分享了强连通分量分解的一个经典算法Kosaraju算法,它的核心原理是通过将图翻转,以及两次递归来实现。今天介绍的算法名叫Tarjan,同样是一个很奇怪的名字,奇怪就对了,这也是以人名命名的。和Kosaraju算法比起来,它除了名字更好记之外,另外一个优点是它只需要一次递归,虽然
阅读全文
摘要:众所周知,ping命令是个非常实用的网络命令;有时,我们会发现在电脑中无法使用ping命令,一般来说,是由于电脑的环境变量出了问题,本文将介绍如何解决这个问题。 1.一般出现ping命令无法使用的情况如图: 2.我遇到的ping命令无法使用的情况,基本都是因为“环境变量”导致的,查看环境变量path
阅读全文
摘要:Kosaraju算法一看这个名字很奇怪就可以猜到它也是一个根据人名起的算法,它的发明人是S. Rao Kosaraju,这是一个在图论当中非常著名的算法,可以用来拆分有向图当中的强连通分量。 背景知识 这里有两个关键词,一个是有向图,另外一个是强连通分量。有向图是它的使用范围,我们只能使用在有向图当
阅读全文
摘要:做题之前,可以先到下面这个网站玩一会游戏: https://unixpapa.com/floodit/?sz=14&nc=6 游戏开发里面,比较常用的一个搜索算法是寻路算法,寻路算法里面用的最多的是A*算法以及很多优化的A*算法,对于只有4个方向的寻路算法,之前在网上见到有A*的位运算优化,性能非常
阅读全文
摘要:博弈算法中比较经典的一个博弈问题是巴什博奕,巴什博弈是这样的: 有一堆物品,数量为n,两个人轮流取,规定每次最多取m个,最少取1个。 我们定义先取者为F(first),后取者为S(second) 网上讲的很多不是很容易理解,我来讲一个非常容易理解的思路。 **推理1:**显然,如果n=m+1,那么由
阅读全文
摘要:呼,熬过一场考试,补下题吧 A. Robot Program 在一个二维无限方格中,初始时你在格子里,每秒你有5种决策:选择移动到上下左右四个格子中的一个或者停留在原地。你不能连续两秒做相同的决策,问最短时间走到格子 。 \[ 1 <= t <= 100,0<=x,y<=10^4
阅读全文
摘要:题目链接:点这里 题意:理解错了题意导致WA好几发,QAQ暴击 题意是判断给你的2*n-2个字符串是前缀还是后缀,不是判断这个字符串的内容...我真的欲哭无泪,理解能力太菜了 思路:将两个n-1长的字符串取出,先判断第一个取出的字符串和给出的字符串前缀的匹配程度。如果匹配程度大于半数,则这个为所需字
阅读全文
摘要:今天在网上看到了1987年国际C语言混乱代码大赛获奖的一行代码,代码只有一行,却穷尽了C中的精华。下面对这一行代码进行分析: main() { printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);} 任何复杂的东西源自自己了解的知识太少
阅读全文
摘要:本篇文章来自小北学长的公众号,仅做学习使用,部分内容做了适当理解性修改和添加了博主的个人经历。 注:这篇文章好好看完一定会让你掌握好指针的本质! 看到标题有没有想到什么? 是的,这一篇的文章主题是「指针与内存模型」 说到指针,就不可能脱离开内存,学会指针的人分为两种,一种是不了解内存模型,另外一种则
阅读全文
摘要:比赛链接:kick start Round A 2020 A. Allocation 题目链接 题意 给出 栋房子的价格,第 栋房子的价格为 ,你有 美元,问最多可以买多少栋房子? 思路 典型的贪心问题,将所有的房子按价格从低到高排序后选取即可。 代
阅读全文
摘要:Manacher 算法:解决最长回文子串的利器
阅读全文
摘要:bitset 一般代替 bool 数组使用,常用于优化空间,因为 bitset 中一个元素只占 1 bit。 bitset 的大小在定义使就需要确定。如果想要不定长的 bitset,就需要使用 vector。 bitset 的定义: bitset<16> bt; // 定义大小为16的bitset,
阅读全文
摘要:Farthest Nodes in a Tree Given a tree (a connected graph with no cycles), you have to find the farthest nodes in the tree. The edges of the tree are w
阅读全文
摘要:复健,时间有限题解比较简陋 A. Middle of the Contest 将小时转成分钟,得到起止时间在一天中的分钟数,取平均值即可,复杂度O(1)。平均值转换会时间的时候注意前导0。 void solve(int x) { x /= 2; printf("%02d:%02d\n", x / 6
阅读全文
摘要:要想在VScode里使用Vim需要先行按照插件 安装 vim 插件 VS Code 中输入快捷键 shift + ctrl + x, 或直接打开 扩展安装导航 搜索 vim, 选择 Vim , 点击 install 安装 安装结束后就可以使用 vscode 下的 vim 模式了 推荐: 关闭 vim
阅读全文
摘要:当你在社交网络平台注册时,一般总是被要求填写你的个人兴趣爱好,以便找到具有相同兴趣爱好的潜在的朋友。一个“社交集群”是指部分兴趣爱好相同的人的集合。你需要找出所有的社交集群。 输入格式: 输入在第一行给出一个正整数 N(≤1000),为社交网络平台注册的所有用户的人数。于是这些人从 1 到 N 编号
阅读全文
摘要:堆栈是一种经典的后进先出的线性结构,相关的操作主要有“入栈”(在堆栈顶插入一个元素)和“出栈”(将栈顶元素返回并从堆栈中删除)。本题要求你实现另一个附加的操作:“取中值”——即返回所有堆栈中元素键值的中值。给定 N 个元素,如果 N 是偶数,则中值定义为第 小元;若是奇数
阅读全文
摘要:韩梅梅喜欢满宇宙到处逛街。现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债。韩梅梅手边有 104 枚来自各个星球的硬币,需要请你帮她盘算一下,是否可能精确凑出要付的款额。 输入格式: 输入第一行给出两个正整数:N(≤ )是硬币的总个
阅读全文
摘要:在TechFlow学长的公众号里发现一道挺有意思的CF算法题,现在利用学长的思路学习一下 题目链接:https://codeforces.com/contest/1418/problem/C 题意 这道题的题意也很有意思,背景也是游戏。说是有一天你和你的基友一起在家打游戏,这个游戏一共有n个boss
阅读全文
摘要:动态规划当中有非常常见的一个分支——状态压缩动态规划,很多人对于状态压缩畏惧如虎,但其实并没有那么难,希望这文章能带你们学到这个经典的应用。 二进制表示状态 在讲解多重背包问题的时候,我们曾经讲过二进制表示法来解决多重背包。利用二进制的性质,将多个物品拆分成少数个物品,转化成了简单的零一背包来解决。
阅读全文
摘要:设立本专栏的初衷在于,我意识到我学习过的很多算法,一段时间不使用就会被我遗忘,于是决定把学习这些算法的过程记录下来,也同时分享给其他有需要的人。 本专栏默认读者会使用基本的C++语言且掌握基本的贪心、搜索、动态规划思想(部分文章也会补充 和 代码) 当前文章记录数:90
阅读全文
摘要:本文由TechFlow原创,本博文仅作为知识点学习,不会用于任何商业用途! 今天我们来看一个有趣的问题,通过这个有趣的问题,我们来了解一下在树形结构当中做动态规划的方法。 这个问题题意很简单,给定一棵树,并不一定是二叉树,树上的树枝带有权重,可以看成是长度。要求树上最长的链路的长度是多少? 比如我们
阅读全文
摘要:概述: 费马小定理和欧拉定理是数论中非常重要的两个定理,对解决整除问题和同余问题有着强大的功能。 费马小定理与欧拉定理 **费马小定理:**当 为质数且 不为 的倍数(即: 时有 另一个形式:
阅读全文
摘要:尽管目前使用的VS code可以使用插件一键构建和运行程序,但GDB作为调试利器,还是值得花时间去学习的。 概述 GDB(GNU Debugger) 是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 参考: gdb调试利器 进入GDB环境调试 加
阅读全文
摘要:A - 看我,看我,我最简单了 POJ - 2387 这道题是以前记录过的最短路板子题,然而我还是脑抽用Floyd交了一发 解题报告:https://www.cnblogs.com/RioTian/p/12879353.html B - 我也很简单 HDU - 1061 快速幂,注意对 取
阅读全文
摘要:Pollard-Rho 是一个很神奇的算法,用于在 的期望时间复杂度内计算合数 n 的某个非平凡因子(除了1和它本身以外能整除它的数)。事书上给出的复杂度是 , p 是 n 的某个最小因子,满足 p 与 n/p 互质。虽然是随机的
阅读全文
摘要:算法简介 Miller-Rabin算法,这是一个很高效的判断质数的方法,可以在用 的复杂度快速判断一个数是否是质数。它运用了费马小定理和二次探测定理这两个筛质数效率极高的方法。 费马小定理判质数 这个定理在 为质数
阅读全文
摘要:因为我们知道乘法有的时候会溢出,即使是 也可能在乘法时因为结果过大溢出(当模数也是 )。所以我们需要寻找一种能高效完成乘法操作并且不会爆 的算法,也就是快速乘。本文也将对几种常用快速乘及其优化技巧做个总结。 1
阅读全文
摘要:有一段时间没记录知识类的博客了,这篇博客就说一下SG函数和SG定理吧 SG函数是用于解决博弈论中公平组合游戏(Impartial Combinatorial Games,ICG)问题的一种方法。 什么是组合游戏 在竞赛中,组合游戏的题目一般有以下特点 题目描述一般为Alice、Bob 2人做游戏 A
阅读全文
摘要:是不是写模板题写多了?那我们来写点简单的数学吧(^_^) 今天没有任何板子题哦,希望大家开心AC -- hah,学长也太可耐了 题目难度预估: 简单:A/E/F 中等:D 困难:B/C (然后果真就只写出了简单题) A - AAA CodeForces - 359B int main() { //
阅读全文
摘要:1443A. Kids Seating 题意: 给你一个整数n,现在你需要从编号 ~ 中选出 个编号使得这些编号之间 ,不能整除。 看了半天,发现只要满足 即可 void solve() { ci
阅读全文
摘要:给定两个矩阵A和B,要求你计算它们的乘积矩阵 。需要注意的是,只有规模匹配的矩阵才可以相乘。即若A有 行、 列,B有 行、 列,则只有 与 相等时,两个矩阵才能相乘。 输入格式: 输入先后给出两个矩阵A
阅读全文
摘要:目前先放几道题面,等晚上做完实验补 Update:A ~ D,更新剩余的题面(题面复制会有链接水印,懒得一一去除、直接截图) A、签到 真·签到题 输出祝贺祖国成立70周年!即可 B、欧涛的烦恼 思路: 简单累加,然后注意取整即可 // Author : RioTian // Time : 20/1
阅读全文