题目链接:

http://codeforces.com/contest/1139/problem/E

题意:

开始有$n$个同学和$m$,每个同学有一个天赋$p_{i}$和一个俱乐部$c_{i}$,然后在$d$天里,每天早上去除一名同学$k_{i}$,每天中午在每个俱乐部选一个人组成战队。战队的战斗力是最小的不存在的天赋,例如{1,2,3,0}战斗力是4,问每天战队的战斗力最大为多少。

数据范围:

$1 \leq m \leq n \leq 5000$

$0 \leq p_i < 5000$

$1 \leq c_i \leq m$

$1 \leq d \leq n$

$1 \leq k_i \leq n$

 

分析:

每次减边,然后对整体二分图匹配复杂度大概是$O\left ( n^{3} \right )$

于是想到逆序处理,从后往前处理,逆过程就是加边,由于加边后的ans肯定是递增的,所以复杂度降成$O\left ( n^{2} \right )$

如果用邻接矩阵复杂度是$O\left ( n^{3} \right )$用邻接表是$O\left (  n^{2} \right )$,因为对于二分图这道题的边数为$n$,属于稀疏图,所以用邻接表比较合适

ac代码:

 #include<bits/stdc++.h>
using namespace std;
const int maxn=5e3+;;
int match[maxn],vis[maxn],ans[maxn],p[maxn],c[maxn],k[maxn],d,n,m;
int ma[maxn][maxn],book[maxn],f[maxn],to[maxn],cnt,nex[maxn];
void add(int a,int b)
{
cnt++;
to[cnt]=b;
nex[cnt]=f[a];
f[a]=cnt;
}
bool dfs(int x)
{
if(vis[x])return false;
vis[x]=;
for(int i=f[x]; i; i=nex[i])
{
int v=to[i];
if(match[v]==-||dfs(match[v]))
{
match[v]=x;
return true;
}
}
return false;
}
int main()
{
scanf("%d %d",&n,&m);
for(int i=; i<maxn; i++)match[i]=-;
for(int i=; i<=n; i++)
scanf("%d",&p[i]);
for(int i=; i<=n; i++)
scanf("%d",&c[i]);
scanf("%d",&d);
for(int i=; i<=d; i++)
{
scanf("%d",&k[i]);
book[k[i]]=;
}
for(int i=; i<=n; i++)
if(book[i]==)add(p[i],c[i]); for(int i=d; i>=; i--)
{
ans[i]=ans[i+];
while()
{
memset(vis,,sizeof(vis));
if(dfs(ans[i]))ans[i]++;
else break;
}
int x=k[i];
add(p[x],c[x]);
}
for(int i=; i<=d; i++)
printf("%d\n",ans[i]);
return ;
}

codeforces#1139E. Maximize Mex(逆处理,二分匹配)的更多相关文章

  1. Codeforces 1139E Maximize Mex 二分图匹配

    Maximize Mex 离线之后把删数变成加数, 然后一边跑匈牙利一遍算答案. #include<bits/stdc++.h> #define LL long long #define ...

  2. [CF1139 E] Maximize Mex 解题报告 (二分图匹配)

    interlinkage: https://codeforces.com/contest/1139/problem/E description: 有$n$个学生,$m$个社团,每个学生有一个能力值,属 ...

  3. CodeForces 116B【二分匹配】

    思路: 暴力..我不会呀.. YY一个二分匹配嘛,然后数组开小了.GG for an hour. #include <bits/stdc++.h> using namespace std; ...

  4. HDU5093——Battle ships(最大二分匹配)(2014上海邀请赛重现)

    Battle ships Problem DescriptionDear contestant, now you are an excellent navy commander, who is res ...

  5. CF1139E Maximize Mex

    题目地址:CF1139E Maximize Mex 这其实是一个二分图匹配匈牙利算法的巧妙运用 考虑倒序回答 则由原来的删除改为添加 把 potential 值作为左部,则一共有编号为 \(0~m\) ...

  6. zoj 2362 Beloved Sons【二分匹配】

    题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2361 来源:http://acm.hust.edu.cn/vjudg ...

  7. POJ 1274 The Perfect Stall、HDU 2063 过山车(最大流做二分匹配)

    The Perfect Stall Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 24081   Accepted: 106 ...

  8. [kuangbin带你飞]专题十 匹配问题 二分匹配部分

    刚回到家 开了二分匹配专题 手握xyl模板 奋力写写写 终于写完了一群模板题 A hdu1045 对这个图进行 行列的重写 给每个位置赋予新的行列 使不能相互打到的位置 拥有不同的行与列 然后左行右列 ...

  9. BZOJ 1189 二分匹配 || 最大流

    1189: [HNOI2007]紧急疏散evacuate Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1155  Solved: 420[Submi ...

随机推荐

  1. Go语言strings包

    目录 strings包实现了用于操作字符的简单函数. func EqualFold 判断两个utf-8编码字符串(将unicode大写.小写.标题三种格式字符视为相同)是否相同. func Equal ...

  2. Tampermonkey还你一个干净整洁的上网体验

    作为一个前端开发,平时难免要经常浏览一些博客.技术网站,学习新的技术或者寻找解决方案,可能更多是ctrl+c和ctrl+v(^_^|||),但是目前很多网站的布局以及广告对于我们阅读文章造成了很多的障 ...

  3. What?VS2019创建新项目居然没有.NET Core3.0的模板?Bug?

    今天是个值得欢喜的日子,因为VS2019在今天正式发布了.作为微软粉,我已经用了一段时间的VS2019 RC版本了.但是,今天有很多小伙伴在我的<ASP.NET Core 3.0 上的gRPC服 ...

  4. okhttputils【 Android 一个改善的okHttp封装库】使用(一)

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 本文使用的OKHttp封装库是张鸿洋(鸿神)写的,因为在项目中一直使用这个库,所以对于一些常用的请求方式都验证过,所以特此整理下. ...

  5. 几个常用的vscode插件

    1.Vetur 可以对.vue文件格式做语法高亮,开发基于Vue项目的标配插件 2.Power Mode 在写代码时出现如烟花.粒子.火焰之类的效果,增加写代码的乐趣 3.Chinese (simpl ...

  6. 内核mailbox

    只罗列增加取走消息: static int add_to_rbuf(struct mbox_chan *chan, void *mssg) { int idx; unsigned long flags ...

  7. idea git提交时候提示 --author 'java_suisui' is not 'Name ' and matches no existing author

    今天使用idea修改git项目的作者信息,提交时遇到错误: 0 files committed, 1 file failed to commit: test --author 'java_suisui ...

  8. 2014年第五届蓝桥杯javaB组 试题 答案 解析

    1.武功秘籍 小明到X山洞探险,捡到一本有破损的武功秘籍(2000多页!当然是伪造的).他注意到:书的第10页和第11页在同一张纸上,但第11页和第12页不在同一张纸上. 小明只想练习该书的第81页到 ...

  9. Spring注入对象(3)

    2019-03-08/10:45:04 演示:对Product对象,注入一个Category对象 1.创建pojo类 Product类中有对Category对象的setter getter packa ...

  10. [总结]CSS/CSS3常用样式与web移动端资源

    CSS/CSS3常用样式与知识点 IE条件注释 条件注释简介 IE中的条件注释(Conditional comments)对IE的版本和IE非IE有优秀的区分能力,是WEB设计中常用的hack方法.条 ...