有人恶意刷难度。。。就一个最大流模板。。。

但是题面吼啊2333

#include <iostream>
#include <cstdio>
#include <queue>
#include <cstring>
using namespace std;
int n,m;
const int N=505,S=0,T=504;
char s1[105][10],s2[105][10],ct1,ct2;
int cnt[5],lif1[105],lif2[105];
int h[N<<1],ecnt=1,head[N<<1];
struct Edge {
int nxt,to,val;
} e[500*500];
void add(int bg,int ed,int val) {
e[++ecnt].nxt=head[bg];
e[ecnt].to=ed;
e[ecnt].val=val;
head[bg]=ecnt;
}
void ins(int x,int y,int flow) {
add(x,y,flow);
add(y,x,0);
}
bool bfs() {
memset(h,-1,sizeof h);
queue<int>q;
q.push(S);
h[S]=0;
while(!q.empty()) {
int u=q.front();
q.pop();
for(int i=head[u]; i; i=e[i].nxt) {
int v=e[i].to;
if(h[v]==-1&&e[i].val) {
h[v]=h[u]+1;
q.push(v);
}
}
}
return h[T]!=-1;
}
int dfs(int x,int f) {
if(x==T)return f;
int used=0,tp;
for(int i=head[x]; i; i=e[i].nxt) {
int v=e[i].to;
if(h[v]-1==h[x]&&e[i].val) {
tp=dfs(v,min(e[i].val,f-used));
used+=tp;
e[i].val-=tp;
e[i^1].val+=tp;
if(used==f)return f;
}
}
if(used==0)h[x]=-1;
return used;
}
int maxflow;
void dinic() {
maxflow=0;
while(bfs()) {
maxflow+=dfs(0,0x3f3f3f3f);
}
}
int main() {
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%s",s1[i]),ct1+=s1[i][0]=='Y'?1:0;
for(int i=1;i<=n;i++)
scanf("%s",s2[i]),ct2+=s2[i][0]=='Y'?1:0;
for(int i=1;i<=n;i++)
scanf("%d",&lif1[i]),lif1[i]+=s1[i][0]=='J'?ct1:0;
for(int i=1;i<=n;i++)
scanf("%d",&lif2[i]),lif2[i]+=s2[i][0]=='J'?ct2:0;;
for(int i=1;i<=n;i++) {ins(S,i,lif1[i]);ins(i+n,T,lif2[i]);}
for(int i=1;i<=n;i++) {
for(int j=1;j<=n;j++) {
if(s1[i][0]=='J'&&(s2[j][0]=='W'||s2[j][0]=='H')) ins(i,j+n,1);
if(s1[i][0]=='E'&&(s2[j][0]=='J'||s2[j][0]=='Y')) ins(i,j+n,1);
if(s1[i][0]=='Y'&&(s2[j][0]=='H'||s2[j][0]=='J')) ins(i,j+n,1);
if(s1[i][0]=='H'&&(s2[j][0]=='W'||s2[j][0]=='E')) ins(i,j+n,1);
if(s1[i][0]=='W'&&(s2[j][0]=='Y'||s2[j][0]=='E')) ins(i,j+n,1);
}
}
dinic();
cout<<min(maxflow,m);
}

最新文章

  1. 常用的数据统计Sql 总结
  2. 统计图表类型选择应用总结&amp;表数据挖掘方法及应用
  3. 半透明状态栏(适用于搜索等)CSS样式
  4. set的应用
  5. rpm包安装时发现缺少其他依赖
  6. Hive静态分区表&amp;动态分区表
  7. Problem 1183 - 排列
  8. JVM中内存回收深入分析,各种垃圾收集器
  9. 2.2.2 胸腰差和胸臀差的应用_米人NOONE_新浪博客
  10. Python第一个基本教程6章 抽象的
  11. h5标签基础 meta标签
  12. M-自适应宽高样式
  13. React Native的WebStorm基本设置
  14. Docker最全教程——从理论到实战(四)
  15. 关于new你应当知道的一切
  16. Aho-Corasick算法实现(简单关键字过滤)
  17. div遮盖,弹出层
  18. 水题 O
  19. Deep Learning Terminologies
  20. CIKM 18 | 蚂蚁金服论文:基于异构图神经网络的恶意账户识别方法

热门文章

  1. [BZOJ1999] 树网的核 [数据加强版] (树的直径)
  2. 处理问题:windows server 2016由于没有远程桌面授权服务器可以提供许可证,远程会话被中断。请跟服务器管理员联系
  3. 判断n是否为质数
  4. Problem 5
  5. 原生js,时间日期简单应用。
  6. ajax提交数据遇到400异常,原因及解决方案
  7. CodeForcesGym 100676H Capital City
  8. WinSCP介绍、安装、使用
  9. add Admob with Cocos2d-x on iOS
  10. Spring Data MongoDB 五:进阶文档查询(分页、Morphia)(二)