01 2018 档案
摘要:因为是无向图,所以从1到2再到3等于从2到1和3。用拆点来限制流量(i,i+n,1),然后连接(s,2+n,1),(1,t,1),(3,t,1),对于原图中的边连接(x+n,y,1)(y+n,x,1),跑一遍dinic看答案是否为2即可。
阅读全文
摘要:~~在spoj上用题号找题就已经是手动二分了吧~~ 把1作为汇点,k个要入网的向t连流量为1的边,因为最小颜色数等于最大边流量,所以对于题目所给出的边(u,v),连接(u,v,c),二分一个流量c,根据最大流是否等于k来调整上下界。 cpp include include include inclu
阅读全文
摘要:不重叠最短路计数。 先弗洛伊德求一遍两两距离(其实spfa或者迪杰斯特拉会更快但是没必要~~懒得~~写),然后设dis为st最短距离,把满足a[s][u]+b[u][v]+a[v][t]==dis的边(u,v)连流量为1的边,表示只能走一次。注意这里a数组是弗洛伊德之后的,b是边的原长,然后跑一边最
阅读全文
摘要:记得把牛拆掉!拆成两个点i和i'在中间连一条流量为1的边,来限制每头牛只能选一组 一般来讲是一种物品一个消费者各占一边,但是这里有两个物品,所以考虑把牛放在中间,s向所有的食物连流量为1的边,所有食物向能吃它的牛i连流量为1的边,所有饮料向t连流量为1的边,牛i'向所有他能喝的连流量为1的边,然后跑
阅读全文
摘要:因为n很小所以从大到小枚举答案。(从小到大先排个序,因为显然胜利场次越多越容易成为strong king。然后对于每个枚举出来的ans建图。点分别表示人和比赛。s向所有人连接流量为胜利场次的边,所有比赛向t连流量为1的边来限制流量,然后对于“某一方一定要赢得比赛”,也就是当前被枚举为strong k
阅读全文
摘要:参考:https://www.cnblogs.com/kuangbin/p/3537525.html 这篇讲的挺好的 首先分清欧拉路和欧拉环: 欧拉路:图中经过每条边一次且仅一次的路径,要求只有两个点的出入度之差为奇数,这两个点即为欧拉路的起点和终点 欧拉环:图中经过每条边一次且仅一次的环,要求全部
阅读全文
摘要:建图:s向所有猪圈的第一个顾客连流量为这个猪圈里住的数量,然后对于之后每个来这个猪圈的顾客,由他前一个顾客向他连边权为无穷的边,然后每个顾客向t连流量为这个顾客购买上限的边。然后跑最大流 cpp include include include include include using namesp
阅读全文
摘要:我%……&( ¥ ……,调了一下午,最后发现P赋值1e5能过,赋值1e6就会TLE致死。改了一下午加一晚上然而这是为什么??? 一种常见的建图套路,首先二分答案,注意上界要取大一点,1e9是不行的。然后问题变为判定,首先弗洛伊德求出点两两之间的最短距离。每次建图时把点拆成两个,然后s向所有的i连容量
阅读全文
摘要:准确的说应该叫树上分组背包?~~并不知道我写的这个叫啥~~ 设计状态f[u][j]为在以点u为根的子树中有j个黑点,转移的时候另开一个数组,不能在原数组更新(因为会用到没更新时候的状态),方程式为g[j+k]=max(g[j+k],f[u][j]+f[e[i].to][k]+(k\ (m k)+(s
阅读全文
摘要:首先化简,题目要求的是 $$ G^{\sum_{i|n}C_{n}^{i}}\%p $$ 对于乘方形式快速幂就行了,因为p是质数,所以可以用欧拉定理 $$ G^{\sum_{i|n}C_{n}^{i}\%\varphi(p)} $$ $$ G^{\sum_{i|n}C_{n}^{i}\%p 1} $
阅读全文
摘要:首先答案不会很大,所以枚举答案m,于是把问题转为了判定; 关于如何判定: 首先题目中虽然没说但是数据是按照初始洞穴编号排的序,所以并不用自己重新再排 假设当前答案为m,相遇时间为x,野人i和j,那么可以列出同余式; $$ x(p "i] p[j])\equiv c[j] c[i" $$ $$ x(p
阅读全文
摘要:参考:http://blog.csdn.net/wzq_qwq/article/details/46709471 首先推组合数,设sum为每个人礼物数的和,那么答案为 $$ ( C_{n}^{sum}C_{sum}^{w[1]}c_{sum w[1]}^{w[2]}... $$ 设w[0]=n su
阅读全文
摘要:用途:求\\( a^x \equiv b (mod\ p) 中的x \\) 一、对于p为质数的情况 此时 \\( 0 \leq x \leq p 1 \\) 设 \\( m=\left \lceil \sqrt{p} \right \rceil ,x=i m j \\)这里 的作用是避免逆元 于是可
阅读全文
摘要:第一问快速幂板子 第二问把式子转化为\\( xy\equiv Z(mod\ P)\rightarrow xy+bP=z \\),然后扩展欧几里得 第三问BSGS板子 cpp include include include include using namespace std; long long
阅读全文
摘要:扩展BSGS的板子 对于gcd(a,p) 1的情况 即扩展BSGS 把式子变成等式的形式: \\( a^x+yp=b \\) 设 \\( g=gcd(a,p) \\) 那么两边同时除以g就会变成: \\( \frac{a}{g} a^{x 1}+y\frac{p}{g}=\frac{b}{g} \\
阅读全文
摘要:题目要求的是: $$ ...a(a(a(ax+b)+b)+b)+b...=a^nx+a^{n 1}b+a^{n 2}b+...+b\equiv t(mod\ p) $$ 后面这一大坨看着不舒服,所以考虑把它化掉,这里有两种做法: 做法一:两边同乘a 1 $$ (a^{n 1}x)(a 1)+b(a^
阅读全文
摘要:都是BSGS的板子题 此时 \\( 0 \leq x \leq p 1 \\) 设 \\( m=\left \lceil \sqrt{p} \right \rceil ,x=i m j \\)这里 的作用是避免逆元 于是可以把式子变形成这样:\\( a^{im}\equiv ba^j(mod\ p)
阅读全文
摘要:一道几乎是板子的LCT,但是沉迷数学很久时候突然1A了这道题还是挺开心的 cpp include include using namespace std; const int N=30005; int n,q,sum[N],v[N],s[N],top; char c[20]; struct qwe
阅读全文
摘要:首先建立矩阵,给每个格子编号,然后在4 4的格子中把能一步走到的格子置为1,然后乘n次即可,这里要用到矩阵快速幂 cpp include include using namespace std; const int mod=1e9+7; long long n,ans; struct qwe { l
阅读全文
摘要:…我并不知道为什么事卡特兰数,反正用dp打的表就是卡特兰数,因为是两个三角所以再乘个2 卡特兰数使用\\( h(n)=\frac{C_{2n}^{n}}{n+1} \\)因为范围比较大所以组合数部分用卢卡斯定理来求。 cpp include include include include using
阅读全文
摘要:挺水的但是我好久没写组合数了… 用这样一个思想,在1~m列中,考虑每一列上升几格,相当于把n 1个苹果放进m个篮子里,可以为空,问有几种方案。 这个就是一个组合数学经典问题了,考虑n个苹果放进m个篮子里,不可以为空的情况,用插板法,也就是把m 1个板子插进排成一排的果子里,分成m个不为空的区间,方案
阅读全文
摘要:…因为网页崩溃导致要重写一遍…… 首先看一道板子题:bzoj 3944 https://www.cnblogs.com/lokiii/p/8329320.html 要求在低于线性的时间内莫比乌斯函数和欧拉函数的前缀和。因为都是积性函数,所以这里以mu为例。设 \\( f(n)=\sum_{d|n}\
阅读全文
摘要:和bzoj 3944比较像,但是时间卡的更死 设\\( f(n)=\sum_{d|n}\mu(d) g(n)=\sum_{i=1}^{n}f(i) s(n)=\sum_{i=1}^{n}\mu(i) \\),然后很显然对于mu\\( g(n)=1\\),对于\\( g(n)=n (n+1)/2 \\
阅读全文
摘要:首先题目中给出的代码打错了,少了个等于号,应该是 cpp G=0; for(i=1;i include using namespace std; const long long N=1000005,m=1000000,inv2=500000004,inv4=250000002,inv6=166666
阅读全文
摘要:首先由这样一个式子:\\( d(ij)=\sum_{p|i}\sum_{q|j}[gcd(p,q)==1]\frac{pj}{q} \\)~~大概感性证明一下吧我不会证~~ 然后开始推: $$ \sum_{i=1}^{n}\sum_{j=1}^{n}\sum_{p|i}\sum_{q|j}[gcd(
阅读全文
摘要:和bzoj 3944比较像,但是时间卡的更死 设\\( f(n)=\sum_{d|n}\phi(d) g(n)=\sum_{i=1}^{n}f(i) s(n)=\sum_{i=1}^{n}\phi(i) \\),然后很显然对于mu\\( g(n)=1\\),对于\\( g(n)=n (n+1)/2
阅读全文
摘要:首先由这样一个结论: $$ d(ij)=\sum_{p|i}\sum_{q|j}[gcd(p,q)==1] $$ 然后推反演公式: $$ \sum_{i=1}^{n}\sum_{j=1}^{n}\sum_{p|i}\sum_{q|j}[gcd(p,q)==1] $$ $$ \sum_{p=1}^{n
阅读全文
摘要:居然扒到了学长出的题 和3944差不多(?),虽然一眼看上去很可怕但是仔细观察发现,对于mu来讲,答案永远是1(对于带平方的,mu值为0,1除外),然后根据欧拉筛的原理,\\( \sum_{i=1}^{n}\phi(i^2)=\sum_{i=1}^{n}\phi(i)\ i \\),然后就可以正常推
阅读全文
摘要:参考:http://blog.csdn.net/wzf_2000/article/details/54630931 有这样一个显然的结论:当\\( |\mu(n)|==1 \\)时,\\( \phi(nk)=\phi(k)\sum_{d|gcd(n,k)}\phi(\frac{n}{d}) \\)然
阅读全文
摘要:一道杜教筛的板子题。 两个都是积性函数,所以做法是一样的。以mu为例,设\\( f(n)=\sum_{d|n}\mu(d) g(n)=\sum_{i=1}^{n}f(i) s(n)=\sum_{i=1}^{n}\mu(i) \\),然后很显然对于mu\\( g(n)=1\\),对于phi\\( g(
阅读全文
摘要:以后这种题能用phi的就不要用mu…mu往往会带着个ln然后被卡常致死 把题目要求转换为前缀和相减的形式,写出来大概是要求这样一个式子: $$ \sum_{i=1}^{n}\sum_{j=1}^{i}\frac{j}{gcd(i,d)} $$ 注意j的限制是i $$ \sum_{d=1}^{n}\s
阅读全文
摘要:参考:https://www.cnblogs.com/SilverNebula/p/7045199.html 所是反演其实反演作用不大,又是一道做起来感觉诡异的题 转成前缀和相减的形式 $$ \sum_{i=1}^{n}\sum_{j=1}^{n}[\frac{i j}{gcd(i,j)}\leq
阅读全文
摘要:每读一个数就把它所有因数上加1,开一个1e6的数组统计,答案就是最大的统计个数大于等于2的数
阅读全文
摘要:用mu写lcm那道卡常卡成狗(然而最后也没卡过去,于是写一下gcd冷静一下 首先推一下式子 $$ \sum_{i=1}^{n}\sum_{j=1}^{n}gcd(i,j) $$ $$ \sum_{i=1}^{n}\sum_{j=1}^{n}\sum_{d=1}^{n}[gcd(i,j)==d]d $
阅读全文
摘要:参考:http://blog.csdn.net/u014610830/article/details/49493279 这道题做起来感觉非常奇怪啊……头一次见把mu推出来再推没了的…… $$ \sum_{i=a}^{b}lcm(i,b) $$ $$ \sum_{i=a}^{b}\frac{i b}{
阅读全文
摘要:第二个\\( O(T\sqrt(n)) \\)复杂度T了..T了..T了...天地良心,这能差多少?! 于是跑去现算(。 $$ \sum_{i=1}^{n 1}\sum_{j=i+1}^{n}gcd(i,j) $$ $$ \sum_{d=1}^{n}d\sum_{i=1}^{n 1}\sum_{j=
阅读全文
摘要:参考:http://blog.csdn.net/sinat_27410769/article/details/46754209 首先看一下欧拉定理及扩展(~~还不会证先坑着~~ $$ a^n\equiv a^{n\%\phi(p)}\%p,[gcd(n,p)==1] $$ $$ a^n=a^{n\%
阅读全文
摘要:把题意简化,就是要求 $$ \prod_{d=1}^{min(n,m)}f[d]^{\sum_{i=1}^{n}\sum_{j=1}^{m}e[gcd(i,j)==d]} $$ 把幂用莫比乌斯反演转化,得到 $$ \prod_{d=1}^{min(n,m)}f[d]^{\sum_{k=1}^{min
阅读全文
摘要:参考:http://blog.csdn.net/lych_cys/article/details/50845832 把树变成dfs括号序的形式,注意这个是不包含lca的(除非lca是两点中的一个) 然后把询问按照所属块一序,r二序,t三序排序(注意a和b数组的同名变量意思不一样),对于每个询问处理修
阅读全文
摘要:妙啊 这个题一上来就想的是莫比乌斯反演: $$ f(d)=\sum_{k=1}^{\left \lceil \frac{r}{d} \right \rceil}\mu(k)(\left \lceil \frac{r}{kd} \right \rceil \left \lceil \frac{l 1}
阅读全文
摘要:如果\\( b[i]==0 \\)那么就是裸的费用流/KM,当然KM快一些~~但是为什么不写KM呢因为我不会打板子了~~ 考虑二分答案,那么问题变成了判定问题。 $$ ans=\frac {a_1+a_2+...+a_n}{b_1+b_2+...+b_n} $$ $$ (b_1+b_2+...+b_
阅读全文
摘要:找规律发现\\( f[i]=f[i 1]+n \sum_{i的因数和} \\) ~~一A了深(sh)蓝(ui)题的我被找规律绿题卡死~~ 记得开long long cpp include include using namespace std; const int N=1000005; long l
阅读全文
摘要:首先,如果没有换根操作的话,那么这就是一个普通的树链剖分。 先按照以1为根进行树链剖分,用线段树维护最小值。现在考虑换根操作,设当前根为root,查询的子树根节点为想,会发现有如下三种情况: \\( root=x \\),相当于求全区间和,直接返回即可; x在root的子树中,那么换根对它没有影响,
阅读全文
摘要:%.8lf会WA!!%.8lf会WA!!%.8lf会WA!!要%.10lf!! 和4817有点像,但是更复杂。 首先对于操作一“在编号为x的计算机中植入病毒的一个新变种,在植入一个新变种时,病毒会在局域网中搜索核心计算机的位置,并沿着网络中最短的路径感染过去”,长得是不是有点像LCT中的access
阅读全文
摘要:非常妙的一道题。 首先对于操作一“把点x到根节点的路径上所有的点染上一种没有用过的新颜色”,长得是不是有点像LCT中的access操作?进而发现,如果把同一颜色的点连起来作为LCT中的重边的话,那么询问二就相当于问路径上的虚边有多少。 然后第二、三个操作是可以用树剖在线段树上维护的。 设每个点的权值
阅读全文
摘要:被空间卡的好惨啊———— 参考:http://blog.csdn.net/coldef/article/details/70305596 容斥,\\( ans=ans_{没有限制} ans{没有质数} \\) 动规递推式,\\( f[i][j]=\sum_{k=0}^{p 1}f[i 1][k] c
阅读全文
摘要:翻了一些blog,只有我用状压预处理嘛2333,。把二进制位的0当成6,1当成8就行啦。(2393是2和9 然后\\( dfs \\)容斥,加上一个数的\\( lcm \\),减去两个数的\\( lcm \\),加上三个数的\\( lcm \\)...需要一些剪枝来控制复杂度。 剪枝: 1.对于预处
阅读全文
摘要:因为一开始调试不知道unsigned怎么输出就没有加\n结果WA了一上午!!!!!~~然而最后放弃了unsigned选择了&2147483647~~ 首先链剖,因为它所给的链一定是某个点到根的路径上的一段(一开始没看到),也就是说链是不会拐弯的,那么考虑容斥,加上每条链的长度减去两条链的交的长度加上
阅读全文
摘要:当然是容斥啦。 用dp预处理出\\( f[i] \\),表示在\\( i \\)价格时不考虑限制的方案数,转移方程是\\( f[i]+=f[i c[j]] \\),用状压枚举不满足的状态容斥一下即可。
阅读全文
摘要:~~第一个一眼就A的容斥题!~~ 这个显然是容斥的经典问题 错排,首先考虑没有固定的情况,设\\( D_n \\)为\\( n \\)个数字的错排方案数。 $$ D_n=n! \sum_{t=1}^{n}( 1)^{t 1}\sum_{i_1 include using namespace std;
阅读全文
摘要:原来我一开始以为的\\( O(n^2) \\)是调和级数\\( O(nlog_2n) \\)的! 首先枚举猴王的桃子个数\\( x \\),然后使用容斥原理,枚举有至少\\( k \\)个不满足的条件,那么这\\( k \\)个不满足的条件得组合个数为\\( C_{m 1}^{k} \\),这\\(
阅读全文
摘要:简单的容斥原理可以通过画文氏图来理解: \\( \left | S_1\cup S_2 \right |=\left | S_1 \right |+\left | S_2 \right | \left | S_1\cap S_2 \right | \\) \\( \left | S_1\cup S_
阅读全文
摘要:首先,考虑容斥,我们所要的答案是并集至少有\\( k \\)个数的方案数减去并集至少有\\( k+1 \\)个数的方案数加上并集至少有\\( k \\)个数的方案数…… 在n个数中选i个的方案数是\\( C_{n}^{i} \\),n种集合的组合方案数为\\( 2^n \\) 并集至少有i个元素的方
阅读全文
摘要:看到\\( 10^10 \\)的范围首先想到二分,然后把问题转化为判断\\( [1,n] \\)内有多少个是某个质数的平方和的数。 所以应该是加上是一个质数的平方的个数减去是两个质数的平方的个数加上是三个质数的平方的个数……注意到这正好是莫比乌斯函数反过来,所以 \\( re =mb[i] n/(i
阅读全文
摘要:参考:http://hzwer.com/3663.html 除了麻烦一点也没什么难的,就是要注意细节。 首先\\( O(n\sqrt{n}) \\)时间下预处理出\\( f[i][j] \\),表示第\\( i \\)块和第\\( j \\)块之间的答案。\\( L \\)表示这个块的左端点,\\(
阅读全文
摘要:题意:每个箱子里有\\( f[i] \\)种颜色相同的花,现在要取出\\( s \\)朵花,问一共有多少种颜色组合 首先枚举\\( 2^n \\)种不满足条件的情况,对于一个不被满足的盒子,我们至少拿出\\( f[i]+1 \\)朵花。 然后进行容斥,不满足奇数个条件的减去,不满足偶数个条件的加上
阅读全文
摘要:算法详见:http://www.cnblogs.com/lokiii/p/8191573.html 求出点两两之间的最小割之后,把他们扔到map/set里跑即可 可怕的是map和set跑的时间竟然完全一样…代码里注释掉的部分是map cpp include include include inclu
阅读全文
摘要:这个算法详见http://www.cnblogs.com/lokiii/p/8191573.html 求出两两之间最小割之后暴力统计即可 cpp include include include include using namespace std; const int N=205,inf=1e9;
阅读全文
摘要:fanhq666地址:http://fanhq666.blog.163.com/blog/static/8194342620113495335724/ wiki地址(证明):https://en.wikipedia.org/wiki/Gomory–Hu_tree 用途:用\\( \sum_{i=0}
阅读全文
摘要:我是在在做网络流最小路径覆盖的时候找到这道题的 然后发现是个贪心+树形dp \\( f[i] \\)表示在\\( i \\)为根的子树中最少有几条链,\\( v[i] \\) 表示在\\( i \\)为根的子树中\\( i \\) 是( 0)否(1)为一条链的端点 然后贪心转移即可(有链端点则连起来
阅读全文
摘要:果然还是不会建图… 设\\( i \\)到\\( j \\)有通路,代价为\\( w[i][j] \\),瞬移到i代价为\\( a[i] \\),瞬移到i代价为\\( a[j] \\),逗号前是流量。 因为每个点只能经过一次,所以流量限制为1,注意到从s开始很难保证出发点不同,所以但是又有联通条件,
阅读全文
摘要:其实不用拆点,对于每个人我们假装他是\\( s[i]+1 \\)个点,可以由他向T点分别连\\( s[i]+1 \\)条边,容量为\\( t[i][j] t[i][j 1]\\),由S点向所有产品i连容量为c[i]的边,由所有产品向能制造它的人连容量为inf的边。 因为是最小费用最大流,\\( w[
阅读全文
摘要:达成成就:为二分调参 !:多次memset的话要把数组大小开严格一点,否则会T 看到网格图,首先黑白染色。 注意到每次操作都是在一个黑格子和一个白格子上进行的,也就是说,最后黑格子数字和白格子数字和的差是不变的。 对于n m%2==0的情况: 注意到在这种情况下黑格子和白格子一样多,也就是当黑格子数
阅读全文
摘要:先跑一遍最大流,然后对残量网络(即所有没有满流的边)进行tarjan缩点。 能成为最小割的边一定满流:因为最小割不可能割一半的边; 连接s、t所在联通块的满流边一定在最小割里:如果不割掉这条边的话,就能再次从s到t增广 连接两个不同联通块的满流边可能在最小割里:新图(即缩点后只有满流边的图)的任意一
阅读全文
摘要:玄学计数 LYY Orz 第一次见这种神奇的计数方式,乍一看~~非常不靠谱~~但是仔细想想~~还卡不掉~~ 就是把在建图的时候把正权变成w\ 10000 1,负权变成w\ 10000+1,跑最大权闭合子图。后面的1作用是计数,因为在最大权闭合子图中划到s点一侧的代表选,这样一来,后四位就是起了计数作
阅读全文
摘要:不要被5s时限和50000点数吓倒!大胆网络流!我一个5w级别的dinic只跑了1s+! 看起来没有最大权闭合子图的特征——限制,实际上还是有的。 我们需要把中转站看成负权点,把p看成点权,把客户看成正权点,把c看成点权,然后把中转站点a、b作为客户点的依赖点 s点向所有正权点连边,流量为点权;所有
阅读全文
摘要:一上来以为是裸的最大权闭合子图,上来就dinic …然后没过样例。不得不说样例还是非常良心的给了一个强连通分量,要不然就~~WA的生活不能自理了~~ 然后注意到有一种特殊情况:每个植物向他保护的植物连边(包括被其挡在后面的),当植物的保护范围连成一个强连通分量时,这个强连通分量上的植物以及从这个强连
阅读全文
摘要:对于网格图,尤其是这种要求相邻各自不同的,考虑黑白染色 对于这张染色后图来说: 对于每个黑格: 表示初始时选择商业区; s点向它连商业区收益的流量,它向t点连工业区收益的流量; 割断S侧的边说明反悔,则保留T侧边的边权(工业区),割断T侧的边说明维持原样,保留S侧边权(商业区) 对于每个白格: 表示
阅读全文
摘要:~~谁说这道和2127是双倍经验的来着完全不一样啊?~~ 数组开小会TLE!数组开小会TLE!数组开小会TLE! 首先sum统计所有收益 对于当前点\\( (i,j) \\)考虑,设\\( x=(i 1) m+j \\) 首先单个人选择文科或者理科是很好建图的,我们设与s点相连选文,与t点相连选理,
阅读全文
摘要:~~都说了是‘切’糕所以是最小割咯~~ 建图: 每个点向下一层连容量为这个点的val的边,S向第一层连容量为inf的边,最后一层向T连容量为自身val的边,即割断这条边相当于\\( f(i,j) \\)选择了当前层 第i层的每个点向第i+d层的与其相邻点\\( \left | x_i x_{i+d}
阅读全文
摘要:参考:http://blog.csdn.net/vmurder/article/details/44542575 和2337有点像 设点u的经过期望~~(还是概率啊我也分不清,以下都分不清)~~为\\( x[u] \\) ,度为 \\( in[u] \\),边\\( (u,v) \\) 的经过期望为
阅读全文
摘要:题意:在一条数轴上有若干'R','B',‘G'点,连接两个点的代价是位置差,要求使用最小代价使得除去所有'R'点后剩下的所有点联通,除去所有'B'点后剩下的所有点联通。 还以为会是什么最小生成树,结果是脑洞题啊 因为G点总是要保留下来的,所以考虑按照G分成若干块,对于每个以G开头以G结尾的块,考虑如
阅读全文

浙公网安备 33010602011771号