摘要: 题目链接: "点这里" Solution: 设$f[i][j]$表示以j为左端点,合并后最大值为i的序列的右端点的位置 那么我们可以得到状态转移方程$f[i][j]=f[i 1][f[i 1][j]+1]$ 因为$N\le262144$,所以i最大可能为58,那么我们枚举即可 Code: cpp i阅读全文
posted @ 2019-05-24 20:12 DQY_dqy 阅读(1) 评论(0) 编辑
摘要: 用途: 一般用来求$a^x\equiv b\,\,(mod\,p)$的最小正整数解,其中gcd(a,p)=1 设$u=\lceil sqrt(p)\rceil$,则式子可以转化为$a^{iu j}\equiv b\,\,(mod\,p)$,其中$i\in[1,u],j\in[0,u)$ 于是$a^{阅读全文
posted @ 2019-05-16 18:26 DQY_dqy 阅读(13) 评论(0) 编辑
摘要: 01背包: 问题:有N件物品和一个容量为V的背包。第i件物品的体积是w[i],价值是v[i]。求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。 思路:对每种物品我们可以选择用或不用,则有状态转移方程$f[i][j]=max(f[i 1][j w[i]]+v[i],f[i]阅读全文
posted @ 2019-05-12 11:18 DQY_dqy 阅读(6) 评论(0) 编辑
摘要: 题目链接: "点这里" Solution: 本题首先把每个请求拆点,然后我们只需要判断时间限制,再来连边就行了 注意给出的$f,t$两个矩阵都是在空载情况下的定义 Code: cpp include define inf 1926081700 using namespace std; const i阅读全文
posted @ 2019-05-10 17:11 DQY_dqy 阅读(14) 评论(0) 编辑
摘要: 题目链接: "点这里" Solution: 刚开始以为是博弈论,然而不是。。。 首先考虑n方dp,设f(l,r)为只有$l$到$r$区间的钱的先手最大获利 那么我们可以得到式子f(l,r)=sum(l,r) min(f(l+1,r),f(l,r 1)),代表取左还是右 代码写出来是这样的: 不过这道阅读全文
posted @ 2019-05-09 18:00 DQY_dqy 阅读(8) 评论(0) 编辑
摘要: 题目链接: "点这里" Solution: 我们推导一下,不难得出它让我们求的东西,我们可以发现杀死所有的随从需要$m+1$张亵渎 设$S(x)=\sum_{i=1}^x i^{m+1}$,则题目要求的答案计算式为: $$ F(x)=\sum_{j=0}^m \sum_{i=j+1}^{m+1}S(阅读全文
posted @ 2019-05-09 11:24 DQY_dqy 阅读(13) 评论(0) 编辑
摘要: 题目链接: "点这里" 题目意思:令f(x)表示 define int long long using namespace std; const int mod=998244353; const int N=1e6+1; int l,r,k,u,ans,pro,f[N],fac[N]={1}; in阅读全文
posted @ 2019-05-08 18:20 DQY_dqy 阅读(16) 评论(0) 编辑
摘要: 题目链接: "点这里" 大致题意:给你一颗树,求出所有边权和能被3整除的路径数 Solution: 用一个pos数组来记录路径长度mod 3之后的数量 则答案为pos[1] pos[2] 2+pos[3] pos[3] 最后去除同子树内的答案即可 Code: cpp include define l阅读全文
posted @ 2019-05-07 18:32 DQY_dqy 阅读(8) 评论(0) 编辑
摘要: 题目链接: "点这里" 题目描述:给你一棵n个点的带权有根树,有p个询问,每次询问树中是否存在一条长度为Len的路径,如果是,输出Yes否输出No. 数据范围:$n\le1e5\,,p\le100\,,长度\le1e5$ Solution: 点分治裸题,没什么好讲的。不过注意当询问0时,答案应该是Y阅读全文
posted @ 2019-05-07 18:26 DQY_dqy 阅读(8) 评论(0) 编辑
摘要: 题目链接: "点这里" Solution: 点分治,算出点对之间的距离,记录所属子树和与跟之间的边数。 对于每个点,记录排序过后位置离自己最近的不同子树的点,记做go[x] 每次二分去更新,若遇到同一子树的点,则尝试用go[x]去更新 排序以距离为第一关键字,边数为第二关键字(这样二分出来的点一定是阅读全文
posted @ 2019-05-07 11:41 DQY_dqy 阅读(8) 评论(0) 编辑
摘要: 题目意思:给出一棵树,求出最小的k,使得,且在树中存在路径p,使得k =S且k第一种写T了QAQ) Code: cpp pragma GCC optimize(3) include define inf 2147483647 using namespace std; const int N=2e6+阅读全文
posted @ 2019-05-06 21:00 DQY_dqy 阅读(7) 评论(0) 编辑
摘要: 题目链接: "点这里" Solution: 把两个手镯都增加亮度,可以看做只增加一个手镯的亮度,设增加的亮度为x 则我们要求的是$\sum_{i=1}^n(a_i+x b_i)^2$的最小值,我们把它拆开: $$ \sum_{i=1}^n{a_i^2+b_i^2+2a_ib_i+x^2+2x(a_i阅读全文
posted @ 2019-05-01 11:30 DQY_dqy 阅读(30) 评论(0) 编辑
摘要: 题意:给你n个数字,对于任意s,s满足$s=u_i+u_j+u_k,i define ll long long define Pi acos( 1.0) using namespace std; const int N=1 1);u++,w=w wn){ cp x=a[u],y=w a[u+(l 1阅读全文
posted @ 2019-04-23 21:04 DQY_dqy 阅读(28) 评论(0) 编辑
摘要: 题意:给你N个数字,每次利用这N个数字中最多两个数字进行加法运算,来得到目标中的M个数字。 Solution: 我们先来看看多项式乘法:$A(x)=\sum_{i=0}^{n 1}a_ix^i$,$B(x)=\sum_{i=0}^{n 1}b_ix^i$,$C(x)=A(x)B(x)$ $$ c_k阅读全文
posted @ 2019-04-19 20:50 DQY_dqy 阅读(15) 评论(0) 编辑
摘要: 题意:给定序列a,b,求序列c,$c(k)=\sum_{i=k}^{n 1}a(i)b(i k)$ Solution: $$ c(k)=\sum_{i=k}^{n 1}a(i)b(i k)\\ c(k)=\sum_{i=0}^{n k 1}a(i+k)b(i)\\ 设ar(i)=a(n i 1)\\阅读全文
posted @ 2019-04-17 20:50 DQY_dqy 阅读(16) 评论(0) 编辑