自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不来也不去的一只失忆蝴蝶

曾迷途才怕追不上满街赶路人

  • 博客(28)
  • 收藏
  • 关注

原创 传球70分做法

题目描述 70分n<=1000dp容易看出被攻略的是连续一段。 设dp[l,r,0~1]表示攻略了[l,r],此时球在哪个端点。 我们需要预处理f与g。 f[i]表示从一个结点走至多走到顺时针走i步的位置情况下走到逆时针走1步的位置的概率。 假设顺时针走1步概率为p。 f[i]=1−p+p∗f[i−1]∗f[i]f[i]=1-p+p*f[i-1]*f[i] 1-p的概率直接走到,否则我

2016-07-15 22:03:19 396

原创 搬家

题目描述dp把两扇门之间那条链拉出来。 设f[l,r]表示链上的[l,r]都被攻略了的方案数,经典组合数转移。 要预处理链上每个节点延伸出去的子树方案。#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)#define fd(i,a,b) for(i=a;i>=b;i--)using namespac

2016-07-15 21:57:28 470

原创 NOI2016.7.15模拟赛总结

我今天又没有垫底(dp口气 第一题感觉部分分之间差异好大,发现自己好像一档都不太会,只对70分那一档有想法。dp状态很容易看出,关键在转移,推了一下之后就会了。但由于只会70分这一档导致不太懂如何验证我程序正确,就随手出几个小数据+读程序过了。 第二题不知道为什么总觉得要枚举第一个被占据的点,于是联赛难度狗礼都会做的题目(这不是本人的嘲讽)没想到怎么做,暴力还打挂了。 第三题感觉部分分也有点麻

2016-07-15 21:54:08 885

原创 肝bzoj十连测

其实好多题都不会的

2016-07-14 21:33:11 851

原创 [bzoj4555][TJOI&HEOI2016]求和

题目大意向卷积形式出发ans=∑i=0n∑j=0iS(i,j)∗2j∗j!ans=\sum_{i=0}^n\sum_{j=0}^iS(i,j)*2^j*j! 注意到第二类斯特林数的意义,将i个数分成j个集合的方案数,也就是说,当i<ji<j时,结果会为0,所以j的枚举上界可以直接改为n。 ans=∑i=0n∑j=0nS(i,j)∗2j∗j!ans=\sum_{i=0}^n\sum_{j=0}^n

2016-07-14 15:43:57 2372

原创 FFT及NTT模板

FFT其中2ce=len2^{ce}=lenvoid DFT(node *a,int sig){ fo(i,0,len-1){ int p=0; for(int j=0,tp=i;j<ce;j++,tp/=2) p=(p<<1)+(tp%2); tt[p]=a[i]; } for(int m=2;m<=len;m*=2){

2016-07-14 15:27:19 1713

原创 Jason做奥数

前言富榄好劲啊!题目大意TL做法为了方便,下面的L都用M代替。 显然可以分开每个质数来讨论。 枚举一个pcp^c,所带了的贡献是(pc)(m−⌊mpc+1⌋)n−(m−⌊mpc⌋)n(p^c)^{(m-\lfloor\frac{m}{p^{c+1}}\rfloor)^n-(m-\lfloor\frac{m}{p^c}\rfloor)^n} 为什么?很简单,LCM包含pcp^c表示p的指数至少有

2016-07-14 10:32:26 483

原创 Jason跳格子

前言富榄好强啊 !题目大意f[i]=max(f[j]+1)其中jCDQ分治明显的,我们可以CDQ分治。 对于solve(l,r),先递归处理solve(l,mid),然后我们用[l,mid]更新[mid+1,r]。我们可以按照a排序来做,b用线段树维护,当然排序有第二关键字那就是编号。 常数有点大,可以加个优化:线段树在查询时一个区间最大值为0直接返回0。#include<cstdio>#in

2016-07-14 10:22:59 752

原创 [bzoj十连测第五场 B]可持久化字符串

题目大意一个S的循环节T表示为可以找到一个正整数k使得S是TkT^k的前缀。 一次操作会在字符串尾部添加一个字符,并且你需要在每次操作后输出最小循环节长度。 要求可持久化与在线。只跳log步我们知道结论,答案就是i-f[i]。 如何可持久化KMP? 我们考虑一种做法让一次更新MP只需要跳KMP步。 具体的,如果目前在j,我们看f[j]+1是否与i匹配。 如果匹配,那么f[i]=f[j]+

2016-07-14 09:50:59 1132

原创 NOI2016.7.13模拟赛总结

今天的模拟赛我又没有垫底。(dp口气 wwt是一位非常良心的出题人。 T1:看完就秒了,送分题,一眼CDQ。看完题后看时限发现开了2s就不太虚了。而且比较清楚这种东西复杂度肯定是两个log的,所以方法应该是对的。打完+拍所耗时间不多,在程序正确性保证后测一发极限发现要跑2.3s,把max都改手打就要2.1s,于是卡时卡了好久,中途还加了错误优化导致WA,最后加了个玄学1.8s跑过去了。 T2:

2016-07-14 09:18:31 767

原创 NOI2016.7.12模拟赛总结

感觉做得不够好。 正如老师所说,第二题的40分,第三题的30分,人人都能拿,我却没拿到。 第二题为什么不拿40分? 没有发现循环串的长度就是i-next[i],其实我是知道这个东西的,但我以为只有循环串满足这个性质,没有想到任意串都是符合这个性质。没有仔细去对已知性质进行剖析,导致第二个部分分不会拿。 第三题为什么不拿30分? 30分我是打了的,甚至,为了获得更多的分数,我打了很久的60分

2016-07-12 21:58:53 794

原创 [bzoj十连测第五场 A]二进制的世界

题目大意不断询问一个数与当前集合内的一个数and/or/xor的最大值及最大值个数,并将该数加入集合中。分开来假如询问的数时B,集合内的数是A。 f[a,b]表示A的前8位是a,B的后8位是b,A的后8位与B的后8位位运算的结果最大值,个数也可以顺便保存一下。 询问时就枚举b,修改时就枚举a。#include<cstdio>#include<algorithm>#define fo(i,a,

2016-07-12 16:18:09 882

原创 [bzoj十连测第三场 A]哈夫曼树

题目描述期望的线性性和的期望=期望的和。 因此计算每个节点期望贡献再加起来即可。 一个结点的期望深度与其数值大小和所在数组位置无关,因此可以一视同仁。 假设还有i颗子树,我们显然知道一个结点肯定处于一颗子树内。只有在该轮其所在子树被合并时深度才会加一,所以贡献为被合并的概率*1。被合并的概率是i−1C2i=2i\frac{i-1}{C_i^2}=\frac{2}{i} 所以答案就是(∑ni=

2016-07-12 08:20:29 711

原创 [bzoj十连测第三场 B]线段树

题目大意有一个长度为n的序列与m个修改操作,每个修改操作是将序列[l,r]的元素都修改为这个区间的最大值。 现有q个操作,要么是修改序列的一个元素,要么是询问执行[l,r]的修改操作后,第k个元素是多少。询问之间独立,而修改会造成影响。搞一搞我们容易发现,每一个位置都可以被表示成一段区间的最大值。 我们枚举右端点r来离线做,把所有询问操作挂在其对应右端点上。 例如位置k,找到当前操作前最后一个

2016-07-11 20:45:57 675

原创 [bzoj4635]数论小测验

题目大意有两个问题: 1、求有多少个长度为n的序列,每个数都在[1,m],满足gcd(a1……an)=k 2、求有多少个长度为n的序列,每个数都在[1,m],满足k|lcm(a1……an) 现在给定l和r,求k取[l,r]时回答其中一种问题的答案和。第一题我们设f[i]表示k=i时的答案。 显然f[i]=⌊mi⌋n−∑⌊mi⌋j=2f[i∗j]f[i]=\lfloor\frac{m}{i}\

2016-07-10 20:55:26 866

原创 [bzoj4631]踩气球

题目大意有一个序列,每次将一个位置的数减去1(保证这个数大于0) 有m个区间,每次操作后你都要输出有多少个区间和为0。 强制在线。线段树搞搞这m个区间可以被分割到线段树上的log个区间,那我们就把这些区间挂上去。 线段树维护区间和(每个位置可以只用0或1表示) 每次修改时如果一个区间和为0,就处理所有挂在上面的区间。 具体的,可以用d[i]表示第i个区间被分成了多少段,那么就是把挂在上面的

2016-07-10 09:27:10 958

原创 冷战

题目大意有两种操作,添加一条边或者询问两点在哪次操作后联通。 强制在线。辣鸡LCT一条边的权值是其的加入时间。 询问操作便是询问路径上的最大值。 我们不会维护边权,因此可以把边变成的点,向两端连边。 愉快被卡常。#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace st

2016-07-07 20:36:07 583

原创 求和

题目描述推一下∑i=1n∑j=1mμ(i)∗μ(j)∗∑d|ijd\sum_{i=1}^n\sum_{j=1}^m\mu(i)*\mu(j)*\sum_{d|ij}d 对于每一个d|ij,一定可以把d拆成d=ab满足a|i且b|j,我们可以考虑枚举a和b。因为一个d有多种拆法,为了避免重复,需保证(a,j/b)=1,因为如果(a,j/b)=k>1的话,a/k和bk也是一种合法答案。 还记得莫比乌

2016-07-07 20:01:00 549

原创 与非

题目大意分类讨论假若一个0左边有数,那么执行到0这里结果肯定为1。 只有左边没数的0和1与1与非会产生0,假若能统计得到的0的个数,便可以计算异或和。 连续一段1如果最左端有数,这一段有j个1,可以造成j/2上取整个0。 于是我们可以预处理前缀答案,还有一个位置往左最多扩展(是1即可扩展),有啥用呢?待会会讲。 l=1我们就可以直接输出了,必须判掉这种情况不然会有麻烦。 然后我们可以分类讨

2016-07-07 16:36:46 514

原创 [51nod 1201]整数划分

题目大意把n分成若干个不同正整数求方案数。因确实挺每一种方案都可以由一种方式得到:初始只有一个1。 每一次把所有数加x(x为正整数),然后可以添加一个1。 于是用dp表示就是f[i,j]表示有i个数和为j。 那么根据上诉规则有递推式f[i,j]=f[i,j-i]+f[i-1,j-i] 最多会选多少个数?容易计算是根号级别的。#include<cstdio>#include<algorith

2016-07-04 21:27:38 661

原创 [bzoj十连测第二场 A]深邃

题目大意一棵树每个节点有颜色。 请将树分成若干连通块,使每个连通块均包含黑点。最小化最大的连通块的大小。二分看到双最直接二分。 二分了一个k,接下来怎么判定? 设f[i]表示以i为根的情况: 1、f[i]为正数,表示以i为根的子树内除了i所在连通块均合法,i所在连通块包含黑点时i所处连通块大小的最小值。 2、f[i]为负数,表示以i为根的子树内除了i所在连通块均合法,i所在连通块不包含黑点

2016-07-04 19:47:08 973

原创 [肝学习资料]构造题

Hack it CF468C定义f(x)表示x的数字和,给定a请输出一组l,r,使[l,r]的f值和为a的倍数 。对于x考虑10^y>x,那么显然f(x+10^y)-f(x)=1 设solve(l,r)表示[l,r]的答案,显然有solve(2,10^18+1)-solve(1,10^18)=1 相当于少了个f(1)多了个f(10^18+1),根据上面的结论差为1。 推广到一搬solve(x+

2016-07-03 21:41:18 1015

原创 [bzoj1172]Dream

题目大意n*m的矩形,从第一行开始依次取数。 第一行与最后一行只能取一个数,其余行可以取1~2个数。 问有多少种取数顺序使得所取的数乘积被p整除,答案模mo。DP我们想要知道乘积能否被p整除,所关心得只是乘积与p的gcd。 找出p的所有因子,可知其因子数量是三位数级别。 然后设f[i,j]表示前i行取了一些数使得乘积与p的gcd是p的第j个因子的方案。可以先在每一行内做,再进行转移。 当然

2016-07-03 09:57:49 495

原创 [UER #1C]Dzy Loves Graph

题目大意有n个结点,初始没有边。m个操作,操作类型有三: 1、a与b之间连一条长度为i的边(i为操作编号) 2、删除比边权最大的k条边。 3、撤销刚刚执行的操作,保证撤销的不是撤销操作。 每次操作后输出最小生成树所有边权和。可持久化并查集有许多版本,于是我们发现版本之间形成树的结构,为什么? 加入的边越来越大,因此删除操作相当于跳到k级祖先,每次添加操作就在下面加一个儿子,所以是树的结构。

2016-07-03 08:26:27 684

原创 [UER #6A]票数统计

题目大意有一个01序列。 有m个约束第i个约束为前xi和为yi与后yi和为xi两个条件至少满足一个。 求有多少种合法序列随便搞搞如果xi和yi不等,那么我们直接能判断出那个条件是必须满足的。 对于xi和yi相等的,找到最大的记为p。 接着我们容斥,左边至少p个连续1+右边至少p个连续1-两边都至少p个连续1。 现在说说已知一堆约束怎么求序列个数。 枚举序列中总共1的个数,然后后缀约束可以

2016-07-02 15:01:50 554

原创 COOHxNH2

题目描述随便搞搞显然如果有奇环我们就GG。 如果没有奇环我们是一定能对原图黑白染色的。 于是枚举一个点,从其出发bfs建分层图。 那么同一层都可以缩在一起,最长链是最大深度。 然后就做完了。#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;const in

2016-07-02 11:24:05 447

原创 Landlords

题目大意先手有n张牌,后手有m张牌,桌面上还有一张牌。n+m+1张牌互不相同且双方都知晓自己的牌是什么。 两人轮流操作,操作类型有二: 1、说桌面上的牌是什么,说对胜利,说错失败,执行此操作后游戏结束。 2、说一张牌,如果对方手里有则展示并弃置。 求先后手获胜概率。神奇的概率题我们来考虑一下第二个操作,我们可以选择 1、老老实实去试探对方的牌,称之为我是正昊 2、耍小聪明欺骗对方,报一张

2016-07-02 11:15:34 529

原创 Digits'path

题目描述最短路我们可以枚举二进制状态S表示每个数是否可以出现。 由于末位已经确定是an,所以可以得到最后是否一定是2或5的倍数,因此二进制状态无需枚举2和5。 假如知道一定是2的倍数,那么根据其是否是3的倍数可知其是否是6的倍数,因此二进制状态无需枚举6。 是4的倍数只要末两位是4的倍数即可,而最后一位确定,因此我们只需要保留倒数第二位模2的结果。 这样,需要2^3枚举二进制状态,然后f[i

2016-07-02 10:28:29 447

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除