牛客
少年白马
向阳奔跑,逆风成长
展开
-
牛客IOI周赛20-普及组(题解)
牛客IOI周赛20-普及组(题解)文章目录牛客IOI周赛20-普及组(题解)A —完全数方法一:打表判断方法二:暴力B 移动撤销C 石头剪刀布D 夹缝中求和方法一:区间方法二:二分查找A —完全数题目分析:首先,完全数是可以打表的,完全数就是那么几个直接打表判断,剩下的就是过剩数和不足数,那么有一个定理那就是奇数是不足数,偶数是过剩数,但是有一个特例,那就是2835,他虽然是一个奇数但是却是过剩数,特殊判断一下就行方法一:打表判断#include <iostream>#include原创 2020-12-19 23:24:05 · 314 阅读 · 1 评论 -
牛客 树上行走(并查集的巧妙应用)
树上行走题目描述牛牛苦练武功绝学——轻功水上漂,最终没有练成,但是他学会了在树上行走的本领。这天,牛牛落入了敌人的陷阱,身后有巨石追击,面前有n个点,n-1条边连成一张连通图(一棵树),现在牛牛必须立马选择进入这张图中,但是牛牛发现,这张图有两种不同的点,一旦进入一个点,所有与该点不同类型的点都会消失(相连的边也会消失),牛牛只能走到有边相连的点,牛牛想要自己尽量有更多的点可以活动,那么他可以进入哪些点?题目分析:因为在补其他题目的时候不小心看到这个题目考察的是并查集,但是不论我怎么想都不知道该怎么原创 2020-10-24 11:57:20 · 422 阅读 · 2 评论 -
poj 1753 Flip Game (dfs||位运算)
poj 1753 Flip Game牛客题目poj题目题目大意:就是说有一个4*4的棋盘,棋盘上有16个黑白棋子随机摆放b代表黑色棋子,w代表白色棋子,现在我们可以操作这个棋盘改变棋子的颜色使整个棋盘最终都只有一种颜色的棋子,操作就是翻转棋子,白色棋子翻转就是黑色,反之亦然,每次翻转一枚棋子,它的周围四个(上、下、左、右)四枚棋子都要随之翻转,求最小翻转次数,使得最终棋盘上只有一种颜色的棋子。输出:如果当前已经是符合题目的状态那么不用翻转,直接输出0,如果递归之后还是不能变为符合题目的状态那么输原创 2020-10-20 22:40:40 · 232 阅读 · 0 评论 -
上学要迟到了
单元最短路径问题题目链接以下是无意间看到的一位博主写的这个题目的题解,个人觉得写的非常好!!一位博主深入透彻的讲解这同样式那位博主花了很长时间写的博客,可以说注入了极大的心血,把自己的算法理解都写下来了透彻理解dijkstra+堆优化代码思想题目描述牛牛早上起床一看,自己睡过了,赶紧起床准备去学校,他去学校只有两种方式,坐公交车和步行,牛牛去学校是一条直线,这条直线上总共有n个车站,车站之间的距离都是相等的,每个车站只有一种公交车ai,每个公交车只在对应的公交站停车,每个公交车的速度也不一样,原创 2020-10-08 21:21:41 · 295 阅读 · 0 评论 -
牛客 maze (BFS/Dijkstra)
题目描述小明来到一个由n x m个格子组成的迷宫,有些格子是陷阱,用’#‘表示,小明进入陷阱就会死亡,’.'表示没有陷阱。小明所在的位置用’S’表示,目的地用’T’表示。小明只能向上下左右相邻的格子移动,每移动一次花费1秒。有q个单向传送阵,每个传送阵各有一个入口和一个出口,入口和出口都在迷宫的格子里,当走到或被传送到一个有传送阵入口的格子时,小明可以选择是否开启传送阵。如果开启传送阵,小明就会被传送到出口对应的格子里,这个过程会花费3秒;如果不开启传送阵,将不会发生任何事情,小明可以继续向上下左右四原创 2020-08-21 22:43:56 · 413 阅读 · 0 评论 -
牛客 简单的数据结构 (deque,vector,数组模拟)
题目描述栗酱有一天在网上冲浪的时候发现了一道很有意思的数据结构题。该数据结构形如长条形。一开始该容器为空,有以下七种操作。1 从前面插入元素a2 从前面删除一个元素3 从后面插入一个元素4 从后面删除一个元素5 将整个容器头尾翻转6 输出个数和所有元素7 对所有元素进行从小到大排序输入描述:只有一组数据,第一行n≤50000,m≤200000, a≤100000 代表最大数据数目和操作次数。接下来每一行一个操作如上描述。保证所有操作合法(不会在容器为空时删除元素)。6、7操作共计原创 2020-08-19 21:29:32 · 389 阅读 · 0 评论 -
牛客 吐泡泡 (栈和队列)
题目描述小鱼儿吐泡泡,嘟嘟嘟冒出来。小鱼儿会吐出两种泡泡:大泡泡"O",小泡泡"o"。两个相邻的小泡泡会融成一个大泡泡,两个相邻的大泡泡会爆掉。(是的你没看错,小气泡和大气泡不会产生任何变化的,原因我也不知道。)例如:ooOOoooO经过一段时间以后会变成oO。输入描述:数据有多组,处理到文件结束。每组输入包含一行仅有’O’与’o’组成的字符串。输出描述:每组输出仅包含一行,输出一行字符串代表小鱼儿吐出的泡泡经过融合以后所剩余的泡泡。输入ooOOoooO输出oO说明自左到右进原创 2020-08-16 09:40:12 · 713 阅读 · 0 评论 -
POJ 3126 Prime Path (BFS)
DescriptionThe ministers of the cabinet were quite upset by the message from the Chief of Security stating that they would all have to change the four-digit room numbers on their offices.— It is a matter of security to change such things every now and th原创 2020-08-14 17:48:16 · 133 阅读 · 0 评论 -
牛客 逆序数 (归并排序)
题目描述在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。比如一个序列为4 5 1 3 2, 那么这个序列的逆序数为7,逆序对分别为(4, 1), (4, 3), (4, 2), (5, 1), (5, 3), (5, 2),(3, 2)。输入描述:第一行有一个整数n(1 <= n <= 100000), 然后第二行跟着n个整数,对于第i个数a[i],(0 <= a[i] <= 100原创 2020-08-13 19:50:36 · 1352 阅读 · 2 评论 -
牛客 指纹锁 (Set)
题目描述HA实验有一套非常严密的安全保障体系,在HA实验基地的大门,有一个指纹锁。该指纹锁的加密算法会把一个指纹转化为一个不超过1e7的数字,两个指纹数值之差越小,就说明两个指纹越相似,当两个指纹的数值差≤k时,这两个指纹的持有者会被系统判定为同一个人。现在有3种操作,共m个,操作1:add x,表示为指纹锁录入一个指纹,该指纹对应的数字为x,如果系统内有一个与x相差≤k的指纹,则系统会忽略这次添加操作操作2:del x,表示删除指纹锁中的指纹x,若指纹锁中多个与x相差≤k的指纹,则全部删除,若指原创 2020-08-13 13:48:25 · 1497 阅读 · 0 评论 -
牛客 区区区间间间 (单调栈)
按照习惯一开始是要把题目复制一遍的,但是我想了一下,这个题目的符号复制过来会出现乱码,你说截图吧,又不想截图,那该怎么办,一时间不知道如何开始,所以就出现了上述的文字~~绝对的好题目!!!首先对于题目给出的公式,我们需要转化一下,我们把原式拆开就等到下面的公式转化之后我们就求所有区间长度大于1的子区间的最大值和最小值之和。首先我们用单调栈去维护以a[i]为区间的最大值,然后往左右两边去拓展,然后我们正反跑一次单调栈就能维护出l和r数组其中l[i]表示以a[i]为最大值,左边最多延伸到l[i],r原创 2020-08-10 11:00:38 · 311 阅读 · 0 评论 -
牛客 刺客信条 (bfs、dijkstra)+堆优化、dfs三种求解
最短路BFS+优先队列DFSdijkstra+堆优化题目描述万物皆虚,万事皆允,玩过刺客信条的人对这句话应该都不会感到陌生小A也是非常痴迷于这款游戏,正巧最近《刺客信条·奥德赛》发布了,然而其高昂的价格让小A苦恼不已于是,小A只好重玩一次最经典的刺客信条2,来抚慰自己受伤的心灵按照刺客信条2的剧情,艾吉奥需要前往威尼斯,从圣殿骑士手里夺取金苹果,然后前往罗马梵蒂冈刺杀教皇,拿取伊甸园神器“教皇权杖”但是由于小A已经玩过很多次这个游戏了,他对剧情和地图了如指掌,现在已经轻而易举地拿到了金苹果,返回原创 2020-08-01 00:51:02 · 1005 阅读 · 0 评论 -
牛客 华华给月月出题 (积性函数+欧拉筛+快速幂)
题目描述华华刚刚帮月月完成了作业。为了展示自己的学习水平之高超,华华还给月月出了一道类似的题:⊕符号表示异或和,详见样例解释。虽然月月写了个程序暴力的算出了答案,但是为了确保自己的答案没有错,希望你写个程序帮她验证一下。输入描述:输入一个正整数N。输出描述:输出答案Ans。输入3输出18说明示例2输入2005117输出复制863466972备注:PS:第一次遇见这种题目直接傻眼了,不知道这是一个积性函数,这个概念也没听说过,然后取学习了相关知识,不仅被这个题目所原创 2020-07-25 15:19:10 · 503 阅读 · 0 评论 -
牛客 同余方程 (数论之扩展欧几里得)
题目描述求关于x 的同余方程ax ≡ 1 (mod b)的最小正整数解。输入描述:输入只有一行,包含两个正整数a,b,用一个空格隔开。输出描述:输出只有一行,包含一个正整数x0,即最小正整数解。输入数据保证一定有解。输入3 10输出7备注:对于40%的数据,2≤b≤1,000;对于60%的数据,2≤b≤50,000,000;对于100%的数据,2≤a,b≤2,000,000,000。附上一篇讲解扩展欧几里得算法很清晰的博客扩展欧几里得算法PS: 算是初次接触数论吧,但是很有意思原创 2020-07-24 17:05:43 · 418 阅读 · 0 评论 -
牛客 Rinne Loves Dynamic Graph (最短路dp与分层最短路)
题目描述Rinne 学到了一个新的奇妙的东西叫做动态图,这里的动态图的定义是边权可以随着操作而变动的图。当我们在这个图上经过一条边的时候,这个图上所有边的边权都会发生变动。定义变动函数 ,表示我们在图上走过一条边后,图的边权变动情况。这里指的“图的变动”的意思是将每条边的边权代入上函数,得到的值即为该次变动后的边权。现在 Rinne 想要知道,在这个变动的图上从 1 到 n 的最短路径。因为 Rinne 不喜欢负数,所以她只需要你输出经过的边权权值绝对值之和最小的那个值就可以了。输出答案保留原创 2020-07-23 22:53:01 · 255 阅读 · 1 评论 -
牛客 新建 Microsoft Office Word 文档 (模拟+优先队列)
题目描述CSL正在学习《计算机办公自动化》文件的建立与删除。CSL发现,当他新建一个word文档时,会得到一个名为"新建 Microsoft Office Word 文档.doc"的文件,再新建一个,则名为"新建 Microsoft Office Word 文档(2).doc",再新建,便是"新建 Microsoft Office Word 文档(3).doc"。不断新建,编号不断递增。倘若他已经新建了三个文档,然后删除了"新建 Microsoft Office Word 文档(2).doc",再新建一原创 2020-07-19 23:25:08 · 260 阅读 · 0 评论 -
牛客 小雨坐地铁 (分层图+最短路)
分层图+最短路小雨坐地铁 分层图+最短路题目分析spfa+链式前向星dijkstra+链式前向星题目分析ps:刚刚开始看这个题目的时候,看完一遍不理解,再看一遍还是不理解,于是冷静一波~发现这个题目真的很复杂!!!题目是求最短路,最短路可以参考我的另外一篇博客快速理解最短路径算法对于这个题目而言,我们需要去做出一个分层图出来,因为地铁线之间有交叉,所以在存储完地铁线之后,我们需要对建立一个超级源点,并且规定,从地铁站到超级源点需要不需要花费,而从超级源点到地铁站需要花费,这就相当于一个中转站.原创 2020-07-19 00:35:32 · 627 阅读 · 4 评论 -
牛客 Diff-prime Pairs (数论+埃氏筛+前缀和)
题目描述输入描述:Input has only one line containing a positive integer N.1 ≤ N ≤ 107输出描述:Output one line containing a non-negative integer indicating the number of diff-prime pairs (i,j) where i, j ≤ N示例1输入3输出2示例2输入5输出6首先附上官方题解:Main Idea: Math, P原创 2020-07-12 19:32:59 · 366 阅读 · 0 评论 -
牛客 Running Median (对顶堆)
For this problem, you will write a program that reads in a sequence of 32-bit signed integers. After each odd-indexed value is read, output the median (middle value) of the elements received so far.输入描述:The first line of input contains a single integer P原创 2020-07-03 00:24:02 · 303 阅读 · 0 评论 -
牛客 关押罪犯 (并查集+贪心)
题目描述S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值为c 的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并造成影响力为c 的冲突事件。每年年末,警察局会将本年内监狱中的所有冲突事件按影响力从大到小排成一个列表,然后上报到S 城Z 市长那里。公务繁忙的Z 市长只会去看列表中的第一个事原创 2020-06-28 20:13:39 · 393 阅读 · 0 评论 -
牛客 程序自动分析 (离散化+并查集)
程序自动分析并查集+快速排序+去重+二分查找+离散化离散化(map)+并查集三级目录题目描述在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足。考虑一个约束满足问题的简化版本:假设 ????1, ????2, ????3, ⋯ 代表程序中出现的变量,给定 ???? 个形如 ???????? = ???????? 或 ???????? ≠ ???????? 的变量相等/不等的约束条件,请判定是否可以分别为每一个变量赋予恰当的值,使得上述所有约束条件同时被满足。例如,一个问题中的约束条件原创 2020-06-28 01:35:59 · 270 阅读 · 0 评论 -
牛客 食物链(最经典的并查集)
食物链三倍空间并查集带权并查集题目描述动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B,B吃C,C吃A。现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这N个动物所构成的食物链关系进行描述:第一种说法是“1 X Y”,表示X和Y是同类。第二种说法是“2 X Y”,表示X吃Y。此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则原创 2020-06-22 20:52:00 · 594 阅读 · 2 评论 -
牛客 经商(并查集+01背包)
小d是一个搞房地产的土豪。每个人经商都有每个人经商的手段,当然人际关系是需要放在首位的。小d每一个月都需要列出来一个人际关系表,表示他们搞房地产的人的一个人际关系网,但是他的精力有限,对应他只能和能够接触到的人交际。比如1认识2,2认识3,那么1就可以接触3进行交际,当然1和2也可以交际。小d还很精明,他知道他和谁交际的深获得的利益大,接下来他根据自己的想法又列出来一个利益表,表示他和这些人交际需要耗用多少精力,能够获得的利益值为多少。小d想知道,他在精力范围内,能够获得的利益值到底是多少。设定小d原创 2020-06-19 01:29:54 · 362 阅读 · 0 评论 -
牛客 值周 (差分+前缀和,离散)
题目描述JC内长度为L的马路上有一些值周同学,每两个相邻的同学之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,…L,都有一个值周同学。 由于水宝宝有用一些区间来和ssy搞事情,所以为了避免这种事走漏风声,水宝宝要踹走一些区域的人。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的人(包括区域端点处的两个人)赶走。你的任务是计算将这些人都赶走后,马原创 2020-06-06 18:52:52 · 625 阅读 · 0 评论 -
牛客 拼数 (字符串比较大小)
题目描述设有n个正整数(n ≤ 20),将它们联接成一排,组成一个最大的多位整数。例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613输入描述:第一行,一个正整数n。第二行,n个正整数。输出描述:一个正整数,表示最大的整数输入313 312 343输出34331213PS:字符串比较大小,String a,b;若a+b>b+a,那么应有a排在b前面。然后用快排就行,最后原创 2020-06-02 23:00:51 · 322 阅读 · 0 评论 -
牛客 激光炸弹(二维前缀和)
二维前缀和二维前缀和的简单介绍题目——激光炸弹二维前缀和的简单介绍二维前缀和顾名思义,用一个点去代表一个矩形,查询的时间是O(1)sum[ i ][ j ]表示(0,0)到(i,j)的前缀和。先给出递推公式 sum[ i ][ j ] = map[ i ][ j ]+sum[ i-1 ][ j ]+sum[ i ][ j-1 ]-sum[ i-1 ][ j-1 ]看图就知道了,sum[i][j] 表示的是蓝区域红区域加黄区域再加右下角那个sum[i-1][j] 表示的是蓝区域加黄区域,sum[原创 2020-05-31 11:30:26 · 331 阅读 · 0 评论 -
牛客 月月查华华手机(枚举优化)
题目传送门题目分析1.这个题目如果直接暴力那么时间复杂度太大,那么我们可以用优化方法,直接跳转到后面的字符一一比较,只要有一个不符合,那么就return 0;2.我们开两个数组,用last数组不断地更新a字符串每个位置的字母,再把它赋给二维数组nec,我们用nec数组来记录每一个字母后面字母出现的相应位置3.为什么要从后面开始遍历,以为这样非常方便的更新last数组的值,每往前一位,就再...原创 2020-05-05 17:20:55 · 249 阅读 · 0 评论 -
滑动窗口(单调队列模板题)
滑动窗口这是一道单调队列的模板题参考链接#include <bits/stdc++.h>using namespace std;const int maxn = 1e6 + 10;int a[maxn], du[maxn];int n, m;int main(){ while (~scanf("%d%d", &n, &m)) { ...原创 2020-05-05 11:00:32 · 195 阅读 · 0 评论