算法
文章平均质量分 60
C2020lax
这个作者很懒,什么都没留下…
展开
-
C++图论SPFA算法例题———————最优贸易
题目描述:C 国有n个大城市和m 条道路,每条道路连接这n 个城市中的某两个城市。任意两个城市之间最多只有一条道路直接相连。这m 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的道路在统计条数时也计为1 条。C 国幅员辽阔,各地的资源分布情况各不相同,这就导致了同一种商品在不同城市的价格不一定相同。但是,同一种商品在同一个城市的买入价和卖出价始终是相同的。商人阿龙...原创 2019-11-09 16:58:58 · 1298 阅读 · 0 评论 -
C++图论与矩阵加速—————[SCOI2009]迷路(道路千万条)
题目描述:道路千万条,安全第一条!宏帆校区到渝北校区有很多种走法,我们可以把走法看成N个节点的有向图,假设宏帆代表0号节点,渝北代表N-1号节点,GM想从0号节点出发,到N-1号节点,但必须恰好在T时刻到达!你能告诉GM一共有多少种走法吗?注意:GM不能在某个节点逗留,且通过某有向边时严格为给定时间(边权)。输入:第一行包含两个整数,N T。 接下来有 N 行,每行一个长度为 N 的字...原创 2019-04-16 13:28:44 · 418 阅读 · 0 评论 -
C++数论—————洛谷P2568 GCD
题目描述:给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对。输入:一个整数N(1<=N<=10^7)输出:答案输入样例:4输出样例:4思路分析:这一题是一个较简单的模板题:首先,我们先用欧拉筛法,求出1~N的所有质数,其中我们在欧拉筛法中求出1~N的欧拉函数,而欧拉函数就是1~N-1中与...原创 2019-04-09 13:30:00 · 346 阅读 · 0 评论 -
C++矩阵加速—————Warcraft III 守望者的烦恼
题目描述:守望者-warden,长期在暗夜精灵的的首都艾萨琳内担任视察监狱的任务,监狱是成长条行的,守望者warden拥有一个技能名叫“闪烁”,这个技能可以把她传送到后面的监狱内查看,她比较懒,一般不查看完所有的监狱,只是从入口进入,然后再从出口出来就算完成任务了。头脑并不发达的warden最近在思考一个问题,她的闪烁技能是可以升级的,k级的闪烁技能最多可以向前移动k个监狱,一共有n个监狱...原创 2019-04-12 14:13:40 · 393 阅读 · 0 评论 -
C++矩阵及其加速—————求斐波拉契数列第n项讲解
前言:也许你只是不小心点入了此博客,为了不眛自己的良心,首先我们会介绍什么是矩阵。概念:在数学中,矩阵(Matrix)是一个按照长方阵列排列的实数或复数集合,最早来自于方程组的系数及常数所构成的方阵。由m×n个数aij排成的m行n列的数表称为m行n列的矩阵,简称m×n矩阵。记作:而矩阵中的各个元素就是元。元素是实数的矩阵称为实矩阵,元素是复数的矩阵称为复矩阵。而行数与列...原创 2019-04-02 13:33:38 · 1044 阅读 · 0 评论 -
C++数论—————弹药科技
题目描述:经过精灵族全力抵挡,精灵终于坚持到了联络系统的重建,于是精灵向人类求助,大魔法师伊扎洛决定弓}用博士的最新科技来抗敌。伊扎洛:“博士,还没好吗?”博士:“只差一步了!只需要在正确的位置装上弹药就可以了!”博士的最新科技是全新的炸弹,但是现在还需要一步装弹药的操作。博士的炸弹有N!个位置可以装弹药(>.<),但是只有在正确的位置装上弹药才能启动,博士将装弹药的位...原创 2019-04-10 14:10:29 · 270 阅读 · 0 评论 -
C++树形DP—————二叉苹果树
题目描述:有一棵苹果树,如果树枝有分叉,一定是分 2 叉(就是说没有只有 1 个儿子的结点)。这棵树共有 N 个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是 1。 我们用一根树枝两端连接的结点的编号来描述一根树枝的位置。下面是一颗有 4 个树枝的树:现在这颗树枝条太多了,需要剪枝。但是一些树枝上长有苹果。 给定需要保留的树枝数量,求出最多能留住多少苹果。输入:第1...原创 2019-03-28 14:04:10 · 868 阅读 · 0 评论 -
C++矩阵加速例题斐波拉契数列变式—————TR的数列
题目描述:TR非常喜欢数学,经常一个人拿出草稿纸研究奇奇怪怪的数学问题,最近,他突然对数列产生了兴趣,他找到一个数列,类似于斐波拉契,即:Tn=1*f1+2*f2+3*f3+……+n*fn (fn为斐波拉契的第n项值)现在TR想请你帮忙求Tn%m的值输入:两个用空格隔开的整数n和m1≤n,m≤-1输出:Tn mod m的值输入样例:5 5输出样例:...原创 2019-04-04 12:33:55 · 320 阅读 · 0 评论 -
C++容斥原理—————表达式计数
题目描述:给出n个数,b1,b2,b3……bn,构造n个数,a1,a2,……an(ai>1),使得a1*a2*a3……an=b1*b2……bn;问一共有多少种数列a1,a2,……an满足上述条件。输入:包含多组输入数据每组数据第一行有1个整数n(1<=n<=20)每组数据第 二行有n个整数第i个数表示bi.(1<bi<=1000000)且b1*...原创 2019-03-25 13:27:44 · 1511 阅读 · 0 评论 -
C++基础数论—————容斥原理
前言: 温馨提示,此篇博客将涉及排列组合(链接)。概念: 在计数时,必须注意没有重复,没有遗漏。为了使重叠部分不被重复计算,人们研究出一种新的计数方法,这种方法的基本思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复,这种计数的方法称为容斥原理。 好了,我们理解...原创 2019-03-18 13:25:40 · 2780 阅读 · 0 评论 -
C++高级搜索算法迭代加深—————骑士精神
题目描述:在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士,且有一个空位。在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵坐标相差为1的格子)移动到空位上。给定一个初始的棋盘,怎样才能经过移动变成如下目标棋盘:为了体现出骑士精神,他们必须以最少的步数完成任务。输入:输出:输入样例:210...原创 2019-04-30 13:22:34 · 995 阅读 · 0 评论 -
C++Pollard_rho分解质因数及其例题—————Prime Test
前言:在观看此博客之前请学习miller_rabin。我们在分解质因子时也许只会用试根法(也就是暴力)。而在此我们将学习一个玄学的算法——Pollard_rho。概念:Pollard_rho是一种基于随机的算法,它的思路是先用miller_rabin来判断当前数是否已经是素数了,如果是的话记录并返回。如果不是,我们设要分解的数为n,那么我们考虑去找一个当前数的因数p,找到之后再...原创 2019-04-25 13:36:54 · 1124 阅读 · 0 评论 -
C++迭代加深搜索及其例题讲解—————Addition Chains
前言:学习算法时,一个关键的问题是什么时候来使用它。在一些搜索问题中,使用普通的DFS可能会让你把时间浪费在深度非常大而且答案不是最优的搜索过程上,甚至有的时候DFS搜索的深度是无穷的,而BFS虽说理论上可以避免这种情况,却又无法满足题目的某些需求,或者无法实现。仔细思考一下这个例子,它有着两个特征:一是它是个最优解问题,二是最优的答案深度最小,如右图:但是我们的答案有三个,若我们要a...原创 2019-04-25 17:27:41 · 1470 阅读 · 0 评论 -
C++RMQ算法—————A Magic Lamp
题目描述:Kiki likes traveling. One day she finds a magic lamp, unfortunately the genie in the lamp is not so kind. Kiki must answer a question, and then the genie will realize one of her dreams.The qu...原创 2019-05-29 13:12:09 · 434 阅读 · 0 评论 -
C++关于质数的判定与筛法
前言: 质数,是相伴了我们许久的老朋友,从小学到中学无处不在。 质数,就是一个数的因子只有它自己或本身的数叫做质数。 现在我们主要来讨论它的一些秘密。质数的判定: 首先是素数的判定定理: 若从2到的数中,都没有它的约数,那么它一定是一个质数,不用解释应该就能明白,n=a*b(a<=b),则a最大为。 代码如下:...原创 2019-03-04 14:13:39 · 2462 阅读 · 0 评论 -
C++图论强连通分量讲解
前言:强连通分量好强,老师好喜欢(考)。概念:在有向图G中,如果两点互相可达,则称这两个点强连通,如果G中任意两点互相可达,则称G是强连通图。 1、一个有向图是强连通的,当且仅当G中有一个回路,它至少包含每个节点一次。 2、非强连通有向图的极大强连通子图,称为强连通分量。在这张图中,{1,2,3,4}是一个强联通分量{5},{6}分别是另外两个强联通分量。...原创 2019-05-30 17:39:00 · 1941 阅读 · 0 评论 -
C++RMQ算法—————Find the hotel
题目描述:Summer again! Flynn is ready for another tour around. Since the tour would take three or more days, it is important to find a hotel that meets for a reasonable price and gets as near as possi...原创 2019-05-27 13:45:54 · 395 阅读 · 0 评论 -
C++最近公共祖先(LCA)例题—————求和
题目描述:master 对树上的求和非常感兴趣。他生成了一棵有根树,并且希望多次询问这棵树上一段路径上所有节点深度的k次方和,而且每次的k 可能是不同的。此处节点深度的定义是这个节点到根的路径上的边数。他把这个问题交给了pupil,但pupil 并不会这么复杂的操作,你能帮他解决吗?输入:第一行包含一个正整数n ,表示树的节点数。之后n-1 行每行两个空格隔开的正整数i,...原创 2019-05-22 13:22:32 · 1105 阅读 · 0 评论 -
C++高级搜索算法例题及讲解—————Sudoku
题目描述:Sudoku is a very simple task. A square table with 9 rows and 9 columns is divided to 9 smaller squares 3x3 as shown on the Figure. In some of the cells are written decimal digits from 1 to 9. T...原创 2019-05-16 17:31:58 · 1224 阅读 · 0 评论 -
C++高级搜索—————Robot
题目描述;The Robot Moving Institute is using a robot in their local store to transport different items. Of course the robot should spend only the minimum time necessary when travelling from one place in...原创 2019-05-15 14:40:49 · 451 阅读 · 0 评论 -
C++树形DP基础—————战略游戏
目录:题目描述输入输出输入样例输出样例提示思路分析代码实现题目描述:Bob喜欢玩电脑游戏,特别是战略游戏。但是他经常无法找到快速玩过游戏的办法。现在他有个问题。他要建立一个古城堡,城堡中的路形成一棵树。他要在这棵树的结点上放置最少数目的士兵,使得这些士兵能了望到所有的路。 注意,某个士兵在一个结点上时,与该结点相连的所有边将都可以被了望到。请你编一程...原创 2019-03-13 13:38:25 · 1569 阅读 · 0 评论 -
C++树形DP—————[USACO08 JAN金组]电话网络
题目描述:Farmer John决定为他的所有奶牛都配备手机,以此鼓励她们互相交流。不过,为此FJ必须在奶牛们居住的N(1 <= N <= 10,000)块草地中选一些建上无线电通讯塔,来保证任意两块草地间都存在手机信号。所有的N块草地按1..N顺次编号。 所有草地中只有N-1对是相邻的,不过对任意两块草地A和B(1 <= A <= N;1 <=...原创 2019-03-12 13:29:29 · 1295 阅读 · 0 评论 -
C++数论容斥原理—————无关的元素
题目描述;对于给定的n个数a1,a2,...,an,依次求出相邻两数之和,将得到一个新数列。重复上述操作,最后结果将变成一个数。问这个数除以m的余数与哪些数无关?例如n=3,m=2时,第一次求和得到a1+a2,a2+a3,再次求和得到a1+2a2+a3,它除以2的余数和a2无关。输入:第1行:2个整数n和m(1<=n<=10^5, 2 <=m<=10^9)...原创 2019-03-20 14:23:53 · 396 阅读 · 0 评论 -
C++动态规划及单调队列的优化—————拥挤的奶牛(挤奶牛Crowded Cows)和弹簧高跷(POGO的牛Pogo-Cow)
题目描述:FJ的n头奶牛(1<=n<=50000)在被放养在一维的牧场。第i头奶牛站在位置x(i),并且x(i)处有一个高度值h(i)(1<=x(i),h(i)<=1000000000)。一头奶牛感觉到拥挤当且仅当它的左右两端都有一头奶牛所在的高度至少是它的2倍,且和它的距离最多为D。尽管感到拥挤的奶牛会产生更少的牛奶,FJ还是想知道一共有多上感到拥挤的奶牛。请你帮...原创 2019-01-03 13:59:30 · 1652 阅读 · 0 评论 -
C++01背包问题————新年趣事之打牌
题目描述:过年的时候,大人们最喜欢的活动,就是打牌了。xiaomengxian不会打牌,只好坐在一边看着。 这天,正当一群人打牌打得起劲的时候,突然有人喊道:“这副牌少了几张!”众人一数,果然是少了。于是这副牌的主人得意地说:“这是一幅特制的牌,我知道整副牌每一张的重量。只要我们称一下剩下的牌的总重量,就能知道少了哪些牌了。”大家都觉得这个办法不错,于是称出剩下的牌的总重量,开始计算少了哪些牌...原创 2019-01-10 17:44:35 · 3134 阅读 · 0 评论 -
C++有依赖的背包问题—————金明的预算方案
题目描述:金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”。今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子:如果要买归类为附件的物品,必须先买该附件所属的主件。每个主件可以有0个、1...原创 2018-12-29 13:12:40 · 635 阅读 · 0 评论 -
C++路径规划与奶牛飞盘(社内测试2)
题目描述:有n个点,m条无向边,有A,B两个人,初始时刻A在点1,B在点2,他们要走到点n去。A每走一条边,要消耗B单位能量,B每走一条边,要消耗E单位能量。如果A,B相伴走,则只消耗P单位的能量。请问A,B走到点n,最少要消耗多少能量?输入数据保证1和n,2和n连通。输入:第一行包含整数B,E,P,N和M,所有的整数都不超过40000,N>=3.接下来M行,每行两个整数...原创 2018-12-27 17:10:55 · 581 阅读 · 0 评论 -
C++树状数组模板题 敌兵布阵解题报告
题目描述: C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视。 中央情报局要研究敌人究...原创 2018-12-03 14:08:47 · 481 阅读 · 0 评论 -
C++基础动态规划与图论综合 挖地雷题解
题目描述:在一个地图上有N个地窖,依次编号为1..N,每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径。例如在下图中:上图表示,地窖1可以挖到地窖2,地窖3;地窖2可以挖到地窖4;地窖3可以挖到地窖4,地窖5;地窖4可以挖到地窖5. 当地窖及其连接的数据给出之后,某人可以从任一处开始挖地雷,然后可以沿着某条路径接着往下挖(仅能选择一条路径),当某个地窖无连接时挖地雷工作结...原创 2018-12-10 13:45:42 · 2343 阅读 · 0 评论 -
C++单调队列与单调栈 滑动窗口题解
题目描述:现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。例如:The array is [1 3 -1 -3 5 3 6 7], and k = 3.输入:第1行:2个整数N,K(K<=N<=1000000) 第2行:N个整数,表示数组的N个元素(&l...原创 2018-12-11 14:20:38 · 517 阅读 · 0 评论 -
C++单调栈与单调队列 矩形牛棚
题目描述:到底是个资本家,Farmer John想通过买更多的奶牛来扩大它的生意。它需要给奶牛建造一个新的牛棚。 FJ买了一个矩形的R(1 <= R <= 3000)行C(1 <= C <= 3000)列的牧场。不幸的是,他发现某些1 x 1的区域被损坏了,所以它不可能在把整个牧场建造成牛棚了。FJ数了一下,发现有P(1 <= p <= 30000)个1...原创 2018-12-14 14:15:11 · 459 阅读 · 1 评论 -
C++算法综合运用之测量温度与奶牛慢跑(社内小测1)题解
测量温度:某国进行了连续N(1<=N<=1000000)天的温度测量,测量存在误差,测量结果是第i天温度在[l_i,r_i]范围内。其中-10^9<l_i<=r_i<=10^9求最长的连续的一段,满足该段内可能温度不降。输入:第一行一个整数n。接下来n行,每一行两个整数,表示l_i和r_i。输出:接下来输出一个整数,表示答案。样例输入:...原创 2018-12-18 14:15:50 · 494 阅读 · 0 评论 -
C++简单数论均值不等式————整数划分
题目描述:读入一个正整数n。要求将n写成若干个正整数之和,并且使这些正整数的乘积最大。例如,n=13,则当n表示为4+3+3+3(或2+2+3+3+3)时,乘积=108为最大。输入:一个整数n。(0<n<31000)输出:第1行输出一个整数,为最大乘积的位数。第2行输出最大乘积的前100位,如果不足100位,则按实际位数输出最大乘积。(提示:在给定的范围内,最大...原创 2019-01-08 13:31:08 · 602 阅读 · 0 评论 -
浅谈线段树及其例题讲解
简介:线段树是一种数据结构,它是一种便于区间修改与区间查找的数据结构,而他叫做线段树而不是直线树,这说明他与线段有关,线段树存储的是一个线段(即为左端点与右端点),而他的子节点是左端点到mid与mid+1到右端点的线段(左端点与右端点相等为止)。具体结构如下图:现在我们对他有了一个概念性的了解,而我们现在想一想,该如何存储他呢?线段树的存储:线段树的存储有两种方法一.指针法...原创 2019-01-15 13:07:55 · 572 阅读 · 0 评论 -
C++树形DP基础—————求树的重心
题目描述:树的重心定义为树的某个节点,当去掉该节点后,树的各个连通分量中,节点数最多的连通分量其节点数达到最小值。树可能存在多个重心。如下图(自制),当去掉点1后,树将分成两个连通块:(2,4,5),(3,6,7),则最大的连通块包含节点个数为3。若去掉点2,则树将分成3个部分,(4),(5),(1,3,6,7)最大的连通块包含4个节点;第一种方法可以得到更小的最大联通分量。可以发现,其他方案...原创 2019-03-11 13:26:08 · 12010 阅读 · 5 评论 -
C++Legendre定理及其例题讲解—————方程
前言:Legendre定理是一个你无法想象到的定理,而它的用处也是十分的大,现在亲听我慢慢讲解。Legendre定理:设n为一个正整数,那么在的标准素因子分解式中,素数p的最高次项为,则 当模数不为素数,且不方便使用CRT进行合并时,可以考虑对组合数分解质因...原创 2019-03-07 17:51:16 · 1563 阅读 · 0 评论 -
基础数论—————论拉格朗日插值法
前言:此博客将没有任何的代码,纯数学,若已经明白拉格朗日插值法的就可以离开了(但是阅读量增加了,O(∩_∩)O~)。好了,现在我们回归正题,什么是拉格朗日插值法。简介:拉格朗日插值法,顾名思义,就是拉格朗日的插值法,是在数值分析中,拉格朗日插值法是以法国十八世纪数学家约瑟夫·拉格朗日命名的一种多项式插值方法。许多实际问题中都用函数来表示某种内在联系或规律,而不少函数都只能通过实验和...原创 2019-03-07 16:48:48 · 598 阅读 · 0 评论 -
C++树形DP基础例题—————没有上司的晚会
题目描述:BackgroundThe president of the Ural State University is going to make an 80'th Anniversary party. The university has a hierarchical structure of employees; that is, the supervisor relation fo...原创 2019-03-06 14:54:08 · 507 阅读 · 0 评论 -
C++树形DP基础例题————— 树的最大独立集
题目描述:对于一棵有N个结点的无根树,选出尽量多的结点,使得任何两个结点均不相邻(称为最大独立集)。题目输入:第1行:1个整数N(1 <= N <= 6000),表示树的结点个数,树中结点的编号从1..N接下来N-1行,每行2个整数u,v,表示树中的一条边连接结点u和v题目输出:第1行:1个整数,表示最大独立集的结点个数样例输入:111 21 ...原创 2019-03-06 12:51:22 · 898 阅读 · 0 评论 -
C++初等数论同余——欧拉函数与CRT
前言: 在我们开始学习欧拉函数与CRT之前,我们得先搞清楚什么是同余。 两个整数同时除于一个相同的数,如果它们的余数相等,则称它们两个数互余。 符号语言: 当然它一定是有一些性质的,下面请听我慢慢介绍。 一是自反性: 二是对称性: 三是传递性: 当然它还有等价定义: 而这也说明了:若则。注意...原创 2019-03-01 14:08:54 · 970 阅读 · 0 评论