CF1139E Maximize Mex
题目地址:CF1139E Maximize Mex
这其实是一个二分图匹配匈牙利算法的巧妙运用
考虑倒序回答
则由原来的删除改为添加
把 potential 值作为左部,则一共有编号为 \(0~m\) 共 \(m+1\) 个左部点
把 club 作为右部点
对每一个当前存在的对应关系添加一条对应的无向边
每次回答相当于从小到大对每一个左部点进行匹配,直到无法匹配,此时无法匹配的即为当前答案
之后每添加一条边在上次匹配后的图上继续匹配即可
#include <bits/stdc++.h>
using namespace std;
const int N = 1e4 + 6;
int n, m, d, a[N], b[N], c[N], ans[N], v[N], w[N], f[N];
vector<int> e[N];
bool dfs(int x) {
for (unsigned int i = 0; i < e[x].size(); i++) {
int y = e[x][i];
if (v[y]) continue;
v[y] = 1;
if (!~f[y] || dfs(f[y])) {
f[y] = x;
return 1;
}
}
return 0;
}
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
for (int i = 1; i <= n; i++) scanf("%d", &b[i]);
cin >> d;
for (int i = 1; i <= d; i++) scanf("%d", &c[i]);
for (int i = 1; i <= d; i++) w[c[i]] = 1;
for (int i = 1; i <= n; i++)
if (!w[i]) {
if (a[i] > m) continue;
e[a[i]].push_back(b[i] + m);
e[b[i]+m].push_back(a[i]);
}
memset(f, -1, sizeof(f));
for (int i = d; i; i--) {
for (int j = ans[i+1]; j <= m; j++) {
memset(v, 0, sizeof(v));
if (!dfs(j)) {
ans[i] = j;
break;
}
}
if (a[c[i]] > m) continue;
e[a[c[i]]].push_back(b[c[i]] + m);
e[b[c[i]]+m].push_back(a[c[i]]);
}
for (int i = 1; i <= d; i++) printf("%d\n", ans[i]);
return 0;
}
CF1139E Maximize Mex的更多相关文章
- CF1139E Maximize Mex(二分图匹配,匈牙利算法)
好题.不过之前做过的[SCOI2010]连续攻击游戏跟这题一个套路,我怎么没想到…… 题目链接:CF原网 洛谷 题目大意:在一个学校有 $n$ 个学生和 $m$ 个社团,每个学生有一个非负整数能力值 ...
- CF1139E Maximize Mex 题解【二分图】
我发现我有道叫[SCOI2010]连续攻击游戏的题白写了.. Description There are \(n\) students and \(m\) clubs in a college. Th ...
- Codeforces 1139E Maximize Mex 二分图匹配
Maximize Mex 离线之后把删数变成加数, 然后一边跑匈牙利一遍算答案. #include<bits/stdc++.h> #define LL long long #define ...
- [CF1139 E] Maximize Mex 解题报告 (二分图匹配)
interlinkage: https://codeforces.com/contest/1139/problem/E description: 有$n$个学生,$m$个社团,每个学生有一个能力值,属 ...
- codeforces1139E Maximize Mex 二分图匹配
题目传送门 题意:给出n个人,m个社团,每个人都有一个标号,一个能力值,并且属于一个社团,第i天的凌晨,第$k_i$个人会离开.每天每个社团最多派一个人出来参加活动.派出的人的能力值集合为S,求每天$ ...
- codeforces#1139E. Maximize Mex(逆处理,二分匹配)
题目链接: http://codeforces.com/contest/1139/problem/E 题意: 开始有$n$个同学和$m$,每个同学有一个天赋$p_{i}$和一个俱乐部$c_{i}$,然 ...
- CodeForces Round #548 Div2
http://codeforces.com/contest/1139 A. Even Substrings You are given a string s=s1s2…sns=s1s2…sn of l ...
- Codeforces Round #548
没打,简单补档 C.Edgy Trees 容斥,把黑边断掉数联通块,每个联通块贡献$siz^k$ #include<cstdio> #include<cstring> #inc ...
- Codeforces Round #381 (Div. 2)C. Alyona and mex(思维)
C. Alyona and mex Problem Description: Alyona's mother wants to present an array of n non-negative i ...
随机推荐
- 程序员如何开始做一个自己的 Side Project?
此系列文章我们开始聊一些软件开发人员如何开始动手写一些自己项目(Side Project)的思路与方法,以及过程中可能需要准备的知识,并分享一些相关的资源给大家. 1. 什么是 Side Projec ...
- 小小知识点(四)——MATLAB如何画等高线图和线性规划约束方程
MATLAB程序: figure contourf(x,y,data) % 画等高线 hold on plot(x,y(x)) %画线性规划约束方程1 hold on plot(y,x(y)) %画线 ...
- WPF中利用控件的DataContext属性为多个TextBox绑定数据
工作上需要从给定的接口获取数据,然后显示在界面的编辑框中,以往肯定会一个一个的去赋值,但这样太麻烦而且效率很低,不利于维护,于是想到了数据绑定这一方法,数据绑定主要利用INotifyPropertyC ...
- simple高度自定义的jqPaginator 项目中做分页的应用技巧
最近做后台管理系统,分页用到的不少,项目中其实已经有分页功能的组件但是不够高度自定义,于是就找到了 jqPaginator 高度自定义的Html结构 初始化引用如下: $("#paginat ...
- angular4 数据绑定
HTML属性绑定 1.基本Html属性绑定 <td [attr.colspan]="tableColspan">something</td> 2.css类绑 ...
- Tensorflow--矩阵切片与连接
博客转载自:https://blog.csdn.net/davincil/article/details/77893185 函数原型:slice(input_, begin, size, name=N ...
- P2837 晚餐队列安排
此题可能用动规不太好做,主要是状态转移方程很难想个人认为,思维发散的大佬们忽视. 我看了这位大佬的dp题解后才想到了方程,在此受我一膜%%% 嗯,说下思路: 先用a[i]数组存一下输入的编号: 然后用 ...
- 【XSY3154】入门多项式 高斯消元
题目大意 给你一个 \(n\times n\)的矩阵 \(A\),求次数最小且最高次项为 \(1\) 的多项式 \(F(x)\),满足 \(F(A)=0\). 所有操作都对 \(p\) 取模. \(n ...
- nuxt.js实战之引入jquery
head: { title: 'nuxt', meta: [ { charset: 'utf-8' }, { name: 'viewport', content: 'width=device-widt ...
- 忘掉Ghost!利用Win10自带功能,玩转系统备份&恢复 -- 关于系统恢复的深度思考
上一篇文章讲了,系统可以正常启动,如何从D盘恢复系统到C盘的情况. 如果系统不能启动,要怎么去恢复系统,恢复后会是什么结果? 先说明系统结构: 系统版本:Windows 10 (1709) 硬盘1(5 ...