02 2018 档案

摘要:参考:http://blog.miskcoo.com/2015/05/bzoj 3456 首先推出递推式(上面的blog讲的挺清楚的),大概过程是正难则反,设g为n个点的简单(无重边无自环)无向图数目,显然边数是\\( C_{n}^{2} \\),所以\\( g(n)=2^{C_{n}^{2}} \ 阅读全文
posted @ 2018-02-26 20:02 lokiii 阅读(232) 评论(0) 推荐(0)
摘要:看别的blog好像我用了比较麻烦的方法…… (以下的n都 过 $$ c[i]=\sum_{j=i}^{n}a[i] b[j i] $$ 设j=i+j $$ c[i]=\sum_{j=0}^{n i}a[i+j] b[i+j i] $$ $$ c[i]=\sum_{j=0}^{n i}a[i+j] b 阅读全文
posted @ 2018-02-26 15:26 lokiii 阅读(160) 评论(0) 推荐(0)
摘要:暴力推式子推诚卷积形式,但是看好多blog说多项式求逆不知道是啥.. $$ \sum_{i=0}^{n}\sum_{j=0}^{n}S(i,j) 2^j j! $$ $$ S(i,j)=\frac{1}{j!}\sum_{k=0}^{j}( 1)^k C_j^k (j k)^i $$ $$ S(i, 阅读全文
posted @ 2018-02-26 14:37 lokiii 阅读(174) 评论(0) 推荐(0)
摘要:考试题搞了好久也没懂…… 正解应该是线性规划 https://www.cnblogs.com/CQzhangyu/p/7894559.html ~~可是不会写啊~~ 如果从网络流的角度来体会大概是这样 http://blog.csdn.net/clover_hxy/article/details/7 阅读全文
posted @ 2018-02-25 22:42 lokiii 阅读(390) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-02-25 21:27 lokiii 阅读(1) 评论(0) 推荐(0)
摘要:大力推公式,目标是转成卷积形式:\\( C_i=\sum_{j=1}^{i}a_jb_{i j} \\) 首先下标从0开始存,n $$ F_i=\frac{\sum_{ji}\frac{q_jq_i}{(j i)^2}}{q_i} $$ $$ F_i=\sum_{ji}\frac{q_j}{(j i 阅读全文
posted @ 2018-02-23 19:51 lokiii 阅读(102) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-02-23 10:53 lokiii 阅读(3) 评论(0) 推荐(0)
摘要:参考:https://www.cnblogs.com/CQzhangyu/p/7500328.html ……其实理解了泰勒展开之后就是水题呢~~可是我还是用了两天时间来搞懂啊~~ 泰勒展开是到正无穷的,但是因为精度问题,所以一般展开十几项就可以(这里展开了17项)。以下是公式: $$ e^x=\su 阅读全文
posted @ 2018-02-20 21:23 lokiii 阅读(345) 评论(0) 推荐(0)
摘要:详见: http://blog.csdn.net/popoqqq/article/details/42366599 http://blog.csdn.net/whzzt/article/details/51346228 用拉格朗日乘数法,求了偏导之后二分λ。然后求完偏导的那个一元三次式的解可以二分求 阅读全文
posted @ 2018-02-19 09:41 lokiii 阅读(277) 评论(0) 推荐(0)
摘要:大概是对于f(x,y)求min,先把x看成常数,然后得到关于y的一元二次方程,然后取一元二次极值把y用x表示,再把x作为未知数带回去化简,最后能得到一个一元二次的式子,每次修改这个式子的参数即可。 智商欠费解释不清,详见Claris大神 http://www.cnblogs.com/clrs97/p 阅读全文
posted @ 2018-02-19 09:33 lokiii 阅读(1185) 评论(0) 推荐(0)
摘要:投影到地面之后,会发现圆形在平行光下面积和形状是不会变的,也就是所要求的图形是若干个圆和把相邻两个圆连起来的公切线所组成的。 公切线和圆间距瞎求一下就行,注意要去掉被完全覆盖的圆 然后simpson即可 eps大概1e 6 cpp include include include using name 阅读全文
posted @ 2018-02-17 22:42 lokiii 阅读(220) 评论(0) 推荐(0)
摘要:直接套simpson,f可以直接把圆排序后扫一遍所有圆,这样维护一个区间就可以避免空段。 然而一定要去掉被其他圆完全覆盖的圆,否则会TLE cpp include include include include using namespace std; const double eps=1e 13; 阅读全文
posted @ 2018-02-17 22:35 lokiii 阅读(303) 评论(0) 推荐(0)
摘要:一般用于在坐标系上求面积。 公式是\\( S=\frac{f(l)+4\ f(mid)+f(r)}{6} \\),其中f为对应x的y值。也就是用二次函数拟合。 至于为什么是自适应:因为使用二次函数拟合,所以对于一段x区间[a,b],考虑对[a,b]求S,再求[a,(a+b)/2]和[(a+b)/2, 阅读全文
posted @ 2018-02-17 22:29 lokiii 阅读(286) 评论(0) 推荐(0)
摘要:用到了网络流的思想(大概)。新建一个源点s,所有边权扩大两倍,然后所有的点向s连边权为点权的无向边,然后以s为起点跑spfa(S什么L优化的),这样每个点到s的距离就是答案。 原因的话,考虑答案应该是min(2\ dis[i][j]+a[j]} ),那么每个点到s的距离就是若干条边边权的二倍加上某个 阅读全文
posted @ 2018-02-17 22:01 lokiii 阅读(123) 评论(0) 推荐(0)
摘要:用顶点式\\( a(x h)^2+k=y \\)解方程,转化为\\(ax^2+bx+c=y \\)的形式,然后对二次函数求定积分\\( \frac{ax^3}{3}+\frac{bx^2}{2}+cx+C \\)即可。(其实我不知道那个C是干什么用的反正这里不用加。 阅读全文
posted @ 2018-02-17 21:44 lokiii 阅读(156) 评论(0) 推荐(0)
摘要:第一步:建立无源汇有上下界的网络模型 每行 i 作为一个点并连边(s, i, Ri, Ri),每列 j 作为一个点并连边(j, t, Cj, Cj),设 Uij, Lij 分别表示第 i 行第 j 列元素的上下界,初始时设 Uij=∞, Lij=0。按照给定的约束条 件不断调整 Uij, Lij,若 阅读全文
posted @ 2018-02-12 20:08 lokiii 阅读(174) 评论(0) 推荐(0)
摘要:看错题了以为多组询问吓得不行…… 其实还挺好想的,就是数据范围一点都不网络流。把U作为s,V作为t,以最小生成树为例,(U,V,L)要在最小生成树上,就要求所有边权比L小的边不能连通(U,V)所在的联通块。这样一来模型就很显然了,就是对所有边权 include include include inc 阅读全文
posted @ 2018-02-12 13:48 lokiii 阅读(124) 评论(0) 推荐(0)
摘要:第一问直接跑最大流即可。建图的时候按照费用流建,费用为0. 对于第二问,在第一问dinic剩下的残量网络上建图,对原图的每条边(i,j),建(i,j,inf,cij),表示可以用c的花费增广这条路。然后从新建一个源点,连(s,1,k,0)表示要增加k的流量。跑最小费用最大流即可。 阅读全文
posted @ 2018-02-12 13:12 lokiii 阅读(143) 评论(0) 推荐(0)
摘要:神奇的建图:连接(s,1,inf,0)(n+1,t,inf,0),对于1~n连接(i,i+1,inf a[i],0),对于每个志愿者(s,t,c),连接(s,t+1,inf,c)。 因为从s开始的流是inf的,到t的也是inf,但是每个点的流量少它所需要的志愿者数量那么多,所以少的流量需要用带权的志 阅读全文
posted @ 2018-02-12 08:19 lokiii 阅读(142) 评论(0) 推荐(0)
摘要:一开始从客人角度想的,怎么建都不对 从一个修车工所接待的所有顾客花费的总时间来看,设一共有x个人,那么第一个修的对总时间的贡献是x\ w1,第二个是(x 1)\ w2…以此类推。所以把第i个修车工拆成n组m个,第j组表示i修车工修第j个顾客的车,第j组第k个表示i修车工修第(n k+1)个修第j个顾 阅读全文
posted @ 2018-02-11 20:53 lokiii 阅读(109) 评论(0) 推荐(0)
摘要:……因为T点忘记还要+n所以选小了所以WA了一次 注意!题目中所给的时间是一边闭一边开的区间,所以读进来之后先l++(或者r 也行) 线段树优化建图,很神。(我记得还有个主席树优化建树的?)首先考虑暴力建图:s向每个强盗i连(s,i,1,c[i]),每个时间j向t连(j,t,1,0),每个强盗向所有 阅读全文
posted @ 2018-02-11 18:59 lokiii 阅读(178) 评论(0) 推荐(0)
摘要:求出平均数sum,对于大于sum的点连接(s,i,a[i] sum,0),表示这个点可以流出多余的部分,对于小于sum的点连接(i,t,sum a[i],0)表示这个点可以接受少的部分,然后每个点向相邻的两个点连(i,j,inf,1)表示可以任意转移,每转移一份产生1费用,注意这是个环所以首尾相连。 阅读全文
posted @ 2018-02-11 14:02 lokiii 阅读(121) 评论(0) 推荐(0)
摘要:s向仓库i连ins(s,i,a[i],0),商店向t连ins(i+m,t,b[i],0),商店和仓库之间连ins(i,j+m,inf,c[i][j])。建两次图分别跑最小费用最大流和最大费用最大流即可。 cpp include include include include using namesp 阅读全文
posted @ 2018-02-11 13:43 lokiii 阅读(164) 评论(0) 推荐(0)
摘要:其实KM更快……但是这道题不卡,所以用了简单粗暴的费用流,建图非常简单,s向所有人连流量为1费用为0的边来限制流量,所有工作向t连流量为1费用为0的边,然后对应的人和工作连(i,j,1,cij),跑一遍最小费用最大流再跑一遍最大费用最大流即可。方便起见直接重建图了。 cpp include incl 阅读全文
posted @ 2018-02-11 13:26 lokiii 阅读(362) 评论(0) 推荐(0)
摘要:第一问:因为每个点只能经过一次,所以拆点限制流量,建(i,i',1,val[i]),然后s向第一行建(s,i,1,0),表示每个点只能出发一次,然后最后一行连向汇点(i',t,1,0),跑最大费用最大流 第二问:没有点经过次数的限制所以不用拆点,s向第一行建(s,i,1,0),然后最后一行连向汇点( 阅读全文
posted @ 2018-02-11 13:10 lokiii 阅读(183) 评论(0) 推荐(0)
摘要:和火星那个有点像,但是这个价值直接在路径上,不用拆点,对于每条价值为w的边(i,j),连接(i,j,1,w)(i,j,inf,0),表示价值只能取一次,然后连接源点和所有出发点(s,i,k,0),所有终点和t(i,t,r,0),然后跑最大费用最大流即可。 cpp include include in 阅读全文
posted @ 2018-02-11 07:41 lokiii 阅读(136) 评论(0) 推荐(0)
摘要:注意: 一个点可能有多把钥匙,所以把每个点有钥匙的情况状压一下 两个点之间有障碍的情况只给出了单向,存的时候记得存一下反向 b[i][j]表示当前点拥有钥匙的状态,g[x1][y1][x2][y2]表示两点之间门的类型(0表示没有, 1表示墙比较方便),f[i][j][k]表示点(i,j)在拥有k状 阅读全文
posted @ 2018-02-10 20:56 lokiii 阅读(162) 评论(0) 推荐(0)
摘要:分层图,建k层,设(i,j,0)为点(i,j)的满油状态,全图的流量都是1,因为重复走到一个点没有意义。如果当前点是加油站,那么它向它上左的点连费用为a的边,向下右连费用为a+b的边; 否则,这个点的所有层向零层连费用为a+c的边表示建加油站和加油,其他的当前点是加油站的情况连即可,但是不用加a。然 阅读全文
posted @ 2018-02-10 18:55 lokiii 阅读(244) 评论(0) 推荐(0)
摘要:pre:http://www.cnblogs.com/lokiii/p/8435499.html 和最长k可重区间集问题差不多,也就是价值的计算方法不一样,但是注意这里可能会有x0==x1的情况也就是l==r的情况,然后就TTTTTLE。 其实处理方法很粗暴,因为是开线段,所以可以把它扩大一倍,然后 阅读全文
posted @ 2018-02-10 10:41 lokiii 阅读(175) 评论(0) 推荐(0)
摘要:同 poj 3680 https:www.cnblogs.com/lokiii/p/8413139.html cpp include include include include include using namespace std; const int N=1000005,inf=1e9; i 阅读全文
posted @ 2018-02-09 14:59 lokiii 阅读(137) 评论(0) 推荐(0)
摘要:首先能显然的想到一个方法:(s,a1,an)(a2,t,an)(s,b1,bn)(b2,t,bn)然后图中的边正常连,危桥流量1,正常桥流量为inf。但是这样即使满流了也会有一些问题,就是流是从a1到b2的。解决方法是交换b1和b2,再跑一遍,这样以来如果再次满流,那么就意味着a1,a2,b1,b2 阅读全文
posted @ 2018-02-08 22:26 lokiii 阅读(123) 评论(0) 推荐(0)
摘要:输出方案好麻烦啊 拆点,石头的连(i,i',1,1)(i,i',inf,0)表示可以取一次价值1,空地直接连(i,i',inf,0),对于能走到的两个格子(不包括障碍),连接(i',j,inf,0),然后连接s和起点,终点和t,流量为探测车的数量。然后跑最大费用最大流。 关于输出方案,dfs即可,每 阅读全文
posted @ 2018-02-08 15:03 lokiii 阅读(188) 评论(0) 推荐(0)
摘要:同方格取数问题:https://www.cnblogs.com/lokiii/p/8430720.html 记得把障碍点去掉,不连边也不计入sum cpp include include include include using namespace std; const int N=100005, 阅读全文
posted @ 2018-02-08 12:02 lokiii 阅读(102) 评论(0) 推荐(0)
摘要:因为都是正整数,所以当然取得越多越好。先把所有点权加起来,黑白染色后,s向所有黑点连流量为点权的边,所有白点向t连流量为点权的边,然后黑点向相邻的四个白点连流量为inf的边,表示不可割,这样一来,对于一条链上的s u v t,只能割掉u的点权或者v的点权,那么最小割就是用最小的代价是st分开,也就是 阅读全文
posted @ 2018-02-08 11:19 lokiii 阅读(188) 评论(0) 推荐(0)
摘要:参考:http://blog.csdn.net/w_yqts/article/details/76037315 把相同符号的连续数字加起来,合并后ans先贪心的加上所有正数,如果正数个数sum m,设计二元组(i,a[i])表示合并后序列i位置上值为a,记录前驱后继,塞进按绝对值排序的小根堆里。每次 阅读全文
posted @ 2018-02-08 09:53 lokiii 阅读(165) 评论(0) 推荐(0)
摘要:参考:http://blog.csdn.net/Regina8023/article/details/44158947 神奇的做法。题意相当于若干个数取不相邻的k个使最小。先把数组差分,len表示这段空的长度。设二元组(i,len[i]),开一个小根堆把二元组塞进去,以len排序。每次取出一个二元组 阅读全文
posted @ 2018-02-07 22:54 lokiii 阅读(262) 评论(1) 推荐(0)
摘要:记得cnt=1!!因为是无向图所以可以把回来的路看成另一条向东的路。字符串用map处理即可。拆点限制流量,除了1和n是(i,i+n,2)表示可以经过两次,其他点都拆成(i,i+n,1),费用设为1,原图中的边(i,j)连接(i+n,j,1),注意特判掉i==q&&j==nst直接相连的情况,流量要设 阅读全文
posted @ 2018-02-07 21:43 lokiii 阅读(206) 评论(0) 推荐(0)
摘要:(x,y,z)表示格子(x,y)的值为z,也就是x行+y列加的次数等于z,相当于差分约束的条件,用dfs判断冲突即可。 cpp include include include using namespace std; const int N=2005; int T,n,m,k,cnt,p,h[N], 阅读全文
posted @ 2018-02-07 15:27 lokiii 阅读(193) 评论(0) 推荐(0)
摘要:死于开小数组的WA?! 第一问n方dp瞎搞一下就成,f[i]记录以i结尾的最长不下降子序列。记答案为mx 第二问网络流,拆点限制流量,s向所有f[i]为1的点建(s,i,1),所有f[i]为mx(i+n,t,1),然后对于j include include include using namespa 阅读全文
posted @ 2018-02-07 10:05 lokiii 阅读(169) 评论(0) 推荐(0)
摘要:s向所有单位连流量为人数的边,所有饭桌向t连流量为饭桌容量的边,每个单位向每个饭桌连容量为1的边表示这个饭桌只能坐这个单位的一个人。跑dinic如果小于总人数则无解,否则对于每个单位for与它相连、满流、另一端不是s的点则是最终方案 cpp include include include inclu 阅读全文
posted @ 2018-02-06 22:58 lokiii 阅读(175) 评论(0) 推荐(0)
摘要:经典二分图匹配问题。把每个点拆成两个,对于原图中的每一条边(i,j)连接(i,j+n),最小路径覆盖就是点数n 二分图最大匹配。方案直接顺着匹配dsf。。 cpp include include using namespace std; const int N=505,M=120005; int n 阅读全文
posted @ 2018-02-06 22:05 lokiii 阅读(295) 评论(0) 推荐(0)
摘要:s向所有类别属性连流量为当前类别属性需要的个数的边,所有题目向t连流量为1的边(表示只能选一次),所有属性向含有它的题连容量为1的边。跑一变dinic,结果小于m则无解,否则看每一个类别属性连出去的题目的边是否满流,满流代表这个属性选择这道题 cpp include include include 阅读全文
posted @ 2018-02-06 20:18 lokiii 阅读(266) 评论(0) 推荐(0)
摘要:……一道难在读入的题。 最后解决方案直接getline一行然后是把读优拆掉放进函数,虽然很丑但是过了。 然后就是裸的最大权闭合子图了,把仪器当成负权点向t连流量为其价格的边,s向实验连流量为实验报酬的边,实验向所有它所需要的仪器连流量为inf的边表示不可割断。然后跑最大流即可。 关于输出方案,直接看 阅读全文
posted @ 2018-02-06 14:33 lokiii 阅读(130) 评论(0) 推荐(0)
摘要:…为什么最短路的题会出现在网络流24里?? 因为范围是15所以直接把每个状态作为一个点,向它能转移到的点连有向边即可。可以不用建图(据说建图存不下?),直接枚举m个转移方案。位运算比较麻烦注意不要写错。 阅读全文
posted @ 2018-02-06 11:28 lokiii 阅读(169) 评论(0) 推荐(0)
摘要:判无解的方法非常粗暴:快T了还是没有合法方案,就是无解。 然后枚举答案,对于每一天都建一套太空站,s连地球,t连月球,上一天的太空站连向这一天的太空站,流量均为inf。然后对于每个飞船,上一天的停靠站向这一天的停靠站连边,流量为p。每次新增一天都新建一套,然后跑一次dinic加给tot,等tot = 阅读全文
posted @ 2018-02-06 11:25 lokiii 阅读(180) 评论(0) 推荐(0)
摘要:建图细节比较多,对于每个点i,拆成i和i',i表示用的餐巾,i'表示脏餐巾,连接: (s,i,r[i],p)表示在这一天买新餐巾 (i,t,r[i],0)表示这一天用了r[i]的餐巾 (s,i+n,r[i],0)表示这一天有r[i]条脏餐巾 if(i+ft include include inclu 阅读全文
posted @ 2018-02-04 22:31 lokiii 阅读(140) 评论(0) 推荐(0)
摘要:对于ai==0连接(i,t,1,0),对于ai 1(s,i,ai 1,0),然后对以相邻的两个点(i,j)连接(i,j,inf,1),注意这里是一个环的形式,所以1和n+1相连 阅读全文
posted @ 2018-02-04 20:50 lokiii 阅读(104) 评论(0) 推荐(0)
摘要:比较神奇的建图。首先把点离散化成n的级别有m个,设s=0,t=m+1,然后i从0到m连接(i,i+1,k,0),对于区间(ai,bi)连接(ai',bi',1, wi)。 这样建图显然增广路最多只有k条,因为同一条增广路上选择的区间是不会重叠的,不同增广路上选择的区间是一定有重叠的,所以保证了最多重 阅读全文
posted @ 2018-02-04 14:36 lokiii 阅读(120) 评论(0) 推荐(0)
摘要:参考:https://www.cnblogs.com/CQzhangyu/p/7071477.html 神奇的点分治序(或者叫点剖?)。就是把点分治扫过的点依次放进队列里,然后发现,对于每一棵树摊到序列上,每个点的值v是重心到这个点的距离,那么对序列上的每个点定义l为这个子树重心在序列上的位置,r为 阅读全文
posted @ 2018-02-04 11:35 lokiii 阅读(176) 评论(0) 推荐(0)
摘要:设计一个五元组(i,l,r,p,v),表示在以i为左端点,右端点落在(l,r)中的情况下,取最大值v时右端点落在p。把这个五元组塞到优先队列里,以v排序,每次取出一个,然后把这个取过的五元组分成两个(i,l,p 1,p',v')(i,p+1,r,p'',v'')塞回去。 关于如何确定v和p,先求前缀 阅读全文
posted @ 2018-02-03 09:35 lokiii 阅读(140) 评论(0) 推荐(0)
摘要:直接建图比较显然,是(s,i,w),(i,t,b),(i,i',p),(i,j,inf),然而建出来之后发现边数是n方级别的,显然跑不过去,然后就有一种比较神的思路:把a离散了建一棵权值线段树,然后要连的j直接放到一个区间内。然而题目又要求j include include include incl 阅读全文
posted @ 2018-02-02 15:27 lokiii 阅读(167) 评论(0) 推荐(0)
摘要:s向所有信仰1的人连(s,i,1),所有信仰0的人连(i,t,1),对于朋友关系,连接双向边,流量为1。跑最大流的结果即为答案。 考虑这样做的意义。最小割就是把总点集分割为两个点集S,T,使得所有\\(u\in S,v\in T,val(u,v) \\)的值最小。也就是说,在这道题中的意义就是使最少 阅读全文
posted @ 2018-02-02 09:18 lokiii 阅读(170) 评论(0) 推荐(0)
摘要:因为是异或运算,所以考虑对每一位操作。对于所有已知mark的点,mark的当前位为1则连接(s,i,inf),否则连(i,t,inf),然后其他的边按照原图连(u,v,1),(v,u,1),跑最大流求最小割。然后从s沿着有剩余流量的边dfs,把dfs到的点都与(|)上1,因为是与,所以即使操作到了已 阅读全文
posted @ 2018-02-01 21:54 lokiii 阅读(170) 评论(0) 推荐(0)
摘要:~~拆点拆魔怔了~~ 直接按照原图建就行,这里有个小技巧就是双向边的话不用按着板子建(u,v,c)(v,u,0)(v,u,c)(u,v,0),直接建(u,v,c)(v,u,c)会快十倍!800ms 80ms,建完之后跑一遍dinic,然后从s顺着有残余流量的正向边dfs打标记fr并且计数ss,从t顺 阅读全文
posted @ 2018-02-01 16:44 lokiii 阅读(120) 评论(0) 推荐(0)
摘要:就是求哪些边在最大流上满流,也就是找割边。把0作为t点,s向所有的1~n连流量为inf的边,其他的边按照流量连。跑一遍最大流,从s顺着有残余流量的正向边dfs打标记fr,从t顺着正向边有残余流量的反向边dfs打标记to,那么满足条件的边就是两端点分别有fr和to标记并且满流(这里只考虑正向边),因为 阅读全文
posted @ 2018-02-01 12:04 lokiii 阅读(160) 评论(0) 推荐(0)
摘要:网络流的题总是出各种奇怪的错啊……没写过邻接表版的dinic,然后bfs扫到t点不直接return 1就会TTTTTLE…… 题目中的操作是“去掉人”,很容易想到拆点,套路一般是(s,i')(i,t)(u',v)(v,u),然后关于输出顺序最小方案,可以枚举删点,如果删去一个点后求得最小割比原来的小 阅读全文
posted @ 2018-02-01 09:21 lokiii 阅读(260) 评论(0) 推荐(0)