自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Faithfully-xly的博客

Never ever lose your passion to follow your dream

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

原创 费马小定理+插板法 - Sum(HDU4704)

传送门Analysis绝对是题目描述的问题注意:在这道题中1+1+2=41+1+2=41+1+2=4 和 1+2+1=41+2+1=41+2+1=4是两种不同的方案但2+2=42+2=42+2=4和2+2=42+2=42+2=4只能算一种所以不算球盒问题那八类中的任何一类直接插板法思考即可将n看作n个1,那么有n-1个板子,每个板子都有选和不选两种方法ans=2n−1ans=2...

2019-08-25 16:13:31 199

原创 2019暑假学习

总觉得该写点什么了

2019-08-25 09:22:06 202 3

原创 容斥原理 - 分糖(SOJ 747)

分糖题目描述有 N 个(相同的)糖果,M 个(不同的)小朋友。M 和 N 满足:1≤M≤N≤100000(105)。要求:1.每个小朋友都至少有一个糖果。2.不存在正整数 X(X>=2),使得每个小朋友的糖果数都是 X 的倍数。3.糖果不能剩余。求分糖方法总数。答案模 1000000007(109+7)输入格式第一行为数据组数:T<=100000。接下来 N 行,每...

2019-08-23 21:17:46 391

原创 广义欧拉定理+打表 - Last Digits(POJ2720)

传送门Analysis好啊。。。。看起来蛮递归降幂,蛮容易hhhh……时间过不去原来要打表还要记录(多组数据)因为指数与模数不一定满足互质,所以在降幂的时候要分类讨论(指数是否大于φ(mod))由于直接讨论不知道怎么做所以……1e7以下的打表算出来剩下的讨论即可Code#include<cstdio>#include<algorithm>#in...

2019-08-23 16:45:53 245

转载 【转载】c++中setw()与setfill()的用法详情

Learning在C++中,setw(int n)用来控制输出间隔。例如:cout<<‘s’<<setw(8)<<‘a’<<endl;则在屏幕显示s   a//s与a之间有7个空格,加上a就8个位置setw()只对其后面紧跟的输出产生作用,如上例中,表示’a’共占8个位置,不足的用空格填充。若输入的内容超过setw()设置的长度,则按实...

2019-08-23 15:30:05 505

原创 组合数学+高精度 - 看电影(movie)(BZOJ 2227)

传送门Analysis真的好棒的一道题啊!!!!概率即为合法方案除以总方案总方案显然是knk^nkn合法方案就很妙了考虑增加一个位置,连成环那么所有的方案就都合法了(随便怎么选都可以使得每个人找到位置坐下)有(k+1)n(k+1)^n(k+1)n种,由于是圆排列,所以要除以(k+1)(k+1)(k+1)然后再考虑破环成链,每一个空位置我们都可以断开,有(k+1−n)(k+1-n)...

2019-08-23 12:09:14 210

原创 基环树

基环树找环有向图:void getloop(){ int x=1; memset(cir,false,sizeof(cir)); while (!cir[x]) cir[x]=true,x=pre[x]; lis[0]=0; memset(cir,false,sizeof(cir)); while (!cir[x]) lis[++...

2019-08-22 16:50:58 161

原创 组合数奇偶性的判断(附证明)

Learning方法一:计算一下,然后看它的奇偶性;但是这个时间以及数据范围上都不允许;方法二对于给定C(n,m),检查n!中2因子的个数与m!和(n-m)!中2因子个数和的关系,假设n!中2因子个数为a,m!中2因子个数为b,(n-m)!中2因子个数为c,则显然有a>=(b+c);并且当a==b+c时,一定为奇,否则为偶。方法三由方法2可以很容易(稍后给出证明)地看出,n!...

2019-08-22 15:12:15 2290 2

原创 快速计算n!中素因子的个数

Learning我们来一个样例说明一下:1 2 3 4 5 6 7 8 我们求得在8!中2的个数 1 1  1   首先我们先计算出2的倍数的个数:8/2=4   1  1   其次我们计算出4的倍数的个数: 8/4=2      1   最后我们解出第三层的2的个数: 8/8=1我们把4+2+1=7,所以一共7个2出现了。即:cnt(x)=[n/(x1)]+[n/(x2)]+[n...

2019-08-22 14:32:09 744

原创 第二类斯特林数 - Push Botton Lock(POJ 3088)

传送门Analysis手动分析一波样例就出来了枚举参与组合的数 i (因为题目中说了可以不用完所有的数),再枚举将其分为的集合数 j (这就是第二类Stirling数的标准长相,因为对于每一个集合中的数我们不考虑顺序),那么最终的答案就是ans=(in)∗[ji]∗j!ans=(_i^n)*[^i_j]*j!ans=(in​)∗[ji​]∗j!()–>组合数[]–>第二类斯...

2019-08-22 10:12:27 237

原创 第二类斯特林数 - Rhyme Schemes(POJ 1671)

传送门第一次应用Stirling,并没有看出来不过看了题解后,直呼太妙Analysis题意:n行诗存在的韵律组合数。思路:第二类Stirling数是把n个元素放入k个等价类的方法数目(每个等价类都不能为空)。注意到此题的'行数'>='韵律数',可以把'行数'抽象为n个元素,'韵律数'抽象为k个等价类.所求即为:把n行放入k个‘韵律’中的方法数( 其中:1=< k...

2019-08-22 09:38:01 214

原创 网络流 - 魔术球问题(luogu 2765)

传送门Analysishttps://www.cnblogs.com/qixingzhi/p/9419319.htmlhttp://hzwer.com/1878.html放两个链接,这两篇题解对比着看理解每个网络流的写法和匹配数的统计方法更深入地理解这道题【有时间再来填坑吧···】Code#include<bits/stdc++.h>#define re reg...

2019-08-20 19:37:25 111

原创 组合数学の学习笔记

组合数常用公式Cnm=n!(n−m)!∗m!C_n^m=\frac{n!}{(n-m)!*m!}Cnm​=(n−m)!∗m!n!​Cnm=Cnn−mC_n^m=C_n^{n-m}Cnm​=Cnn−m​Cnm=Cn−1m−1+Cn−1mC_n^m=C_{n-1}^{m-1}+C_{n-1}^{m}Cnm​=Cn−1m−1​+Cn−1m​Cn0+Cn1+Cn2+Cn3...+Cnn=2nC_n...

2019-08-20 19:33:35 643

原创 第一类斯特林数+组合数 - Pole Arrangement(UVA 1638)

传送门Analysis大多数题解都提供的是dp做法这里推广一个不知哪个神犇想出来的神仙做法O(1)计算可还行?除了最高的那根杆,左边还能看到 l - 1 根,右边还能看到 r - 1 根。把这些杆子和他们挡住的杆子看做一个圆排列,那么共有[l+r−2n−1][^{n-1}_{l+r-2}][l+r−2n−1​]种分配方案。左边要选l−1l-1l−1根故答案为ans=[l+r...

2019-08-20 19:32:25 162 1

原创 第二类斯特林数 - Rank(HDU 2643)

传送门Analysis枚举总共的名次 i ,将 n 个人分到 i 个非空集合中 <–裸的第二类斯特林数然后对于每一种方案还需要乘以 i 的全排列ans=Σi=1nS2(n,i)∗i!ans=\Sigma_{i=1}^{n}S2(n,i)*i!ans=Σi=1n​S2(n,i)∗i!Code#include<bits/stdc++.h>#define re reg...

2019-08-20 14:50:30 168

原创 两遍网络流 - 危桥(CQOI2014)

Analysis建图很好想,建立源点和汇点源点向S1,S2建一条流量为次数*2的边T1,T2向汇点同理建边最后检查是否满流即可但只做一遍是有问题的(省选题果然不是盖的)因为在流的时候可能会存在S1最后流到了T2,S2流到了T1一个显然的反例如果要求0->3,1->2跑出来的最大流是合法的,但实际情况不对一个巧妙的解决办法:把一条路径反过来再跑一遍,如果还满流,则...

2019-08-16 15:35:44 149

原创 棋盘类二分图匹配 - Chessboard(POJ 2446)

传送门Analysis可以根据i和j性质可以看出,i+j为奇数的上下相邻的i’和j’一定是偶数,那么一个1*2的纸片的i+j一定是一个奇数一个偶数。所以建立一个二分图两个集合,将i+j为奇数的点与上下左右相邻的点连在一起,当然点不是洞。最后就用匈牙利算法求最大匹配数Code#include<cstdio>#include<iostream>#include&...

2019-08-14 15:40:09 147

原创 最小路径覆盖+路径输出 - 最小路径覆盖SPJ(LOJ 6002)

最小路径覆盖n−最大匹配数n-最大匹配数n−最大匹配数Analysis如果问题只有前面部分,即求最小路径覆盖数,那我们很好操作(具体解析见文章顶部博客链接)而现在还需要输出路径其实也很简单在做完网络流之后,对于每个点,它走向的下一个点,就是在网络流残图中与它相连且流量为0的边所对应的点,这个很好记录,关键是输出如果随便找到一个点就不停沿流量为0 的边走下去,那么这条路径很可能不...

2019-08-14 11:40:00 279

原创 最小乘积生成树 - Timeismoney(BZOJ2395)

Analysis学习ing最小乘积生成树Code/* created by xly*/#include<bits/stdc++.h>#define in red()#define re registerusing namespace std;inline int red(){ char ch;int f=1,res=0; while((ch=getchar(...

2019-08-14 09:57:26 215

原创 网络流 - order(BZOJ 1391)

传送门Analysis建立虚点,向每个工作连一条流量为该工作可以赚的钱数每个工作向其需要的机器连接流量为租金的边每个机器向汇点连接一条流量为购买费用的边然后跑最大流至于为什么这样可以做可以同这道题类比Code#include<bits/stdc++.h>#define in read()#define re registerusing namespace st...

2019-08-13 20:39:38 88

原创 补 - 扩展欧几里得算法

之所以不在原文上修改,是因为以前没有用Markdown,现在改起来令人窒息。索性重新写。扩展欧几里得算法最基础的应用:求ax+by=gcd(a,b)ax+by=gcd(a,b)ax+by=gcd(a,b) 的一组特解(具体证明见上一篇博客)稍作变化:通过适当变形,我们就可以求出ax+by=cax+by=cax+by=c 的一组特解1.如果gcd(a,b)∤cgcd(a,b)\nm...

2019-08-13 18:22:12 278

原创 最短路 - 墨墨的等式(BZOJ 2188)

传送门Analysis经典思考如果B的范围没有那么大,比如在1e6左右,我们该如何做将这个式子文字化描述一下,即:有a1~an这n个数,现在可以任意选取若干个,问数字B能否被凑出这样一转化,便很背包了(存在性背包)但背包的做法很受B的范围影响考虑如何将其缩小思考无果,还是太菜了:我们去0后取出最小的a[i],记为p,然后考虑模p下的B(这样B的范围就被缩小到了5e5)一...

2019-08-12 18:31:50 98

原创 点分治 + 分数规划 - 重建计划(BZOJ 1758)

传送门Analysis一眼分数规划然后就瓜起了“如何判断是否存在一条边数在[L,R]的路径满足它的权值非负”经过深思熟虑(网上题解)发现,通常情况下处理树上路径都可以考虑点分治然后就蛮套路了用一个单调队列维护一下,将子树按深度从小到大遍历(这样可以防止复杂度退化到n2)具体实现:f[i]f[i]f[i]表示已经搜过的子树中,深度为iii的最大权值和g[i]g[i]g[i]表示...

2019-08-09 19:56:08 192

原创 单调队列+离线询问 - Parking Lot(CF480E)

传送门Analysis链接首先加入所有询问坐标,求出答案。初始答案很好求,你可以设f[i,j]表示以(i,j)为左下角的最大正方形边长。那么f[i,j]=min(f[i−1,j],f[i,j+1])(+1)f[i,j]=min(f[i−1,j],f[i,j+1])(+1)后面是否+1要判断右上角。当然左下角是障碍f[i,j]=0。接下来来考虑时间倒流。首先我们维护left和rig...

2019-08-09 12:39:35 217

原创 分治算法学习笔记

2019/8/7xehoth授课Part I 点分治复习课√由于以前学过,所以听起来蛮轻松。例题1 tree例题2 聪聪可可例题3 Raceget一个超棒的求树的重心的方法利用性质:树的重心的任意一颗子树大小都不超过节点数的一半自己以前的写法被华丽丽地卡TPart II 线段树合并(好像和分治没啥关系,不管那么多了)复习课*2√由于以前也听过……今天重新打了一遍,...

2019-08-09 09:35:00 194

原创 线段树分治 - 二分图(BZOJ 4025)

传送门Analysis快来学习学习一个图是二分图的充要条件是不含奇环先按照套路将每条边的影响在线段树上拆做log个区间然后考虑如何快速判断当前状态是否为一个二分图当加边的时候,若(u,v)不连通:一定不会构成奇环,将它加入。若(u,v)已经联通,则不加入这条边,而是查询u和v两点间的距离。若为偶数则加上这条边后会形成奇环。一个奇环不可能分成数个偶环,所以从此以后都不再是二分图。...

2019-08-09 09:33:55 239

原创 线段树分治 - 「离线可过」动态图连通性(LOJ121)

传送门Analysis线段树分治入门所谓线段树分治就是先把操作分成logn个连续不相交的区间分别维护信息。最后按线段树从上到下再从左到右的遍历方式一起统计答案。这道题可以按时间建树,每次相当于在一段区间里增加边。这样我们就避免的删边的操作由于每次回溯的时候要撤销本次操作,我们用并查集就不可以路径压缩又因为我们每次都是后加入的先撤销,所以并查集可做,用一个栈记录一下即可总的时间复...

2019-08-08 21:07:39 386

原创 NOIP2016提高组DAY1T3 - 天天爱跑步(多种做法持续更新)

图论题找结论Analysis思考,如果一条路径能够被观察员观察,最基本的条件就是观察员在这条路径上那么对于一条路径,我们分别考虑观察员位于x−&gt;lcax-&gt;lcax−>lca和y−&gt;lcay-&gt;lcay−>lca路径上的情况Case 1如果观察员u位于x−&gt;lcax-&gt;lcax−>lc...

2019-08-08 17:00:19 212 3

原创 线段树合并 - 永无乡(HNOI2012)

Analysis裸的线段树合并板子题Code#include<bits/stdc++.h>#define in read()#define re registerusing namespace std;inline int read(){ char ch;int f=1,res=0; while((ch=getchar())<'0'||ch>'9') i...

2019-08-07 19:15:05 147

原创 点分治 -Race [IOI2011]

传送门Analysis点分治1、求树的重心2、计算以当前重心为根的子树的答案3、去掉以当前重心儿子为根的子树的答案4、枚举每个儿子,分治考虑计算过程如何实现我们不妨记一个cnt数组,cnt[i]表示使用i条边权值为k的有多少对每次实现2的时候,权值设为+1每次实现3的时候,权值设为-1把子树内所有的dis排序,计算有多少对权值和为k的,两个指针扫一遍就可以了。Code...

2019-08-07 16:45:33 126

空空如也

空空如也

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

TA关注的人

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