自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(654)

原创 2020 多校补题情况

牛客:第一场J:AEHIJ第二场:CDFJ第三场:ABCEFGL第四场:BFH第五场:BDEFI第六场:BCEGHK第七场:CDHhdu——

2020-08-21 18:02:08 53

原创 cf1421 E - Swedish Heroes 观察证明性质+dp处理

很容易发现:最终结果为:仔细观察,大胆猜测结论:设op=-1的个数为x, 只要满足:(n+x)%3==1,且op序列不等于1,-1,1,-1,1…… ,则一定能通过一种方法构造得到这种op序列。证明:首先:若两个序列均满足 (n+x)%3==1 则他们合并后一定也满足(n+x)%3==1.证:显然n=1时成立(x=0).设其中一个序列长度n1,op=-1的个数为: x1, 另一个序列的长度为n2,op=-1的个数为x2.合并后的序列长度为n=n1+n2,op=-1的个数...

2020-10-19 21:44:40 133 10

原创 codeforces 1430 F. Realistic Gameplay 思维+dp预处理

很容易发现,如果怪物区间严格不相交,则是一个非常简单的枚举题目。因为中间空的时间再多,我们也只能上一次子弹,也就是说,每波怪物开始的时候,最多只能存k发子弹。而题目又保证了只能相交于上一波的终点。显然我们可以倒着处理,判断每波开始之前,枪里至少要有多少发子弹。若某一波是独立的则dp[i]=max(0ll,p[i].a-(p[i].r-p[i].l)*k); 除了第一秒后面每秒都能上一次弹。第一秒需要的子弹数就是dp[i].而如果当前波结束的时间就是下一波开始的时间,则这两波是关联的.

2020-10-15 16:45:24 40

原创 hdu6579 Operation 线型基经典操作

https://blog.csdn.net/qcwlmqy/article/details/97156192学习别人的博客,回顾一波线型基操作。#include <bits/stdc++.h>using namespace std;typedef long long ll;#define re register#define ls (o<<1)#define rs (o<<1|1)//#define m (l+r)/2#define pb push

2020-10-14 21:31:25 15

原创 (完结撒花)网络流二十三题 ————(二十三)、P3357 最长k可重线段集问题 费用流并联串联问题

先说下为啥完结撒花。。刷完感觉网络流无敌了!!!https://blog.csdn.net/bjfu170203101/article/details/109062331这道题的升级版,懒得再说一遍了。不过这题有几个要注意的点:1:坐标距离会爆longlong;2:1 1 2 2 这种 (x1+1==x2)的线段对结果没有影响,即:这些线段可以随便取,先把这些线段取完扔掉。3:1 1 1 2 这种与x轴垂直的线段是与x=1相交的,要注意处理这种情况:比较好的处理方法是:.

2020-10-14 17:43:16 17

原创 网络流二十四题 ————(二十二)、P3356 火星探险问题 费用流经典建模

每个点访问第一次才有贡献,对于点的限制,我们一般把点拆成出点和入点,入边连向入点,出点连向出边。入点连向出点限制点选的次数。我们从入点向出点连一条流量1,花费1的边表示第一次访问该点可以采集一个石头,再连一条流量inf,花费0的边,表示后面可以再次访问该点,但是不会获得石头。S连起点,终点连汇点。跑最大费用流即可。细节较多仔细检查。#include<bits/stdc++.h> using namespace std;typedef long long ll;const

2020-10-14 16:04:56 16

原创 网络流二十四题 ————(二十)、P4012 深海机器人问题 费用流经典建模

20分钟AC,这速度还可以。做了20道网络流题目后,基础建模已经没啥问题了。#include<bits/stdc++.h> using namespace std;typedef long long ll;const int N=1000005;const int M=1000005;const ll inf=0x7fffffff;struct MCMF{ struct EDGE { int nxt, to, cost, flow; }ee[M <&lt.

2020-10-14 12:15:23 15

原创 网络流二十四题 ————(十九)、P4013 数字梯形问题 费用流经典建模

比较简单的费用流建模,但还是写了1h,只能说不够熟练。说一下我做题时的想法吧:首先肯定先考虑无任何限制的规则3:无限制的话,只需要考虑第一层最为起点,每个点只能用一次这个限制即可:直接按要求连边建图(流量均为inf,花费为:-权值),然后S连向第一层流量为1,花费为0,这里控制第一层每个点只能取一次表示这个点开始的一条路径。最后一层连向终点,流量inf,花费0.然后仔细分析一下题目,发现:每层连向下一层连边本来就是边不相交的(任意情况我们都可以让左边的路径选择最左边的边,构造出边不.

2020-10-14 11:41:38 29

原创 网络流二十四题 ————(二十一)、P3358 最长k可重区间集问题 费用流并联与串联选择

https://www.luogu.com.cn/problem/solution/P3358洛谷大佬们题解写的很棒,我就不献丑了。说下我的理解吧,可以把这个限制过程当初物理中的电路并联与串联。流量就是电流。我们让源点产生k电流。这样保证流经每个点的电流不超过k。每个区间我们给他变成左开右闭区间。仔细体会下这个过程,很有意思的!#include<bits/stdc++.h> using namespace std;typedef long long ll;co

2020-10-13 22:33:01 19

原创 网络流二十四题 ————(十八)、P2770 航空路线问题 最大费用流+打印路径

上图时建边详解。打印路径就是,反向边有流时就打印即可。细节见代码。#include<bits/stdc++.h> using namespace std;typedef long long ll;const int MAXN = 5001;const int MAXM = 50001;struct MCMF{ int n, s, t, cnt = 1; long long maxflow=0, mincost=0; int dis[MAXN], head...

2020-10-12 16:56:13 19

原创 网络流二十四题 ————(十七)、P3355 骑士共存问题 二分图最小割,转化为网络流最小割 -> 最大流求解

经典套路了,看到这种限制条件比较少的情况,我们很容易想到用最小割的思想。先把所有点都放上骑士,然后横纵坐标为奇数的点在左部图,横纵坐标为偶数的点在右部图(二分图经典套路)。相互不可同时出现一定不在同一部图(因为横纵坐标差3),然后从左部图往其可达点连边,容量为inf。然后起点S连向左部图每个点,容量为1. 右部图每个点连向终点,容量为1.这样求最小割后,S一定不能通过中间达到右边。(中间容量为inf一定不会被割掉)。留下来的每条边都代表一个点放骑士,且是最大数量可放置的骑士。最小割.

2020-10-12 12:04:49 22

原创 网络流二十四题 ————(十六)、P2754 [CTSC1999]家园 / 星际转移问题 残留网络建边,最大流+并查集

#include <bits/stdc++.h>using namespace std;typedef long long ll;const int M = 2500000+7;const int N = 100000+7;struct Dinic{ //N个点,M条边 //add建双向边,然后D.gao ,最后输出maxflow #define inf 0x3f3f3f3f ll maxflow;int s,t,n; int v[N],pre[N],d[N],...

2020-10-11 22:28:56 18

原创 Educational Codeforces Round 96 (Rated for Div. 2) A-E

(353) xxx 5 187 +00:05 +00:10 +100:28 +00:53 +01:21 A:倒着枚举就行,复杂度是够的,不要纯On^2就行。。#include <bits/stdc++.h>using namespace std;typedef long long ll;#define re register#define ls (o<<1)#define r...

2020-10-11 20:19:02 229

原创 网络流二十四题 ————(十五)、P1251 餐巾计划问题 dinic+spfa 跑费用流 飞快

突然发现费用流可以用dinic写,虽然快不了太多,但能快一点是一点。比如这题是用时最短的。这题本身很简单:左部图点表示每天剩的衣服,右部图表示每天要用的衣服。源点连向每个点,容量为r[i],花费0,容量表示每天剩的脏衣服总量。源点连向左部图点p,容量inf,花费0,p连向右部图每个点,容量inf,花费P,表示新买衣服。右部图每个点相连汇点t,容量r[i],花费0,表示每天需要r[i]个新衣服左部图每个点i,连向i+N,容量inf,花费S,表示慢洗。左部图每个点i,连向i+M,..

2020-10-11 16:16:36 17

原创 leetcode第 210 场周赛

100 / 4006 xu-ri-dong-sheng-f 18 1:19:04 lt的题比较简单,但是他这个函数提交太难调试了,大部分时间花在这里5535. 括号的最大嵌套深度循环搞一搞就行class Solution {public: int maxDepth(string s) { int n =s.length(); int ans=0,mx=0; for(int i=0;i<n;i++){ .

2020-10-11 13:05:33 384

原创 网络流二十四题 ————(十四)、P4015 运输问题 费用流

费用流最简单的模型。容量控制选择权重,费用控制选择代价。最小费用最大流,费用加负数就是最大费用最大流。#include<bits/stdc++.h> using namespace std;const int MAXN = 5001;const int MAXM = 50001;struct MCMF{ int n, s, t, cnt = 1; long long maxflow=0, mincost=0; int dis[MAXN], head[MAXN],

2020-10-11 10:24:00 19

原创 网络流二十四题 ————(十三)、P2774 方格取数问题 二分图网络流 最小割模型

一看到网格图我们就要想到:横纵坐标相加为偶数与为奇数的点不相邻这个tips而题目说每个数不与其上下左右共四个数相连,与其他边相连即 —> 考虑删边可能更好做。于是自然而然想到建立网络流最小割模型,删除权值最小的边,使得剩下的点不直接相连。连边如下:左部图为横纵坐标和是奇数的点,右部图是横纵坐标是偶数的点。左部图向其四周不能连边的点连一条容量为无穷大的边。S向左部图每个点连边,容量为点权。右部图每个点向T连边,容量为点权。求这个网络的最小割。我们构造的这个网络S ..

2020-10-10 22:27:28 13

原创 HHKB Programming Contest 2020 ABC E

882 xilinshancun 1100 75:59 100 1:51 200 6:12 300 9:40 - 500 75:59 感觉AT 基本都是数学思维题A:签到。。B:枚举每个点做为图形右下角的贡献即可。#include <bits/stdc++.h>using namesp...

2020-10-10 21:51:56 78

原创 网络流二十四题 ————(十二)、P4014 分配问题 二分图带权匹配 网络流解法

做了10多道网络流,没看题解和思路,自己就建立出了二分图带权匹配的费用流模型。感觉已经算是入门了!!如下建边:左部图n个点表示工人,右部图n个点表示工作S连向左部图每个点,流量为1,费用为0.右部图每个点连向T,流量为1,费用为0。这里连向S,T的边流量为1的目的是为了让每个工人做一个工作,每个工作只能一个工人做!然后工人i连向工作j,流量为1,费用为a[i][j],这样跑最小费用最大流,求出的是最小的工作效率,即二分图最小带权匹配。显然费用直接设为负数,就是二分图的最大带权匹配

2020-10-10 19:27:51 21

原创 网络流二十四题 ————(十一)、P4009 汽车加油行驶问题 分层图最短路 && 最小费用最大流

这是一道比较经典的最短路,分层图+最短路。。#include <bits/stdc++.h>using namespace std;typedef long long ll;#define re register#define ls (o<<1)#define rs (o<<1|1)//#define m (l+r)/2#define pb push_backtypedef pair<int,int> pii;const double

2020-10-10 18:57:22 14

原创 网络流二十四题 ————(十)、P2761 软件补丁问题 状态压缩最短路,不建图直接利用状态转移

经典最短路题目。这题空间不够时间足够,可以不建边,直接跑dij即可。#include <bits/stdc++.h>using namespace std;typedef long long ll;#define re register#define ls (o<<1)#define rs (o<<1|1)//#define m (l+r)/2#define pb push_backtypedef pair<int,int> pii;

2020-10-10 15:54:05 11

原创 网络流二十四题 ————(九)、P4011 孤岛营救问题 分层01BFS最短路

思路比较简单:01BFS跑最短路。记录到达每个点的状态,dis[M][(1<<10 )+7]: 到达i点,状态为j的最小时间花费。然后几个坑点:1:钥匙无限使用2:一个地方有多个钥匙,起点也会有钥匙3:会有无解的情况 输出-1(bfs跑不出结果就是无解)然后就是拼基本功了#include <bits/stdc++.h>using namespace std;typedef long long ll;#define re register.

2020-10-09 16:56:11 22

原创 网络流二十四题 ————(八)、P4016 负载平衡问题 最小费用最大流 spfa+dij两种版本写法对比

建模比较简单:求出平均数tp。让S连向 a[i]>tp的节点表示这些仓库需要货物送出,让a[i]<tp的节点连向T表示这些仓库需要货物送入。容量为差值,花费为0然后相邻点连边,容量为inf,花费为1,表示相邻两点可以传送货物。一下是最小费用最大流的两种写法对比:当图是稀疏图时,spfa有很高的效率,而稠密图spfa很容易被卡掉。视情况选择就行。dij版本#include<bits/stdc++.h> using namespace std;const

2020-10-09 15:17:20 31

原创 网络流二十四题 ————(七)、P2763 试题库问题 二分图多重匹配, dinic跑+路径输出。 有个小坑

很经典的模型了,之前博客讲的很详细了。现在说下这题wa5的坑:输出方案时容量为0的边可能是从起点连过来的边的反向边!!#include <bits/stdc++.h>using namespace std;typedef long long ll;const int M = 1000000+7;const int N = 1100+7;struct Dinic{ //N个点,M条边 //add建双向边,然后D.gao ,最后输出maxflow #define

2020-10-09 11:10:01 21

原创 网络流二十四题 ————( 六)、 P2766 最长不下降子序列问题 最多不相交路径 动态规划+思维建边

第一问入门题:dp[i]表示:以i结尾的LIS。后面要用到这个dp思想:为了让选择的每条IS长度等于mx_dp[i],我们可以这样建模:以所有dp[i]==1为非递减序列的起点,源点连向这些点S,边权为1.以所有dp[i]==mx为非递减序列的终点,这些点连向汇点T,边权为1.所有i,j满足:a[i] <= a[j] && i < j && dp[i]+1 == dp[j] , 从i 向j连边,边权为1。以上方法建模刚好满足从S到T的每一条

2020-10-08 23:32:56 19

原创 网络流二十四题 ————( 五)、P3254 圆桌问题 最大流经典模型

最大流经典模型。一个超级源点,连接每个公司,边权为公司人数。一个超级汇点,连接每个桌子,边权为桌子人数。桌子与公司之间连完全图,边权均为1.整个图为二分图加一个源点和一个汇点。所以dinic复杂度最坏为msqrt(n)。跑的飞快。。。#include <bits/stdc++.h>using namespace std;typedef long long ll;const int M = 250000+7;const int N = 500+7;struct Di

2020-10-08 21:06:28 18

原创 网络流二十四题 ————( 四)、P2765 魔术球问题 最小路径覆盖模型 +打表找规律 或者 残留网络上跑最大流

最小路径覆盖模型,模型解法见 我上一篇BLOG:https://blog.csdn.net/bjfu170203101/article/details/108956695这题难点在于不知道点数,即不知道改用多少小球,枚举的话,每次重新跑dinic显然会T.我们有两种方法解决这道题:方法一:打表找规律,找出每个n对应的小球的个数,只跑一遍dinic就行。网络流的最坏复杂度是n^2*m , 但实际跑随机数据时(非完全图,边和点同一数量级),效率很高,我们可以把它看成线性的复杂度。。

2020-10-08 11:37:57 29

原创 网络流二十四题 ————( 三) 、P2764 最小路径覆盖问题 转化为二分图最大匹配用 网络流求解

设一个有向无环图G =(V,E),n=|V|。把G中的每个点x拆成编号为x和x+n的两个点。建立一张新的二分图,1-n做为二分图的左部点,n+1 -> 2n 做为二分图的右部点,对于原图的每条有向边(x,y),在二分图中的左部点x与右部点y+n之间连边。最终得到的二分图称为G的拆点二分图,记为G2。定理:有向无环图G的最小路径点覆盖包含的路径条数,等于n减去拆点二分图G2的最大匹配数。证明:详细证明在算法竞赛——进阶指南这本书上。我简单说下:最大匹配的每条边对应G中的.

2020-10-07 22:25:37 27

原创 网络流二十四题 ————( 二) 、P2762 太空飞行计划问题 最大权闭合图 -> 最小割+打印方案

https://blog.csdn.net/bjfu170203101/article/details/108955233解法总结见我上一篇BLOG。这里只讲一下关于最小割打印。首先最大流只是值等于最小割,最大流选的边不一定等于最小割的边。割是把网络分断的一个边集。我们只需要在残留网络中S开始遍历,可达的点计为标记点(即d[i]>0的点)若一条边 x,y满足:d[x]>0,d[y]==0 则该边属于最小割边集。另外:其实这个模型也可以感性理解一下:最小割一定.

2020-10-07 21:18:28 28

原创 hihocoder #1398 : 网络流五·最大权闭合子图 最大权闭合子图问题 转化为最小割 用最大流求解

自己整理了下hiho上的提示。做了下笔记,并用图例解释了提示中难懂的部分!这种题目自己想很难想出来的,不过见一次,下次这种模型就简单了!!#include <bits/stdc++.h>using namespace std;typedef long long ll;const int M = 50000+7;const int N = 400+7;struct Dinic{ //N个点,M条边 //add建双向边,然后D.gao ,最后输出maxfl.

2020-10-07 20:35:56 30

原创 网络流二十四题 ————( 一) 、 P2756 飞行员配对方案问题 二分图最大匹配+打印匹配

建一个超级源点s,超级汇点t。s连向二分图中左部图的每个节点,边权为1.二分图中右部图的每个节点连向t,边权为1.左右部图连边的边权为1。注意上述建边不要忘了建反向权值为0的边,方便撤销影响。然后跑dinic即可。 dinic跑二分图的复杂度为m*sqrt(n)最后要打印匹配。考虑dinic的过程,最后的网络,每条边的反向边有流量(或者正向边无流量),就说明这条边被选中了,输出即可。最后说一下:其实网络流就是找s-t的路径数,每条边的边权就可以看成x -> y 的路径.

2020-10-07 16:59:50 31

原创 2019 ICPC Asia Nanjing Regional F. Paper Grading 字典树上的dfs序上建立树状数组套权值线段树

这题的关键思路点:把n个串插入到字典树上后,对于一个串t,与其前缀k个相同的在字典树的字符串为: 从根节点沿着t走k步后到达的节点tk,其子树节点满足这个条件。然后自然而然就能想到字典树上dfs序建立主席树,求l-r字符串中,符合条件的字符串个数。(主席树的经典操作了,求[l,r]范围内值为x-y,的数的个数。)即建立n棵树,每棵树i,的位置j,维护的是:1-i字符串中,dfs序为j的字符串的个数。由于要支持修改操作,我们可以用树状数组套权值线段树:具体操作见代码:(写了个空间回收.

2020-10-07 16:15:47 26

原创 Codeforces Round #675 (Div. 2) 1442 F - Boring Queries 可持久化线段树维护 区间乘法

#include <bits/stdc++.h>using namespace std;typedef long long ll;#define re register#define pb push_backtypedef pair<int,int> pii;const double PI= acos(-1.0);const int M = 2e5+7;const int mod = 1e9+7;struct node{ int l,r,id,ans;}...

2020-10-06 21:57:16 729

原创 Codeforces Round #675 (Div. 2) 1442 E. Minlexes 贪心+特判

比较简单的一道E,只不过特殊情况有点多,需要考虑全面。有个比较显然的贪心:从后往前处理,如果后面的后缀某两个位置删除了,前面的后缀一定需要删除,(因为删不删某两个位置的字符,只跟他们后面的字符有关)然后就是简单的处理了。这里给出一些情况,方便大家调错:(最左边的字符是当前处理的字符)bba 删去bb;--> aaab 不删除;--> aabaabba 删除aabb;--> aaabbab 删除bb;--> aaab //wa46...

2020-10-06 16:39:30 1554 2

原创 Codeforces Round #675 (Div. 2) A - D

1:24 做出 D, 这场打的还行,主要是最近手感不错。A - Fence直接取上界-1即可:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define re register#define ls (o<<1)#define rs (o<<1|1)//#define m (l+r)/2#define pb push_backconst double PI..

2020-10-06 16:31:21 92

原创 【模板】可持久化线段树 2(主席树) 主席树模板

大半年没用过主席树了,手敲回顾下,20min手敲1A主席树模板。。我感觉我线段树这一块拿捏的死死的!!很easy#include <bits/stdc++.h>using namespace std;typedef long long ll;const int M = 2e5+7;int a[M],li[M],cnt=0;int rt[M*20],ls[M*20],rs[M*20],tr[M*20];void up(int pre,int &o,int l,in

2020-10-04 21:25:32 36

原创 gym /102501 G Swapping Places 拓扑排序+优先队列 思维优化

只考虑朋友关系之间相互移动太难做了。正难则反,考虑不是朋友关系的一对位置,他们的相对位置一定不变。这样就能构建出一个DAG,(每个点只连其前面一个和后面一个点,最多2N条边)然后拓扑排序下 + 优先队列放置最小字典序的串即可!#include <bits/stdc++.h>using namespace std;typedef long long ll;#define re register#define ls (o<<1)#define rs (o&lt

2020-10-04 08:33:58 83

原创 Grakn Forces 2020 A-E

A Circle Coloring 从前往后构造即可#include <bits/stdc++.h>using namespace std;typedef long long ll;#define re register#define ls (o<<1)#define rs (o<<1|1)//#define m (l+r)/2#define pb push_backconst double PI= acos(-1.0);

2020-10-02 18:59:22 74

原创 2020牛客暑期多校训练营(第四场)C Count New String 巧妙的思维转化 + 广义后缀自动机板子

这一题很巧妙啊!首先题目给的式子就很吓人,但仔细分析我们就发现:其实就是求:这个只要把式子展开就能发现了。为啥能想到这?因为题目就是问本质不同的字串,我们肯定尽可能往这里构造(有后缀自动机可以解决这个问题)好了到这里我们就可n^2暴力做这题了。——把n个后缀离线插入到字典树中,然后BFS建立SAM,跑一下就行,其实就是广义后缀自动机。但显然AC不了。我们还需要优化。看题目字符集大小K=10,他这个条件肯定是有用的(除非出题人毒瘤,故意坑你,一般正常情况不会这样搞得,反正我没做

2020-10-01 19:26:29 60 5

原创 P6139 【模板】广义后缀自动机(广义 SAM) 在线加字符 建立SAM

在线做法太爽了,代码少,速度快。用法基本跟普通sam一样!!#include<bits/stdc++.h>#define ll long longusing namespace std;const int M=1e6+7;struct SAM { int maxlen[M*2], trans[M*2][26], link[M*2], tg[M*2], size, last; SAM() { size = last = 1; memset(tg,0,sizeof(tg

2020-09-30 20:48:06 25

空空如也

空空如也

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