- 博客(328)
- 收藏
- 关注
转载 Codeforces Round #588 (Div. 1) C. Konrad and Company Evaluation
直接建反边暴力 复杂度分析见https://blog.csdn.net/Izumi_Hanako/article/details/101267502 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int MAXN = 100005; ll out[MAXN], i...
2019-09-26 18:45:00
323
转载 2019 Petrozavodsk Winter Camp, Yandex Cup C. Diverse Singing 上下界网络流
建图一共建四层 第一层为N个歌手 第二层为{pi,li} 第三层为{si,li} 第四层为M首歌 除了S和第一层与第三层与T之间的边为[1,INF] 其他边均为[0,1] #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef int JQK; const JQK I...
2019-09-26 13:24:00
416
转载 Gym - 101170B British Menu SCC点数目不超过5的最长路
题意其实就是给你一个有向图 但是每个SCC里面的点数目不超过5 求最长路 首先暴力把每个SCC里的每个点的最长路跑出来 然后拓扑排序dp 然后因为tarjan 搜索树出来的SCC是拓扑排好序的 可以直接dp #include<bits/stdc++.h> #define MOD 1000000007 using namespace std; typedef l...
2019-09-25 20:24:00
349
转载 Codeforces 1216E2 枚举位数+二分
两个二分 枚举位数 #include <bits/stdc++.h> #define MOD 1000000007 using namespace std; typedef long long ll; ll ten[15]; ll check1(ll x) { ll ans = 0; ll l, r; fo...
2019-09-24 19:19:00
302
转载 CodeForces - 1221E Game With String 分类讨论
首先分析A能获胜的情况 A能获胜 当且仅当A拿完后所有剩下的都<b 所以一旦存在一个大小为X的 且 b<=X<a 则必是后手赢 当X为 a<=x<2*b 的时候 无论A或B拿 两个人都只能拿一次 拿完就<b作废 而X>=2*b时 如果是B先手 则B可以构造出一个大小刚好为b的来赢得胜利 所以如果有两个及以上的X>=2*b 后手必胜 ...
2019-09-22 17:17:00
172
转载 BZOJ 1135 P3488 LYZ-Ice Skates 线段树+Hall
https://www.luogu.org/problem/P3488 根据Hall定理 左边任意一个区间L-R a[i]的和sum[l~r] 都要<= (R-L+1+d)*K 把(R-L+1)*K 挪到左边 即为 对任意L-R区间 有$\sum_{i=L}^R{(a[i]-k)} \leK*D$ 然后用线段树最大字段和去维护它即可 #include<b...
2019-09-20 16:46:00
136
转载 BZOJ 4823 老C的方块
把格子分成四类 第一类是蓝线左右的相邻两个格子 第二类为与蓝线左边格子相邻的点 第三类为与蓝线右边格子相邻的点 建边就S朝第二类每个点建边 第二类每个点朝其相邻的第一类建边 第一类从左格子朝右格子建边 第一类朝与其相邻的第三类建边 第三类朝T建边 #include<bits/stdc++.h> using namespace std; typede...
2019-09-19 20:00:00
137
转载 POJ - 1704 Georgia and Bob 阶梯博弈
阶梯博弈: 阶梯博弈:博弈在阶梯上进行,每次可以将一堆的若干式子移动到上一阶去,不可操作者输。 忽略所有的偶数阶梯,只留下奇数阶梯,转化为普通的NimNim游戏。大致的思路是这样的:首先终止状态一定是所有石子都在00号阶梯,即一个偶数阶梯。那么如果对方移动了一个偶数阶梯上的石子,那么你可以在移动结束的那个奇数阶梯,直接把等数量的石子继续向前移动,这样子可以保证偶数阶梯上的石子对于结果...
2019-09-10 20:06:00
129
转载 BZOJ 1299 [LLH邀请赛]巧克力棒
如果没有拿巧克力棒的操作的话 是一个裸的NIM游戏 现在加入了这个操作 改变了异或的值 那么我们只需要判断先手的人是否可以从集合中取出一个极大的异或值为0的子集即可 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #inclu...
2019-09-09 15:29:00
141
转载 BZOJ 2437 [Noi2011]兔兔与蛋蛋
暴力写法直接dfs #include<bits/stdc++.h> using namespace std; char ff[45][45]; int nn[45][45], n, m; int ok[1005]; int xx, yy, nowx, nowy; const int dir[4][2] = { 0, -1, -1, 0, 0, 1, 1, 0...
2019-09-09 14:56:00
130
转载 高维前缀和
复杂度 2^n*n #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=(1<<21); ll a[N]; int n; int main(){ scanf("%d",&n);int p=0; for(...
2019-08-31 22:06:00
142
转载 Vijos 1243 生产产品 单调队列DP
https://vijos.org/p/1243 转载于:https://www.cnblogs.com/Aragaki/p/11371174.html
2019-08-18 01:17:00
183
转载 牛客第十场 F.Popping Balloons
第一维直接遍历 第二维用线段树维护每个最左端可以得到的贡献 在线段树上每次删除一个点会影响到 X X-R X-2*R 3个值 最多操作1e5次 复杂度 6*n*logn(删了还要加回来 #include<bits/stdc++.h> using namespace std; const int MAXN = 300005; int num[MAXN...
2019-08-18 01:03:00
192
转载 HDU 5876 补图最短路
开两个集合,一个存储当前顶点可以到达的点,另一个存储当前顶点不能到达的点。如果可以到达,那肯定由该顶点到达是最短的,如果不能,那就留着下一次再判。 #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> pll; const in...
2019-08-06 19:22:00
121
转载 Gym - 102141D 通项公式 最短路
题目很长,但是意思就是给你n,A,B,C,D n表示有n个城市 A是飞机的重量 B是一个常数表示转机代价 C是单位燃油的价格 D是一个常数 假设一个点到另外一个点的距离为整数L 起飞前的油量为f 则在这途中每飞行一单位距离 就花费(f+A)/D的燃油 #include <bits/stdc++.h> typedef long long ll; typede...
2019-08-04 21:26:00
179
转载 __builtin_ _Find_first()
•int __builtin_ffs (unsigned int x) 返回x的最后一位1的是从后向前第几位,比如7368(1110011001000)返回4。 •int __builtin_clz (unsigned int x) 返回前导的0的个数。 •int __builtin_ctz (unsigned int x) 返回后面的0个个数,和__builtin_clz相对。 •in...
2019-08-02 22:38:00
126
转载 Hdu 6598 Harmonious Army 最小割
对于每一个u,v,a,b,c 建(S,u,a) (u,v,a+c-2*b) (v,T,c) (S,v,a) (v,u,a+c-2*b) (u,T,c) 最后答案为(2*sum(a+c)-最大流)/2 思路可以参考洛谷P1361 #include<bits/stdc++.h> using namespace std; typedef long long ll;...
2019-07-24 22:57:00
153
转载 P4151 最大XOR和路径 线性基
题解见:https://www.luogu.org/problemnew/solution/P4151 其实就是找出所有环 把环上所有边异或起来得到的值扔到线性基里面 然后随便走一条从1~n的链 最后求最大异或和即可 #include <iostream> #include <cstdio> #include <cstring> #in...
2019-07-22 23:28:00
131
转载 BZOJ 1093 强连通缩点+DAG拓扑DP
缩点后在一个DAG上求最长点权链 和方案数 注意转移条件和转移状态 if (nowmaxn[x] > nowmaxn[v]) { ans[v] = ans[x]; nowmaxn[v] = nowmaxn[x]; } else if (nowmaxn[x] ...
2019-07-16 16:00:00
171
转载 Gym - 101492I 区间限制费用流
https://cn.vjudge.net/problem/Gym-101492I 如果用单个点代表每个区间 利用拆点来限制区间的流量的话 点是 n^2/2+m个 边是2*n^2条 但是这样会T 解法1:单纯形 单纯形套板可以过 #include <bits/stdc++.h> #define N using namespace std; t...
2019-07-15 20:28:00
211
转载 SCU 4442 party 二分图最大点权独立集
每个青蛙喝黑茶或者红茶或者都可以喝 M个矛盾关系 有矛盾的不能喝同种茶 但你可以花费Wi使得这个青蛙消除所有矛盾 把矛盾当作边 青蛙当作点 如果这两个青蛙只喝不同的一种茶就不建边 题目中保证了不存在奇环 可以黑白染色成二分图 然后把两个茶都可以喝的青蛙拆点 u表示该青蛙喝黑茶 u+n表示喝红茶 同时建边(u,u+n) 有四种情况: 1.两个青蛙都可以喝两种茶 建边(u,v) ...
2019-07-10 21:01:00
132
转载 OpenJudge POJ C19C 贪心
https://cn.vjudge.net/contest/309482#problem/C #include<bits/stdc++.h> using namespace std; typedef long long ll; const int MAXN = 400005; int a[MAXN][2]; int ans; int main() { ...
2019-07-08 22:44:00
164
转载 Codeforces 1175F The Number of Subpermutations
做法①:RMQ(预处理NLOGN+后续跳跃蜜汁复杂度) 满足题意的区间的条件转换: 1.长度为R-L+1则最大值也为R-L+1 2.区间内的数不重复 当RMQ(L,R)!=R-L+1时 因为已经保证了 i~r[i] 之间的数不重复 则RMQ(L,R)必定大于当前的R-L+1 所以我们需要至少跳到 i+RMQ(L,R)-1 #include<bits/stdc...
2019-07-08 21:36:00
185
转载 HDU 4085 斯坦纳树+DP
https://cn.vjudge.net/problem/HDU-4085 给你n,m,k,分别表示有n个点,m条边,每条边有一个权值,表示修复这条边需要的代价 从前k个点中任取一个使其和后k个点中的某一个点,通过边连接,并且必须是一一对应,问最小的代价是多少。 先用斯坦纳树模板求出f[i][1<<k] 然后用dp[i]表示所有点为根的情况下连通状态为i的最小...
2019-06-07 23:32:00
192
转载 ZOJ 4097 Rescue the Princess 边双缩点+LCA
给你一个图和三个点U,V,W 问你是否存在从U到V和从U到W的两条边不相交路径 先边双缩点 再每个连通分量搞LCA 最后LCA判 #include<bits/stdc++.h> using namespace std; #define INF 0xfffffff #define maxn 200025 #define min(a,b) (a<b?a...
2019-04-15 19:31:00
98
转载 P2402 奶牛隐藏 二分+网络流
floyd搞出两点间最短距离 二分判答案 // luogu-judger-enable-o2 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int MAXN = 1050; const int MAXM = 50050; const ll INF = 1L...
2019-04-12 22:13:00
104
转载 P2172 [国家集训队]部落战争 二分图最小不相交路径覆盖
二分图最小不相交路径覆盖 #include<bits/stdc++.h> using namespace std; const int MAXN = 5550; const int MAXM = 1000005; const int INF = 1000000050; int Head[MAXN], cur[MAXN], lev[MAXN], to[MAX...
2019-04-12 11:18:00
144
转载 bzoj 3175 [Tjoi2013]攻击装置
先黑白染色 再二分图最大独立集 #include<bits/stdc++.h> using namespace std; const int MAXN = 40050; const int MAXM = 1000005; const int INF = 1000000050; int Head[MAXN], cur[MAXN], lev[MAXN], to...
2019-04-11 20:21:00
120
转载 P2050 [NOI2012]美食节
修车数据加强版 需要动态加边加点 #include<bits/stdc++.h> using namespace std; const int INF = 0x7f7f7f7f; const int MAXN = 100005, MAXM = 5000005; int Head[MAXN], cur[MAXN], lev[MAXN], to[MAXM <...
2019-04-10 21:05:00
153
转载 P2053 [SCOI2007]修车
左边n个点 代表顾客 右边n*m个点 每n个为一组 (i,j)表示第i个维修工第k个修理该顾客的车 #include<bits/stdc++.h> using namespace std; const int INF = 0x7f7f7f7f; const int MAXN = 1005, MAXM = 130000; int Head[MAXN], cur...
2019-04-09 20:58:00
162
转载 Hdu 4661 树上拓扑序计数
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int MAXN = 1000005; const int MAXM = 1000005; const int mod = 1e9 + 7; int to[MAXM << 1], nxt[MAX...
2019-04-09 19:23:00
410
转载 CF 976F 递增容量最大流
给你一个二分图 要求你求出对于k=[0~Mindegree] 每个点的度数至少为k所需要的最少边数 并输出方案 如果是单个询问的话 直接跑一个下界网络流即可 但是有多个询问 重建图强行跑不行 反过来考虑,变成至多能删除多少边则建边[s,i,degree[i]-Mindegree] [i,T,degree[i]-Mindegree] [u,v,1] 这样跑出来的流 二分图中没有流量的...
2019-04-08 19:33:00
319
转载 P2057 善意的投票 最小割理解
一个点要不属于S要不属于T,则我们把S当作同意睡觉的选项,T当作不同意睡觉的选项. 某人初始倾向于睡觉就建边(S,i,1) 否则建边(i,T,1) 那么割掉一条边的意义就是有一个冲突存在 再考虑每对关系,如果两个人最后分别属于S,T中不同的两个集合就会产生贡献,属于相同的集合则无贡献. 所以我们加边(i,j,1) (j,i,1) ...
2019-04-04 20:49:00
118
转载 P1361 小M的作物 最小割理解
如果没有组合效益的存在 我们直接每个点两部分的最大值即可 换成网络流模型来看 即把S点看作是A田 把T点看作是B田 每种作物看作一个点 分别连边(S,i,A[i]) (i,T,B[i]) 最后图中所有边权和减去最大流即为答案.这个很好理解,因为最小割=最大流,一种作物只能选择A,B里的一个 所以对于每个点必要删去一条边,删去的边相当于我们不要的选项 剩下的和S,T相连的边相当于我...
2019-04-03 14:36:00
158
转载 P1231 教辅的组成 拆点限流
如果只有两个物品的话 是一个裸的二分图匹配问题 现在变成了三个物品之间的匹配 则只要在中间加一层节点表示书 再把这层的每个点拆成两个点中间连一条边限制流量 使其只能用一次 #include<iostream> #include<cstdio> #include<cstdlib> #include<cmath> #in...
2019-04-03 13:09:00
87
转载 CF981F 二分+Hall定理
对于一个二分的答案 假设存在一个点集使得不满足Hall定理 题中给定的信息说明 左边每个点对应的右边点是一个区间 如果当前点集对应的右边区间是若干个不相交的区间组成的话说明我们还可以找到一个更小的点集使得其也不满足Hall定理 假设我们当前找到了一个极小的不满足Hall定理的点集 其对应的右边区间如上所证一定是一段连续的区间 如果这个极小的点集不是一段连续的区间的话 我们可以加...
2019-04-02 21:49:00
138
转载 UVA 1482 SG打表
打出SG表来可以很容易的发现i为偶数时 SG[i]=i/2 i为奇数时 SG[i]=SG[i/2] #include<bits/stdc++.h> typedef long long ll; using namespace std; ll SG(ll x) { return x&1?SG(x/2):x/2; } int main() {...
2019-04-02 16:47:00
89
转载 51Nod 1831 PN表
打出PN表来 发现合数除16,34,289都是赢 质数除2,17都是输 #include<bits/stdc++.h> using namespace std; bool prime(int x) { for (int i = 2; i <= sqrt(x); i++) { if (x % i == 0) {...
2019-04-02 10:42:00
112
转载 51Nod 1714 1位数SG异或打表
SG[i]表示一个数二进制下有i个1的SG值 SG[0]=0 打表: #include<bits/stdc++.h> using namespace std; int sg[100]; int vis[30000000]; int maxnnow = 0, x; int main() { sg[0] = 0; for (...
2019-04-02 09:48:00
155
转载 51Nod 1534 棋盘阻挡博弈
很简单的可以知道 如果P在V的右上角 必输 如果P在V的左下角 必赢 接下里还剩下左上角和右下角两种情况 两种情况其实相同 P是挡不住V通过对角线方向向下/左的移动的 即两者不会相互影响 所以我们只要比较两者走到终点所需时间的长短即可 #include<bits/stdc++.h> using namespace std; int f[1005]; int...
2019-04-01 20:53:00
102
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅