随笔分类 - 题解
摘要:"题目" 首先我们先把题目分析一下。 emmmm,这应该是一个找规律,应该可以打表,然后我们再分析一下图片,发现如果这个点可以被看到,那它的横坐标和纵坐标应该互质,而互质的条件就是它的横坐标和纵坐标的最大公约数为一,那这题的意思就变成了,在一个n n的方格内寻找所有点的横坐标和纵坐标互质的点的个数。
阅读全文
摘要:"最短路计数" 此题还是寻找从1到i点总共有几个最短路且每条边的边长为1,对于这种寻找最短路的个数,我们可以反向搜索,即先用$SPFA$预处理出所有点的最短路,然后我们反向记忆化搜索,可以用$sum[i]$表示从i到1的最短路个数,然后我们初始化$sum[1] = 1$,然后就可以了 代码: c++
阅读全文
摘要:"题目" 这个题好坑啊,首先是他会卡空间,然后我们就只能把一种比较好理解的状态给舍弃,因为空间开不下,然而采用一种难理解的状态就是$dp[i][j][l][0/1]$表示$i$,$j$位置,两者的差为$l$,当前由谁来吸收的方案数。 然后我们就可以推出状态转移方程,此状态转移方程很好写,主要就是状态
阅读全文
摘要:$ 题目描述 给定一个序列$A$,请你输出$\sum_{1 define mod 1000000007 using namespace std; long long sum[1000100][6]; long long ans = 0; int main() { int n; scanf("%d",
阅读全文
摘要:[题目]: https://www.luogu.org/problemnew/show/P1462 题意 题目是给定了一张双向边,有边权的图,然后让我们求出一个最小值,满足一条路径上的最大的费用小于这个最小值且这条路径的所损失的血量不超过总血量。 思路 往往这种求最大值的最小值一般就是二分,然后写个
阅读全文
摘要:[题目]: https://www.luogu.org/problemnew/show/P1330 题意 此题可以说是一个很裸的一个二分图染色,但是比较不同的是,这个图中可能是不联通的,因此我们需要找到所有的联通块,然后一一选出每个联通块中黑块与白块中最小的个数,然后加入到最后的答案中去,也是很坑的
阅读全文
摘要:题目 分析 这个题并不难,只是需要仔细思考我们首先可以很轻松的把这个题给疏通一下题意。 1:首先我们最后每个瓶子中装的水一定是一个$2^x$,因为每次都是$2$倍的加,这个应该很好理解。 2:我们要明白$n$转换成二进制后,所含$1$的个数是什么意思,可以从二进制的定义里面找,个数即是每个数如果分成
阅读全文
摘要:$题目$ 为什么这个题会有图论的标签啊,虽然图论也包括找树的重心,可是这很容易让人联想到最短路,但不得不说,这是一个典型的找树的重心模板题。 树的重心是什么? 找到一个点,其所有的子树中最大的子树节点数最少,则这个点便是树的重心。 而我们找树的重心该怎么找呢,我们可以从定义入手,我们可以搜索。 我们
阅读全文
摘要:$题目$ 不得不说,最近我特别爱刷这种区间DP题,因为这个跟其他的DP有些不一样的地方,主要是有一定的套路,就是通过小区间的状态更新大区间,从而得到原题给定区间的最优解。 $但是$ 这个题应该跟$石子合并$差不多,不同的几点就是一个是小区间加小区间,一个是小区间$*$小区间。实际上本质都是一样的,但
阅读全文
摘要:题目: 这个题很明显是一个区间DP,但是比较不同的是,这个题它很像区间DP的经典题——石子合并。 然后我傻傻的搞了这个题搞了一下午,然后几乎看遍了全网的题解,就只看懂了这个方法,可能是我太菜了吧,但是我还是不懂别人的题解为什么区间DP的右端点可以在左端点左边啊 因此我们可以先转化成石子合并,然后还要
阅读全文
摘要:题目 思想: 首先这个题必定是一个数学题,肯定不是一个一个枚举得到解,这样肯定会T,所以我们就应该想一些别的方法,。 分析: 比如,答案,一定是递减的,因为该答案所满足的条件肯定是越来越苛刻的,所以我们是不是可以想一些其他的特殊方法,来达到我们的目的,然后让我们摆脱gcd的束缚,来联想一下gcd的一
阅读全文
摘要:题目 做一个替我们首先要明确一下数据范围,n《=200,说明n^3的算法是可以过得,而且这个题很明显是一个图论题, 所以我们很容易想到这个题可以用folyd, 但是我在做这个题的时候因为没有深刻理解folyd的意义,因此导致调试了好几小时, folyd 的思想是dp,我们可以用表示和之间可以通过编号
阅读全文
摘要:题目 这个难度感觉并没有那么高,因为这个题暴力也好打,但是比较难想出正解,因为如果你不看标签是很难想到这个题竟然是二分,当然前缀和应该很好想,毕竟让你求的是在某段时间内借教室的和是否满足。 这样我们可以很容易的推出借的教室的个数和订单是成正对应的,因此他可以满足单调性,所以我们就可以用上二分。 而原
阅读全文
摘要:题目 这个题目有多种解法,这个题也是一个比较经典的题了,正是因为他的多样的做法,这个题主要难在建图和优化,因为这是一个网格图,所以spfa肯定过不去,所以用最短路解法的话,只能用dij,而网络流也是要加上几个必不可少的优化,具体在代码中解释: 代码:
阅读全文
摘要:题目 这个题也是一个很经典的题了。其主要思想也是二分答案,原因就是题目中只要出现最大值最小或最小值最大,这种描述十有八九就是二分答案。 这个题原题也是让我们求最短的跳跃距离的最大值。 显而易见,最大值肯定要在1到n之间。 所以我们就从1到n二分跳跃距离。这样就可以以log级别的时间复杂度来枚举出最大
阅读全文
摘要:先声明一点,这个题从一套模拟题中选取出来,所以可能会冒犯到原出题人。请谅解 题干: ysg,yxy,azw 三人正在刷题。 他们每做一题的时间都是一个有理数。 如果在某一时刻,三人同时做完一道 题,那么,他们会开始谈笑风生。 现在,他们想知道,从时刻 0 开始,至少要等多久才能谈笑风生。 输入格式
阅读全文
摘要:题目 这个题一开始能看出来是一道动态规划的题目,但是并不知道如何写状态转移方程,但是我们可以想一想这个题应该是一道区间DP,而区间DP的特点就是状态转移方程一般跟该区间的左节点和右节点或者中间断点有关,因为我们一次是从两个点中选一个而原题中的a值是(n-(left-right)),因此我们就可以得出
阅读全文
摘要:我们先看题面,一看是一个区间操作,再看一下数据范围,就可以很轻松地想到是用一个数据结构来加快区间查询和修改的速度,所以我们很自然的就想到了线段树。 但是这个题还跟普通的线段树不一样,这个题可以说要思考一下,我们可以知道一个区间内如果要修改的话那假如说原来有x个灯开着,那一次操作之后就变成了这个区间的
阅读全文
摘要:不得不说,这是道很难减少时间复杂度的题,且这个题有点像一道拓扑排序题,但是这个难度标签有点低。 我们应该可以想到拓扑排序可能是这个题的正解,但是题目中有输出总数,因此我们就可以造一个数组表示从这个点出发向下有几个食物链,然后最后再输出每个入度为零且出度不为零的点所记忆化搜索到的点的个数。 我们先上7
阅读全文
摘要:题目 这个题表面上看并不像DP,但是当我们看到方案数时,我们可能会想到什么??? 对,分类加法原理,在每一轮中,每一个点的方案数都要加上这个点左边的方案与右边的方案。 因此我们可以枚举,设一个DP数组DP[i][j]表示在第i轮j这个位置的的方案数,最后输出DP[m][1]; 代码:
阅读全文

浙公网安备 33010602011771号