自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(416)
  • 收藏
  • 关注

原创 HDU-4185 Oil Skimming

首先一个2*1的矩形可以覆盖两点,这两点一定相邻如果要把这个矩阵染成黑白两色,可以把相邻两点染成不同颜色,像是国际象棋棋盘那样可以发现,一个矩形一定覆盖一个黑色和一个白色,可以看作是相邻两点之间的边这样就转化成了二分图最大匹配问题,黑色点和白色点为二分图的两部分,相邻点之间建边,求最大匹配我用了HK算法求最大匹配,匈牙利算法估计会超时#include<iostream&...

2018-10-20 16:12:49 163

原创 HDU-2389 Rain on your Parade

二分图匹配问题,因为数据量比较大,匈牙利算法会超时改用HK算法,是匈牙利算法的优化,实现要麻烦一些,时间复杂度O(sqrt(V)*E)#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include...

2018-10-20 15:14:45 103

原创 HDU-2819 Swap

先按套路,把矩阵按行和列缩点,格子为1的就在所在行列加边然后二分图求最大匹配,如果是n,代表可行,小于n就输出-1然后根据匈牙利算法之后所得的linker,输出操作步骤遍历linker,如果linker[i]!=i,说明需要交换i与linker[i],如果i代表列就是列交换,否则就是行交换交换后linker[linker[i]]=linker[i],linker[i]=linker...

2018-10-20 13:55:36 210

原创 HDU-1281 棋盘游戏

把每行看作一点,每列看作一点,可以放置的格子就是边,连接其所在行和列两点那么用二分图最大匹配很容易就求出来,最多可以放置多少车然后对于每个给出的格子,在求一次没有这个格子的最大匹配,如果小于原来的匹配,说明这是重要的格子#include<iostream>#include<cstdio>#include<cstring>#include&lt...

2018-10-20 13:16:05 211

原创 HDU-1083 Courses

简单的二分图匹配#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<queue>using namespace std;typedef long long ll;cons...

2018-10-20 12:18:33 138

原创 HDU-2444 The Accomodation of Students

先看图是否是二分图,用染色来判断即可,两种颜色,相邻的点染不同的颜色,没有冲突即可dfs染色分完之后,再用匈牙利算法求最大匹配#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<...

2018-10-20 11:56:25 154

原创 HDU-1045 Fire Net

可以直接dfs暴搜,也可以转化为二分图匹配问题每一行连续的片段可以缩为一个点,列上连续的片段也是,因为连续的片段最多放一个点就分为行片段,列片段两部分,他们的交点就是边,求最大匹配就是最多可以放的点dfs暴搜代码:#include<iostream>#include<cstdio>#include<cstring>#include<...

2018-10-20 11:11:29 141

原创 CodeForces-815B Karen and Test

找规律,我把每个数对于最后结果的贡献值打表出来,发现和组合数有关然后后面就瞎搞了一下,对应规律#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<queue>using ...

2018-10-19 22:04:58 133

原创 CodeForces-815A Karen and Game

算是贪心,如果m大优先按排操作,n大优先按列操作#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<queue>using namespace std;typedef lo...

2018-10-19 22:02:25 223

原创 HDU-3081 Marriage Match II

挺有意思的一题,关键点在于要先假设可以有K轮匹配,再用最大流跑看是否可行我看的题解:https://blog.csdn.net/u013480600/article/details/38961991#include<iostream>#include<cstdio>#include<cstring>#include<algorithm&gt...

2018-10-19 12:29:47 89

原创 HDU-3605 Escape

看起来是个简单的匹配问题,但是点的数量很多,可以达到100000多个如果直接用最大流跑,肯定是超时的题目中的m最大为10,就决定了人的种类数最大为1024那么可以按照人的种类缩点,把个数加到边的容量里,这样最多就是1000多个点然后每个种类再和m个星球建边,以及源点汇点的建边,用ISAP跑一遍即可#include<iostream>#include<cst...

2018-10-19 11:02:22 112

原创 HDU-3338 Kakuro Extension

像是一个数独问题,在n*m的矩阵里,有黑格子和白格子如果黑格子右边为白格子,则会有一个数字sumr,代表右边连续白格子中的数的和如果黑格子下边为白格子,则会有一个数字sumd,代表下边连续白格子中的数的和给出黑格子和sumr,sumd,白格子,要求在白格子中添数,满足上边的要求首先要发现一个规律,所有竖着的数字sumd的和等于所有横着的数字sumr的和而一个白格子始终会对应着两...

2018-10-18 22:26:36 203

原创 HDU-2732 Leapin' Lizards

拆点+建图+源点汇点,再用最大流ISAP跑一边就可以建图还是麻烦一些,然后输出要注意一下格式,因为这个WA两次#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<cctype&g...

2018-10-18 20:26:20 140

原创 UVA-10480 Sabotage

简单的求最小割,用ISAP算法求难点在于怎么输出需要割的边可以在ISAP算法跑完后,在残余网络中从起点dfs访问,只走有剩余流量的边那么如果边的两点有一点可以访问到,且另一点访问不到,那么这条就是需要割的边#include<iostream>#include<cstdio>#include<cstring>#include<algo...

2018-10-18 19:18:55 185

原创 HDU-4289 Control

给出起点和终点,求最小割,也就是起点到终点的最大流把每个城市拆成入点和出点,中间连边,边权为花费其他边就连入时就接入点,连出时接出点,边权为INF题目说可以在任意城市设立岗哨,也包括起点s和终点t所以新的起点为s的入点,终点为d的出点,用ISAP走一遍就行了#include<iostream>#include<cstdio>#include<...

2018-10-18 14:45:44 132

原创 HDU-4292 Food

这道题和之前那题思路一样:POJ-3281 Dining写了ISAP+bfs+栈优化练练手#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<map>using name...

2018-10-18 13:58:40 156

原创 HDU-4280 Island Transport

最大流的板子题,但是数据量比较大,所以用ISAP算法+bfs初始化+栈优化#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;typedef long long l...

2018-10-18 13:19:45 131

原创 POJ-1459 Power Network

题目说,在电网,有发电站,用电点,以及转接站,有电线连接这些站简化之后,发电站有最大输出p,用电点有最大消耗c,转接站没有输出也没有消耗,电线有最大流量l问电网最大消耗电力是多少,那就是网络流问题了建立源点连向发电站,边容量为p,用电点连向汇点,边权为c,有电线就加边,边权为l然后从源点到汇点跑一边最大流ISAP就可以了处理输入稍微麻烦一些#include<iost...

2018-10-18 11:25:27 96

原创 POJ-2516 Minimum Cost

一开始想拆点,用n*k个点和m*k个点匹配,求最小花费然后就是5000个点的最小费用最大流算法,妥妥的超时了看了别人写的,可以把每种商品分开单独计算,每次就n+m个点的图,算k次加起来写的时候有个地方没注意,直接break,导致输入偏差了,WA了好多次#include<iostream>#include<cstdio>#include<cstri...

2018-10-18 10:17:25 96

原创 POJ-2195 Going Home

将题目转化为最小费用最大流问题在每个人和房子之间建边,容量为1,cost为两点之间的曼哈顿距离然后源点连向人,容量1,cost=0,房子连向汇点,容量1,cost=0从源点到汇点跑一遍算法就得到答案#include<iostream>#include<cstdio>#include<cstring>#include<algorith...

2018-10-17 20:06:47 97

原创 POJ-1087 A Plug for UNIX

简单的网络流问题,就是建图麻烦一些#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<map>using namespace std;typedef long long l...

2018-10-17 18:53:41 103

原创 POJ-3281 Dining

像是二分图匹配问题,但不同的是每只牛有两种需求,必须同时满足有个巧妙的方法,用网络流来完成,就是将图分为三层,食物,牛,饮料然后一个源点连向食物,边权1,饮料连向汇点,边权1牛就分为两个点,入点和出点,入点到出点连边,边权为1然后牛需要的食物向牛的入点连边,牛的出点向牛需要的饮料连边用ISAP算法跑一遍源点到汇点的最大流就可以了#include<iostream&g...

2018-10-17 17:15:44 114

原创 POJ-3436 ACM Computer Factory

网络流+拆点+源点汇点首先题意比较难理解,大意是有p种部件和n个机器,每个机器有产量和输入输出规格p=3的情况下,一个机器按照这种形式描述:100  0 1 2  1 1 1意思为机器产量为100,输入电脑要求为:没有部件1,有部件2,部件3可有可无输出部件1,2,3都有的电脑一开始是没有任何部件的电脑,通过这些机器,要让所有部件都有的电脑产量最大然后输出产量,机器之间的流...

2018-10-17 14:38:31 293

原创 HDU-3966 Aragorn's Story

树链剖分+树状数组 模板题#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;typedef long long ll;const int N=50000+10;...

2018-10-16 20:37:31 129

原创 POJ-2449 Remmarguts' Date

A*第K短路算法模板题#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<queue>using namespace std;typedef long long ll;c...

2018-10-16 17:15:50 251

原创 UVA-10325 The Lottery

简单的容斥原理要注意int会溢出#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;typedef long long ll;const int N=20;...

2018-10-16 16:07:43 212

原创 SPOJ-MSKYCODE Sky Code

容斥原理+dfs剪枝题目要求gcd为1的四个数的组合个数,我们可以先求gcd不为1的四个数组合个数四个数只要都有共同的一个质因数,gcd就不为1可以求出所有质因数,然后枚举质因数的乘积,求可以被乘积整除的数有多少个求出组合数,再用容斥原理去重因为质因数可能很多,所以在dfs里加一些剪枝#include<iostream>#include<cstdio&...

2018-10-16 14:53:54 225

原创 LightOJ-1408 Batting Practice

期望推公式注意当p为0或1时要特判#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;typedef long long ll;double eps=1e-6...

2018-10-15 19:56:20 207

原创 LightOJ-1395 A Dangerous Maze (II)

期望dp#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;typedef long long ll;const int N=100+10;double d[N...

2018-10-11 21:44:45 183

原创 LightOJ-1364 Expected Cards

期望dp+记忆化搜索#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;typedef long long ll;int C,D,H,S;double dp[1...

2018-10-10 22:26:32 231

原创 HDU-5929 Basic Data Structure

经过推敲可以发现,这种运算的最后结果,只和末尾1的个数有关(还和1前面的一两个数字有关,要看情况判断)所以想办法记录两端最后一个0的位置就好因为两边都可以进行push,pop操作,所以开一个400000的数组,从中间开始操作那么记录0的位置,push,pop,query都是O(1)的操作对于反转就直接换一边操作即可,也是O(1)总时间复杂度O(n)我这里用了线段树,时间...

2018-10-04 10:54:28 128

原创 HDU-5925 Coconuts

如果两个坏椰子在八个方向上相邻,就算做相邻,把多个坏椰子相邻的分为一块把每块坏椰子单独抠出来,放到小图里(200*200),然后看有多少好椰子被坏椰子包围要注意边界的处理,如果小图在某个边界上,这个边界就视为坏椰子把被坏椰子包围的sum算出来,剩下的就是n*m-sum-坏椰子个数#include <iostream>#include <cstdio>#...

2018-10-04 10:46:43 190

原创 HDU-5927 Auxiliary Set

先预处理出每个节点的父节点,子节点个数,深度当一个不重要节点有两个或以上子节点,并且有两个或以上子树里有重要点,那么它也会变为重要点对于每次询问先把不重要点按深度排序,然后按顺序看其是否满足以上条件需要加一个数组保存节点有多少子树有重要点#include <iostream>#include <cstdio>#include <cstring&g...

2018-10-04 10:37:48 125

原创 HDU-5980 Find Small A

水题#include<iostream>using namespace std;typedef long long ll;ll a;int main(){ int n; cin>>n; int ans=0; while(n--) { cin>>a; while(a) ...

2018-10-02 18:18:11 92

原创 HDU-5978 To begin or not to begin

找规律,k为奇数输出0,k为偶数输出1#include <iostream>using namespace std;int main () { int k; while (cin >> k) { if (k&1) cout << 0 << "\n"; else cout <&lt..

2018-10-02 18:16:58 171

原创 HDU-5979 Convex

计算三角形面积加起来#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;typedef long long ll;int main(){ int n;...

2018-10-02 18:14:59 148

原创 HDU-5976 Detachment

贪心+逆元#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;typedef long long ll;const int N=100000+10;const ...

2018-10-02 18:13:16 143

原创 HDU-5974 A Simple Math Problem

我这个代码枚举了a的因子,每个样例时间复杂度O(sqrt(a))还有可以找到等式gcd(x,y)==gcd(a,b),然后推公式求解,每个样例时间复杂度O(1)#include <iostream>#include <cstdio>#include <cmath>using namespace std;int gcd(int a, int b)...

2018-10-02 18:07:50 139

原创 HDU-5971 Wrestling Match

只要所有人都和其他人有关系或者确定了好坏,并且没有冲突就是YES否则NO先看所有人是否都出现过建图用dfs搜索判断是否有冲突#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using nam...

2018-10-02 18:02:19 208

原创 CodeForces-812C Sagheer and Nubian Market

二分k值+排序#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;typedef long long ll;const int N=1e5+10;int a[N...

2018-10-02 17:58:36 174

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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