登录社区云,与社区用户共同成长
邀请您加入社区
最大生成树
求次短路
建议、代码来源:deepseek。条负单向边,判断图上有没有。不用思考,求负环模板题。
一看,要求的是: f[n]=i=1∑nn! 一看,阶乘,不是可以递推吗? 但是因为这道题是高精度题,所以反而记忆化搜索相比普通的递推更加好写。 因为n≤50,所以我们需要维护的高精度乘法其实只需要两位数(用于已经得到的阶乘结果与下一项相乘),其实就是高精度乘上低精度的半高精度乘法,不需要正宗的高精度乘法来维护。 所以上手一个半高精度乘法和一个高精度加法(用于维护已经得到的x!和已经得到的f[x−
P5318 【深基18.例3】查找文献 题目描述 小 K 喜欢翻看洛谷博客获取知识。每篇文章可能会有若干个(也有可能没有)参考文献的链接指向别的博客文章。小 K 求知欲旺盛,如果他看了某篇文章,那么他一定会去看这篇文章的参考文献(如果他之前已经看过这篇参考文献的话就不用再看它了)。 假设洛谷博客里面一共有 $n(n\le10^5)$ 篇文章(编号为 1 到 $n$)以及 $m(m\le10^6)$
看成同时从左上开始传两个纸条,用f(i,j,k)表示这一步的横纵坐标之和为i,第一张纸条纵坐标为j,第二张纸条纵坐标为k(因为路径不重合,所以j≠k,不妨令j<k)。可以看出每走一步纸条的横纵坐标之和都会加一,所以i其实就是传递的次数+2. 每个状态可以由以下4种情况转移而来: 第一张纸条由上面,第二张纸条由上面 f(i,j,k)=max{f(i,j,k),f(i-1,j-1,k-1)+a[
经典区间 dp。 首先明确每行怎么取是没关联的,所以可以看成n行每行跑一次区间 dp。对于每行,设fl,r表示取区间l到r的最大值,这明显从大区间向小区间转移,但这里说一下从小区间向大区间转移。 对于一个区间,它乘的2i的这个i是第i次取数,就应等于区间长度,一个长度为len的区间从len−1转移得到,所以每次转移乘2就可以解决答案乘2i的问题。这里要好好体会。 记ai表示这一行的第i个数,对
P1347 排序 题目描述 一个不同的值的升序排序数列指的是一个从左到右元素依次增大的序列,例如,一个有序的数列 $A,B,C,D$ 表示 $A<B,B<C,C<D$。在这道题中,我们将给你一系列形如 $A<B$ 的关系,并要求你判断是否能够根据这些关系确定这个数列的顺序。 输入格式 第一行有两个正整数 $n,m$,$n$ 表示需要排序的元素数量,$2\leq n\leq
首先做这道题要掌握一个算法——Manacher算法 简要说他就是用来解决回文串相关问题的算法,并不高深 由题意可知,显然每一个和谐群体就是一个长度为奇数的回文串 用Manacher可以求每个位置的回文半径 因为我们只要求奇数个的回文串,那么显然我们不需要在字符串里添加一些无关字符 那么我们用Manacher求出以当前位置为中心的最长回文子串长度 所以我们就会在求的同时搞出最长的len 然后根据对称
简单枚举题。 思路 n2去枚举每个格子明显是行不通的做法,会喜提超空间。 我们先把每个地毯都存起来,直接考虑筛一遍所有毯子,每次判断有没有覆盖这个点,若覆盖就更新答案即可。 #include<bits/stdc++.h> #define int long long using namespace std; const int N=1e6+5; int a[N],b[N],g[N],k[