上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 22 下一页
摘要: 本题的收获是,要学会反向思维,正向找包含1的太多,我们就反向找,全排列-只有0的不满足题意的就是答案,一共有n-m个0,m个1,插空法,一共有m+1个地方可以插入0序列,总排列数为(n+1)*n/2,每一段0序列的数是l*(l+1)/2,我们要使答案最大,就要使l尽可能小,和上题一样的思维,要最小, 阅读全文
posted @ 2020-02-14 11:01 GRedComeT 阅读(387) 评论(2) 推荐(0) 编辑
摘要: 题意是说给你一串数组,其中-1代表未知,求相邻两个数之差的绝对值最小,-1可以由k赋值,先考虑-1的情况,把k解出来,转换一下,就是绝对值之差最小情况,|k-a|,|k-b|,|k-c|,要使最大的最小,也就是在两个端点找,|k-min|,|k-max|,由数形结合可知,当k为min与max的中点时 阅读全文
posted @ 2020-02-14 10:51 GRedComeT 阅读(490) 评论(0) 推荐(0) 编辑
摘要: 本题是分层图最大流问题,相当于按时间拆点,每个当前点向下一点的下一时间层连点,每一层有n+1个点 #include<bits/stdc++.h> using namespace std; #define lowbit(x) ((x)&(-x)) typedef long long LL; const 阅读全文
posted @ 2020-02-13 21:28 GRedComeT 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 转换一下题意,就相当于问t能不能和s中2个不相同的子串相同,我们可以将t串拆成2个子串t1,t2,得到状态dp[i][j][k]=0/1,表示s判断到i位,t1判断到j位,t2判断到k位,0/1表示是否满足 两个状态,s[i]与t1[j]相匹配,s[i]与t2[k]相匹配 dp[i+1][j+1][ 阅读全文
posted @ 2020-02-13 15:55 GRedComeT 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 1e18对应2进制有58位,可以直接暴力模拟,因为读入的数都是2次幂,__builtin_ctz这个内置gcc函数可以算出二进制下末尾有几个0,读入时统计,然后从n的最低位开始判断,注意每次升位的时候如果有2个相同的就要向上一位进位,当拆掉比他大的数时,必定对比他大的位各个产生一个1,因为>>1 # 阅读全文
posted @ 2020-02-13 15:42 GRedComeT 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 本题可以转换成图论来做,每两个相邻点连一条边,然后统计每一个点的degree,如果>=2说明有一个点要相邻三个点,不满足题意,然后找出每个degree<2的点,这些点可以作为一段的起点,然后依次dfs添加,如果26个字母有一个没有dfs到的,就无解 #include<bits/stdc++.h> u 阅读全文
posted @ 2020-02-13 15:39 GRedComeT 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 本题可以把求解的目标转换成从1到N两条不相交的路径,回想上一题,通过拆点来限制一边只能过一次,capacity为1,cost为-1来跑最大费用流,注意1点和N点的capacity要为2,因为需要过2次,答案就是最大费用流-2,本题的收获是输出路径,从每个点的出点出发(虚点)枚举其连接的下一个入点(实 阅读全文
posted @ 2020-02-12 22:15 GRedComeT 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 三倍经验,三个条件,分别对应了常见的3种模型,第一种是限制每个点只能一次且无交点,我们可以把这个点拆成一个出点一个入点,capacity为1,这样就限制了只选择一次,第二种是可以有交点,但不能有交边,那我们就不需要拆点,限制每条capacity都为1就可以了,第三种直接连,没有限制( #includ 阅读全文
posted @ 2020-02-12 16:47 GRedComeT 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 本题和方格取数一样,也可以分成黑白点,本题加上特判一个点是否有障碍即可,其余和那题没什么区别,挂一下大佬的证明(二分图最大独立集) #include<bits/stdc++.h> using namespace std; #define lowbit(x) ((x)&(-x)) typedef lo 阅读全文
posted @ 2020-02-12 15:48 GRedComeT 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 费用流问题,每个样本选一次,就连一条capacity为1,权为给定的值,因为可以重复走,再连capacity为无穷,权为0的边,再一次连接给定的出点和汇点即可 #include<bits/stdc++.h> using namespace std; #define lowbit(x) ((x)&(- 阅读全文
posted @ 2020-02-12 15:04 GRedComeT 阅读(103) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 22 下一页