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

题意

有n个学生,m个社团,每个学生有一个\(p_i\)值,然后每个学生属于\(c_i\)社团,

有d天,每天首先随机去除一个人,然后再从每个社团挑选一个学生(假如社团没有学生就跳过这个社团),使得这些学生组成的集合的mex值最大,输入每天的mex值

题解

  • 假如这道题发现是二分图匹配就很好做
  • 左边用\(p_i\)建点,右边用\(c_i\)建点,\(p_i\)从小到达和源点连边,然后跑个二分图匹配or最大流,直到没有新的匹配,就在中间加边
  • 倒着处理,每次加边进去(技巧)

代码

#include<bits/stdc++.h>
#define MAXN 5005 using namespace std;
int n,m,i,j,link[MAXN],p[MAXN],c[MAXN],d,k[MAXN],vi[MAXN],ans[MAXN];
int del[MAXN];
vector<int>mp[MAXN];
int match(int u){
for(auto i:mp[u]){
if(!vi[i]){
vi[i]=1;
if(link[i]==-1||match(link[i])){
link[i]=u;
vi[i]=0;
return 1;
}
vi[i]=0;
}
}
return 0;
}
int main(){
cin>>n>>m;
memset(link,-1,sizeof(link));
for(i=1;i<=n;i++)cin>>p[i];
for(i=1;i<=n;i++)cin>>c[i];
cin>>d;
for(i=1;i<=d;i++){cin>>k[i];del[k[i]]=1;}
for(i=1;i<=n;i++)if(!del[i]){mp[p[i]].push_back(c[i]);}
j=0;
for(i=d;i>=1;i--){
int id=k[i];
for(;j<5000;j++){
//memset(vi,0,m*sizeof(int));
if(!match(j))break;
}
ans[i]=j;
mp[p[id]].push_back(c[id]);
}
for(i=1;i<=d;i++)cout<<ans[i]<<endl;
}

Codeforces Round #548 (Div. 2) E 二分图匹配(新坑) or 网络流 + 反向处理的更多相关文章

  1. Codeforces Round #532 (Div. 2) F 线性基(新坑) + 贪心 + 离线处理

    https://codeforces.com/contest/1100/problem/F 题意 一个有n个数组c[],q次询问,每次询问一个区间的子集最大异或和 题解 单问区间子集最大异或和,线性基 ...

  2. Codeforces Round 548 (Div. 2)

    layout: post title: Codeforces Round 548 (Div. 2) author: "luowentaoaa" catalog: true tags ...

  3. Codeforces Round #548 (Div. 2) F splay(新坑) + 思维

    https://codeforces.com/contest/1139/problem/F 题意 有m个人,n道菜,每道菜有\(p_i\),\(s_i\),\(b_i\),每个人有\(inc_j\), ...

  4. Codeforces Round #548 (Div. 2) C dp or 排列组合

    https://codeforces.com/contest/1139/problem/C 题意 一颗有n个点的树,需要挑选出k个点组成序列(可重复),按照序列的顺序遍历树,假如经过黑色的边,那么这个 ...

  5. Codeforces Round #383 (Div. 1) C(二分图)

    一道很巧妙的二分图的题目 简单分析性质可知,一个合法序列一定是由12,21这样的子串构成的,所以相邻的每隔2个两两配对 然后BF和GF互相配对,思考一下,如果存在奇环,那么必定有一个BG有两个GF,或 ...

  6. Codeforces Round #435 (Div. 2) B (二分图) C(构造)

    B. Mahmoud and Ehab and the bipartiteness time limit per test 2 seconds memory limit per test 256 me ...

  7. Codeforces Round #360 (Div. 1)A (二分图&dfs染色)

    题目链接:http://codeforces.com/problemset/problem/687/A 题意:给出一个n个点m条边的图,分别将每条边连接的两个点放到两个集合中,输出两个集合中的点,若不 ...

  8. C. Edgy Trees Codeforces Round #548 (Div. 2) 并查集求连通块

    C. Edgy Trees time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  9. Codeforces Round #548 (Div. 2) D 期望dp + 莫比乌斯反演

    https://codeforces.com/contest/1139/problem/D 题意 每次从1,m中选一个数加入队列,假如队列的gcd==1停止,问队列长度的期望 题解 概率正着推,期望反 ...

随机推荐

  1. js 监听手机端键盘弹出和收起事件

    //这里区分不同系统,可以参考之前的文档记录 https://www.cnblogs.com/wind-wang/p/10737110.html const ua = typeof window == ...

  2. chrome浏览器和其它浏览器对scrollTop、scrollLeft的获取方法

    chrome浏览器不能通过document.documentElement.scrollTop来获得距上滚动距离,得到的值始终为0:需要用document.body.scrollTop来获取.其它浏览 ...

  3. phxpaxos遇到反复拉取checkpoint但是反复失败的问题,给其它节点造成压力

    原因: 接收checkpoint时与接收普通message共用IOLoop中的队列,当遇到队列满或者超内存时,会造成checkpoint的包随机丢失的问题 解决办法: 遇到checkpoint时不丢弃 ...

  4. webpack 4.0配置

    webpack一般是本地安装,一般安装webpack webpack-cli,一般是开发依赖上线的时候不需要打包通常npm install webpack webpack-cli  -D安装 安装的时 ...

  5. 【JavaScript】EasyUIのForm的跨域提交问题解析

    昨日.プログラムを作るとき.一つの問題がありますが.皆に共有します. [問題] EasyUIのFormでURLを請求するとき.返却の値が取得できない. [ソース] var fnRegUser = fu ...

  6. QVariant类

    QVariant类: #include "widget.h" #include <QApplication> #include <QDebug> int m ...

  7. 【C++】undered_map的用法总结(1)

    1.介绍 unordered_map是一个关联容器,内部采用的是hash表结构,拥有快速检索的功能. 1.1 特性 关联性:通过key去检索value,而不是通过绝对地址(和顺序容器不同)无序性:使用 ...

  8. gridview 选中某行后 某行的按钮显示,无选中则隐藏

    如后面的加号,选中行时出现,未被选中的隐藏 解决: 在按钮中的visibility属性中绑定该item是否选中,再用转换器转换 <Button Name="btnA" Cli ...

  9. golang 安装tensorflow

    TF_TYPE="cpu" # Change to "gpu" for GPU support  //设置环境变量   TARGET_DIRECTORY='/u ...

  10. Java几种常用JSON库性能比较

    本篇通过JMH来测试一下Java中几种常见的JSON解析库的性能. 每次都在网上看到别人说什么某某库性能是如何如何的好,碾压其他的库.但是百闻不如一见,只有自己亲手测试过的才是最值得相信的. JSON ...