[loj2477]劈配
- 1 #include<bits/stdc++.h>
- 2 using namespace std;
- 3 #define N 205
- 4 struct ji{
- 5 int nex,to,len;
- 6 }edge[30*N],e[N][30*N];
- 7 vector<int>v[N][N];
- 8 int E,t,n,m,x,EE[N],head[N<<1],vis[N<<1],h[N][N<<1];
- 9 void add(int x,int y,int z){
- 10 edge[E].nex=head[x];
- 11 edge[E].to=y;
- 12 edge[E].len=z;
- 13 head[x]=E++;
- 14 }
- 15 bool dfs(int k){
- 16 if (k==n+m+1)return 1;
- 17 if (vis[k])return 0;
- 18 vis[k]=1;
- 19 for(int i=head[k];i!=-1;i=edge[i].nex)
- 20 if ((edge[i].len)&&(dfs(edge[i].to))){
- 21 edge[i].len--;
- 22 edge[i^1].len++;
- 23 return 1;
- 24 }
- 25 return 0;
- 26 }
- 27 int main(){
- 28 scanf("%d%*d",&t);
- 29 while (t--){
- 30 scanf("%d%d",&n,&m);
- 31 E=0;
- 32 memset(head,-1,sizeof(head));
- 33 for(int i=1;i<=n;i++)
- 34 for(int j=1;j<=m;j++)v[i][j].clear();
- 35 for(int i=1;i<=m;i++){
- 36 scanf("%d",&x);
- 37 add(i+n,n+m+1,x);
- 38 add(n+m+1,i+n,0);
- 39 }
- 40 for(int i=1;i<=n;i++)
- 41 for(int j=1;j<=m;j++){
- 42 scanf("%d",&x);
- 43 if (x)v[i][x].push_back(j);
- 44 }
- 45 EE[0]=E;
- 46 memcpy(h[0],head,sizeof(head));
- 47 memcpy(e[0],edge,sizeof(edge));
- 48 for(int i=1;i<=n;i++){
- 49 bool flag=0;
- 50 EE[i]=E;
- 51 memcpy(h[i],head,sizeof(head));
- 52 memcpy(e[i],edge,sizeof(edge));
- 53 for(int j=1;j<=m;j++){
- 54 E=EE[i];
- 55 memset(vis,0,sizeof(vis));
- 56 memcpy(head,h[i],sizeof(head));
- 57 memcpy(edge,e[i],sizeof(edge));
- 58 for(int k=0;k<v[i][j].size();k++){
- 59 add(i,v[i][j][k]+n,1);
- 60 add(v[i][j][k]+n,i,0);
- 61 }
- 62 if (dfs(i)){
- 63 flag=1;
- 64 printf("%d ",j);
- 65 break;
- 66 }
- 67 }
- 68 if (!flag)printf("%d ",m+1);
- 69 EE[i]=E;
- 70 memcpy(h[i],head,sizeof(head));
- 71 memcpy(e[i],edge,sizeof(edge));
- 72 }
- 73 printf("\n");
- 74 for(int i=1;i<=n;i++){
- 75 scanf("%d",&x);
- 76 bool flag=0;
- 77 for(int j=i;j;j--){
- 78 E=EE[j-1];
- 79 memset(vis,0,sizeof(vis));
- 80 memcpy(head,h[j-1],sizeof(head));
- 81 memcpy(edge,e[j-1],sizeof(edge));
- 82 for(int k=1;k<=x;k++)
- 83 for(int l=0;l<v[i][k].size();l++){
- 84 add(i,v[i][k][l]+n,1);
- 85 add(v[i][k][l]+n,i,0);
- 86 }
- 87 if (dfs(i)){
- 88 flag=1;
- 89 printf("%d ",i-j);
- 90 break;
- 91 }
- 92 }
- 93 if (!flag)printf("%d ",i);
- 94 }
- 95 printf("\n");
- 96 }
- 97 }
[loj2477]劈配的更多相关文章
- BZOJ5251 八省联考2018劈配(网络流)
劈配,匹配,网络流.那么考虑怎么跑网络流. 先看第一问.首先套路的建出超源超汇.不用想也知道导师向汇连容量为战队人数上限的边.特别地,给出局也建一个点,向汇连容量inf的边(似乎没有必要).对于一个新 ...
- 【BZOJ5251】【八省联考2018】劈配(网络流,二分答案)
[BZOJ5251][八省联考2018]劈配(网络流,二分答案) 题面 洛谷 BZOJ Description 一年一度的综艺节目<中国新代码>又开始了. Zayid从小就梦想成为一名程序 ...
- [BZOJ5251][九省联考2018]劈配(网络流)
5251: [2018多省省队联测]劈配 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 33 Solved: 22[Submit][Status][ ...
- [BZOJ5251][多省联测2018]劈配
bzoj luogu sol 从前往后依次加边,每次对一个人做完劈配后就把当前这个残余网络存下来.这样第二问就可以二分排在第几名然后check一下在对应排名的残余网络上还能不能再增广. 给网络流开结构 ...
- [八省联考2018] 劈配 mentor
Description 一年一度的综艺节目<中国新代码>又开始了.Zayid 从小就梦想成为一名程序员,他觉得这是一个展示自己的舞台,于是他毫不犹豫地报名了. Input 轻车熟路的Zay ...
- bzoj 5251: [2018多省省队联测]劈配
Description 一年一度的综艺节目<中国新代码>又开始了. Zayid从小就梦想成为一名程序员,他觉得这是一个展示自己的舞台,于是他毫不犹豫地报名了. 题目描述 轻车熟路的Zayi ...
- bzoj5251 [2018多省省队联测]劈配
直接网络流模拟即可AC. 可持久化+暴力=90分, 可持久化+二分=30分, 暴力加边+二分=100分. 我也很无奈啊. Ivan便涨红了脸,额上的青筋条条绽出,争辩道,“memcpy也是可持久化…… ...
- bzoj千题计划321:bzoj5251: [2018多省省队联测]劈配(网络流 + 二分)
https://www.lydsy.com/JudgeOnline/problem.php?id=5251 第一问: 左边一列点代表学生,右边一列点代表导师 导师向汇点连流量为 人数限制的 边 然后从 ...
- BZOJ.5251.[八省联考2018]劈配mentor(最大流)
BZOJ 洛谷 对于每个人,每次枚举一个志愿看是否能增广即可. 对于第二问,可以保留第一问中\(n\)次增广前后的\(n\)张图,二分,在对应图上看是否能增广即可. 貌似匈牙利的某种写法比网络流优多了 ...
随机推荐
- 题解 2020.10.24 考试 T2 选数
题目传送门 题目大意 见题面. 思路 本来以为zcx.pxj变强了,后来发现是SPJ出问题了...考试的时候感觉有点人均啊...结果自己还是只想出来一半. 我们假设 \(f(x)=(\lfloor\f ...
- ToString()字符串转换你用正确了吗?
前言 在开发中,ToString()这个方法太方便了,以致于误解大家转换时都是直接Object.ToString()直接转换, 其实不然, 一般都是转之前先判断是否为null后再进行转换,否则会直接报 ...
- Jmeter之BeanShell 断言
作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15436864.html 博客主页:https://www.cnblogs.com/testero ...
- Convolutional Neural Network-week2编程题1(Keras tutorial - 笑脸识别)
本次我们将: 学习到一个高级的神经网络的框架,能够运行在包括TensorFlow和CNTK的几个较低级别的框架之上的框架. 看看如何在几个小时内建立一个深入的学习算法. 为什么我们要使用Keras框架 ...
- ScatterLayout分散布局在kv中的引用
from kivy.uix.scatterlayout import ScatterLayout from kivy.app import App class ScatterLayoutWidget( ...
- python打印爱心
print('\n'.join([''.join([('AndyLove'[(x-y)%8]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3 ...
- MySQL:基础语法-4
MySQL:基础语法-4 记录一下 MySQL 基础的一些语法,便于查询,该部分内容主要是参考:bilibili 上 黑马程序员 的课程而做的笔记,由于时间有点久了,课程地址忘记了 上文MySQL:基 ...
- 看动画学算法之:队列queue
目录 简介 队列的实现 队列的数组实现 队列的动态数组实现 队列的链表实现 队列的时间复杂度 简介 队列Queue是一个非常常见的数据结构,所谓队列就是先进先出的序列结构. 想象一下我们日常的排队买票 ...
- 谈谈BEM规范(含代码)
css规范之BEM规范 前言 引用一句经典名言在编程的世界里其中一件最难的事情就是命名,不管是设计到编程语言还是标记语言都会有命名的需求.今天聊的就是关于css的命名规范的发展过程以及演变. 命名的发 ...
- 【二食堂】Beta - 事后分析
事后分析 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? Beta阶段我们首先要对文本标注方式进行优化,其次时添加好友系统,实现邀请好友共同标注的功能. ...