03 2019 档案

摘要:又一道没有做出来的题 首先做最基础的mobius反演,可以得到,答案就是一堆fi^k乘起来,k是下面这个东西。 套路的用T代替id,并枚举T。 指数的式子变成 π(i|T) mu(T/i)✖(n/T)✖(m/T) 考虑先枚举指数再枚举i(没想到这一步!) 令dp[T]=π (i|T) f[i]^mu 阅读全文
posted @ 2019-03-31 23:28 Creed-qwq 阅读(203) 评论(0) 推荐(0) 编辑
摘要:https://www.luogu.org/problemnew/show/P3312 比较nb的一个题。 首先考虑没有a的限制怎么搞。 把d提到前面 mobius反演一下 令T=dx,把T挪到前面(没想到这一步!) 设F(x)=d(x)和mu(x)的狄利克雷卷积。 然后考虑怎么带上a的限制,只要能 阅读全文
posted @ 2019-03-31 21:15 Creed-qwq 阅读(172) 评论(0) 推荐(0) 编辑
摘要:题目求的东西可以转化为: 给你一个数,每次把它变成它的一个约数,重复k次,求方案数。(中间过程有一步不同则视为不同) 这个东西显然可以dp,但是n,k<=1e18。 考虑每个质因子分别算,就又转化为一个新的问题,给你一个数,每次可以把它变成一个<=它的数字,重复k次。求方案数。(中间过程有一步不同则 阅读全文
posted @ 2019-03-31 18:46 Creed-qwq 阅读(211) 评论(0) 推荐(0) 编辑
摘要:挺不错的一个题。 题意即为求一个图的独立集方案数。 如果原图是一棵树,可以直接大力f[x][0/1]来dp。 由于非树边很少,考虑2^11容斥,强制某些点必选,然后再O(n)dp,这样应该过不了。 发现这个容斥本质上是对一些点进行修改,修改的形式是强制它必须选。 直接xjb上一个ddp就没了。 这里 阅读全文
posted @ 2019-03-31 00:35 Creed-qwq 阅读(211) 评论(0) 推荐(0) 编辑
摘要:挺水的一个题,硬生生让我整复杂了。 直接转第二类stirling数。 设m=n 1。 ans=n sigema C(n 1,i)✖S(k,i)✖fac(i)✖2^(m✖(m 1)/2) 第二类stirling数NTT求一下。 然而n 阅读全文
posted @ 2019-03-29 23:38 Creed-qwq 阅读(106) 评论(0) 推荐(0) 编辑
摘要:a1[i]为i这个位置k距离内是否有A。 a2[i]为i这个位置k距离内是否有G。 。。。。。。 for(int i=1;i 阅读全文
posted @ 2019-03-29 19:13 Creed-qwq 阅读(107) 评论(0) 推荐(0) 编辑
摘要:题意:n 阅读全文
posted @ 2019-03-29 06:52 Creed-qwq 阅读(116) 评论(0) 推荐(0) 编辑
摘要:看了某神仙博客学了一手,基本的思路就是容斥入度为0的点。 n^2做法。 F(n)=sigema i (-1)(i-1)✖ C(n,i)✖ F(i)✖ 2(j*(i-j)) nlogn做法 对上述式子进行优化 (引用了yyb大佬博客的图片,非常感谢,侵删) (留下了不会用Latex的眼泪) 上述式子x 阅读全文
posted @ 2019-03-29 05:49 Creed-qwq 阅读(189) 评论(0) 推荐(0) 编辑
摘要:题面:https://www.luogu.org/problemnew/show/P4609 考虑先把最大值放了以后,左边a 1个圆排列,右边b 1个圆排列。 直接就是C(a 1+b 1,a 1) S(n 1,a 1+b 1)。 S为第一类斯特林数。 cpp include include incl 阅读全文
posted @ 2019-03-29 01:54 Creed-qwq 阅读(101) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2019-03-29 01:01 Creed-qwq 阅读(4) 评论(0) 推荐(0) 编辑
摘要:https://www.luogu.org/problemnew/show/P4384 容斥一下考虑计算切两刀使得三个串都不存在的s[l,r]的方案数。 分类讨论一下。 1.有三个互不相交的目标串 此时显然无解。 2.最左边的目标串和最右边的目标串相交 画一下图可以发现。 答案是一个sigema ( 阅读全文
posted @ 2019-03-21 09:03 Creed-qwq 阅读(116) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2019-03-19 02:44 Creed-qwq 阅读(4) 评论(0) 推荐(0) 编辑
摘要:直接爆搜的复杂度是2^n,对于n define N 110000 define L 100000 define eps 1e 7 define inf 1e9+7 define db double define ll long long define ldb long double using na 阅读全文
posted @ 2019-03-13 21:48 Creed-qwq 阅读(210) 评论(0) 推荐(0) 编辑
摘要:题目:https://www.luogu.org/problemnew/show/AT2112 对于这种找路径的就直接上点分治就好。 分治时,算出每一个点到分治重心的后能剩多少油,从分治重心走到每个点最少需要多少起始油量。 对这两个数组排序后合并即可。 注意,合并的时候要保证不属于同一棵子树,这个可 阅读全文
posted @ 2019-03-13 20:49 Creed-qwq 阅读(189) 评论(0) 推荐(0) 编辑
摘要:考虑什么时候区间长度=区间mex 把点按照权值从1到n顺序加入。 枚举权值的右端点,线段树维护每一个点的点数 边数。 点数显然很好维护,边数的话,考虑右端点移动以后,新加入一个数字。 看一下和它相邻的两个数字,如果比它小的话,就在线段树上做一次区间减法。 查询的时候,线段树上权值为1的位置即为合法区 阅读全文
posted @ 2019-03-12 07:12 Creed-qwq 阅读(175) 评论(0) 推荐(0) 编辑
摘要:这是一种经典的单调栈+线段树的维护方法。 从左到右枚举右端点。 线段树维护每一个左端点的max(+ or )min的值。 每次右端点移动的时候,把a[i]加入单调栈。 每弹栈一次,便在线段树上把对应弹掉的区间加上a[i] a[s[top]]。 时间复杂度是均摊O(nlogn)的。 阅读全文
posted @ 2019-03-12 06:55 Creed-qwq 阅读(215) 评论(0) 推荐(0) 编辑
摘要:先把所有询问离线一下。 从右向左枚举左端点,线段树维护每一个右端点的答案。 (这里的每一个右端点包含的答案只包括以它为右端点的当前最小的差值) 因此对于询问l,r,应该查询线段树l,r的区间最小值。 每次左端点移动的时候,暴力的做法是直接for过去更新每一个位置。 考虑怎么优化。 先考虑更新比左端点 阅读全文
posted @ 2019-03-11 23:13 Creed-qwq 阅读(213) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2019-03-10 22:19 Creed-qwq 阅读(12) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2019-03-03 10:09 Creed-qwq 阅读(6) 评论(0) 推荐(0) 编辑
摘要:FWT在三种位运算下都满足FWT(a×b)=FWT(a)*FWT(b) 其中or卷积和and卷积还可以通过FMT实现(本质上就是个高维前缀和) #include<bits/stdc++.h> #define N 1100000 #define eps 1e-7 #define inf 1e9+7 # 阅读全文
posted @ 2019-03-01 15:40 Creed-qwq 阅读(274) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示