摘要: 本题是分层图最大流问题,相当于按时间拆点,每个当前点向下一点的下一时间层连点,每一层有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) 编辑