摘要:
首先,考虑容斥,我们所要的答案是并集至少有\\( k \\)个数的方案数减去并集至少有\\( k+1 \\)个数的方案数加上并集至少有\\( k \\)个数的方案数…… 在n个数中选i个的方案数是\\( C_{n}^{i} \\),n种集合的组合方案数为\\( 2^n \\) 并集至少有i个元素的方
阅读全文
posted @ 2018-01-06 10:08
lokiii
阅读(293)
推荐(0)
摘要:
看到\\( 10^10 \\)的范围首先想到二分,然后把问题转化为判断\\( [1,n] \\)内有多少个是某个质数的平方和的数。 所以应该是加上是一个质数的平方的个数减去是两个质数的平方的个数加上是三个质数的平方的个数……注意到这正好是莫比乌斯函数反过来,所以 \\( re =mb[i] n/(i
阅读全文
posted @ 2018-01-06 07:17
lokiii
阅读(276)
推荐(0)
摘要:
参考:http://hzwer.com/3663.html 除了麻烦一点也没什么难的,就是要注意细节。 首先\\( O(n\sqrt{n}) \\)时间下预处理出\\( f[i][j] \\),表示第\\( i \\)块和第\\( j \\)块之间的答案。\\( L \\)表示这个块的左端点,\\(
阅读全文
posted @ 2018-01-05 21:22
lokiii
阅读(182)
推荐(0)
摘要:
题意:每个箱子里有\\( f[i] \\)种颜色相同的花,现在要取出\\( s \\)朵花,问一共有多少种颜色组合 首先枚举\\( 2^n \\)种不满足条件的情况,对于一个不被满足的盒子,我们至少拿出\\( f[i]+1 \\)朵花。 然后进行容斥,不满足奇数个条件的减去,不满足偶数个条件的加上
阅读全文
posted @ 2018-01-05 11:37
lokiii
阅读(237)
推荐(0)
posted @ 2018-01-04 22:03
lokiii
阅读(8)
推荐(0)
摘要:
算法详见:http://www.cnblogs.com/lokiii/p/8191573.html 求出点两两之间的最小割之后,把他们扔到map/set里跑即可 可怕的是map和set跑的时间竟然完全一样…代码里注释掉的部分是map cpp include include include inclu
阅读全文
posted @ 2018-01-04 11:21
lokiii
阅读(173)
推荐(0)
摘要:
这个算法详见http://www.cnblogs.com/lokiii/p/8191573.html 求出两两之间最小割之后暴力统计即可 cpp include include include include using namespace std; const int N=205,inf=1e9;
阅读全文
posted @ 2018-01-04 11:04
lokiii
阅读(173)
推荐(0)
摘要:
fanhq666地址:http://fanhq666.blog.163.com/blog/static/8194342620113495335724/ wiki地址(证明):https://en.wikipedia.org/wiki/Gomory–Hu_tree 用途:用\\( \sum_{i=0}
阅读全文
posted @ 2018-01-04 10:19
lokiii
阅读(927)
推荐(2)
摘要:
我是在在做网络流最小路径覆盖的时候找到这道题的 然后发现是个贪心+树形dp \\( f[i] \\)表示在\\( i \\)为根的子树中最少有几条链,\\( v[i] \\) 表示在\\( i \\)为根的子树中\\( i \\) 是( 0)否(1)为一条链的端点 然后贪心转移即可(有链端点则连起来
阅读全文
posted @ 2018-01-03 21:54
lokiii
阅读(265)
推荐(0)
摘要:
果然还是不会建图… 设\\( i \\)到\\( j \\)有通路,代价为\\( w[i][j] \\),瞬移到i代价为\\( a[i] \\),瞬移到i代价为\\( a[j] \\),逗号前是流量。 因为每个点只能经过一次,所以流量限制为1,注意到从s开始很难保证出发点不同,所以但是又有联通条件,
阅读全文
posted @ 2018-01-03 20:29
lokiii
阅读(135)
推荐(0)
摘要:
其实不用拆点,对于每个人我们假装他是\\( s[i]+1 \\)个点,可以由他向T点分别连\\( s[i]+1 \\)条边,容量为\\( t[i][j] t[i][j 1]\\),由S点向所有产品i连容量为c[i]的边,由所有产品向能制造它的人连容量为inf的边。 因为是最小费用最大流,\\( w[
阅读全文
posted @ 2018-01-03 18:52
lokiii
阅读(103)
推荐(0)
摘要:
达成成就:为二分调参 !:多次memset的话要把数组大小开严格一点,否则会T 看到网格图,首先黑白染色。 注意到每次操作都是在一个黑格子和一个白格子上进行的,也就是说,最后黑格子数字和白格子数字和的差是不变的。 对于n m%2==0的情况: 注意到在这种情况下黑格子和白格子一样多,也就是当黑格子数
阅读全文
posted @ 2018-01-03 16:43
lokiii
阅读(161)
推荐(0)
摘要:
先跑一遍最大流,然后对残量网络(即所有没有满流的边)进行tarjan缩点。 能成为最小割的边一定满流:因为最小割不可能割一半的边; 连接s、t所在联通块的满流边一定在最小割里:如果不割掉这条边的话,就能再次从s到t增广 连接两个不同联通块的满流边可能在最小割里:新图(即缩点后只有满流边的图)的任意一
阅读全文
posted @ 2018-01-03 11:43
lokiii
阅读(243)
推荐(0)
摘要:
玄学计数 LYY Orz 第一次见这种神奇的计数方式,乍一看~~非常不靠谱~~但是仔细想想~~还卡不掉~~ 就是把在建图的时候把正权变成w\ 10000 1,负权变成w\ 10000+1,跑最大权闭合子图。后面的1作用是计数,因为在最大权闭合子图中划到s点一侧的代表选,这样一来,后四位就是起了计数作
阅读全文
posted @ 2018-01-03 08:49
lokiii
阅读(267)
推荐(0)
摘要:
不要被5s时限和50000点数吓倒!大胆网络流!我一个5w级别的dinic只跑了1s+! 看起来没有最大权闭合子图的特征——限制,实际上还是有的。 我们需要把中转站看成负权点,把p看成点权,把客户看成正权点,把c看成点权,然后把中转站点a、b作为客户点的依赖点 s点向所有正权点连边,流量为点权;所有
阅读全文
posted @ 2018-01-02 20:36
lokiii
阅读(114)
推荐(0)
摘要:
一上来以为是裸的最大权闭合子图,上来就dinic …然后没过样例。不得不说样例还是非常良心的给了一个强连通分量,要不然就~~WA的生活不能自理了~~ 然后注意到有一种特殊情况:每个植物向他保护的植物连边(包括被其挡在后面的),当植物的保护范围连成一个强连通分量时,这个强连通分量上的植物以及从这个强连
阅读全文
posted @ 2018-01-02 19:41
lokiii
阅读(283)
推荐(0)
摘要:
对于网格图,尤其是这种要求相邻各自不同的,考虑黑白染色 对于这张染色后图来说: 对于每个黑格: 表示初始时选择商业区; s点向它连商业区收益的流量,它向t点连工业区收益的流量; 割断S侧的边说明反悔,则保留T侧边的边权(工业区),割断T侧的边说明维持原样,保留S侧边权(商业区) 对于每个白格: 表示
阅读全文
posted @ 2018-01-02 11:45
lokiii
阅读(151)
推荐(0)
摘要:
~~谁说这道和2127是双倍经验的来着完全不一样啊?~~ 数组开小会TLE!数组开小会TLE!数组开小会TLE! 首先sum统计所有收益 对于当前点\\( (i,j) \\)考虑,设\\( x=(i 1) m+j \\) 首先单个人选择文科或者理科是很好建图的,我们设与s点相连选文,与t点相连选理,
阅读全文
posted @ 2018-01-02 09:30
lokiii
阅读(131)
推荐(0)
摘要:
~~都说了是‘切’糕所以是最小割咯~~ 建图: 每个点向下一层连容量为这个点的val的边,S向第一层连容量为inf的边,最后一层向T连容量为自身val的边,即割断这条边相当于\\( f(i,j) \\)选择了当前层 第i层的每个点向第i+d层的与其相邻点\\( \left | x_i x_{i+d}
阅读全文
posted @ 2018-01-01 21:56
lokiii
阅读(130)
推荐(0)
摘要:
参考:http://blog.csdn.net/vmurder/article/details/44542575 和2337有点像 设点u的经过期望~~(还是概率啊我也分不清,以下都分不清)~~为\\( x[u] \\) ,度为 \\( in[u] \\),边\\( (u,v) \\) 的经过期望为
阅读全文
posted @ 2018-01-01 19:22
lokiii
阅读(130)
推荐(0)
摘要:
题意:在一条数轴上有若干'R','B',‘G'点,连接两个点的代价是位置差,要求使用最小代价使得除去所有'R'点后剩下的所有点联通,除去所有'B'点后剩下的所有点联通。 还以为会是什么最小生成树,结果是脑洞题啊 因为G点总是要保留下来的,所以考虑按照G分成若干块,对于每个以G开头以G结尾的块,考虑如
阅读全文
posted @ 2018-01-01 17:22
lokiii
阅读(361)
推荐(0)
摘要:
首先,我们发现,因为是无向图,所以相连的点之间是有“依赖性”的,所以不能直接用dp求解。 因为是xor,所以按位处理,于是列线性方程组,设$ x[i] $为点i到n异或和为1的期望,因为从1到n和从n到1一样,所以选择倒着推,即, if(deg[e[i].va]==0) $$ x[u]=\sum_{
阅读全文
posted @ 2017-12-30 23:06
lokiii
阅读(147)
推荐(0)
摘要:
四舍五入就是个暴力。 对于线段树的每个区间都开一棵按权值排序的splay 对于第二个操作,二分一下,每次查询mid的排名,复杂度 $ O(nlog(n)^{3}) $ 其余的操作都是$ O(nlog(n)^{2}) $ cpp include include using namespace std;
阅读全文
posted @ 2017-12-29 08:51
lokiii
阅读(160)
推荐(0)
摘要:
参考:https://www.cnblogs.com/zhuohan123/p/3698852.html 首先,根据点到直线距离公式 $$ d=\frac{kx_0 y_0+b}{\sqrt{k^{2}+1}} $$ 那么XPs的线性假设相斥度为 $$ \delta =\frac{(kx_i y_i
阅读全文
posted @ 2017-12-28 17:02
lokiii
阅读(374)
推荐(0)
摘要:
参考:https://www.cnblogs.com/chenyushuo/p/5144957.html 不得不说这个建图方法真是非常妙啊 假设S点选理,T点选文,a[i][j]为(i,j)选文收益,b[i][j]为(i,j)选理收益,c[i][j]为同时选文收益,d[i][j]为同时选文收益。 那
阅读全文
posted @ 2017-12-28 08:54
lokiii
阅读(122)
推荐(0)
摘要:
树套树: 约等于是个暴力了。以区间线段树的方式开一棵权值线段树,在权值线段树的每一个点上以动态开点的方式开一棵区间线段树。 结果非常惨烈(时限20s) cpp include include include include include using namespace std; const int
阅读全文
posted @ 2017-12-27 19:54
lokiii
阅读(162)
推荐(0)
摘要:
~~其实我不太清楚这个应该叫CDQ分治还是整体二分~~ 参考:http://blog.csdn.net/lvzelong2014/article/details/78688727 一眼做法是线段树套可持久化trie,但是会MLE+TLE 考虑用CDQ推掉线段树 首先对于没有时间限制的商品建一棵可持久
阅读全文
posted @ 2017-12-27 15:18
lokiii
阅读(382)
推荐(0)
posted @ 2017-12-27 08:30
lokiii
阅读(11)
推荐(0)
摘要:
和主席树差不多的东西,一般用于求异或和最大之类的。 sum记录的是当前这一位(在二进制下)的值(0或1)在这一位之前出现过多少次。c[0]表示下一位为0,c[1]表示下一位为1。 关于第i位的取法:int q=(v&(1<<i))>>i; 新加一个数的时候就去沿着二进制的高位到低位一路加下来就行了。
阅读全文
posted @ 2017-12-25 18:58
lokiii
阅读(221)
推荐(0)
摘要:
因为在后面加数字又求后缀和太麻烦,所以xor[p...n]=xor[1...n]^xor[p-1...n]。 首先处理出来区间异或前缀和,对前缀和建trie树(在最前面放一棵0表示最开始的前缀和 然后就是可持久化trie的板子了
阅读全文
posted @ 2017-12-25 18:56
lokiii
阅读(151)
推荐(0)