[LUOGU]P3701 主席树(假的)
有人恶意刷难度。。。就一个最大流模板。。。
但是题面吼啊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);
}
[LUOGU]P3701 主席树(假的)的更多相关文章
- [Luogu] P3701 「伪模板」主席树
题目背景 byx和手气君都非常都非常喜欢种树.有一天,他们得到了两颗奇怪的树种,于是各自取了一颗回家种树,并约定几年后比一比谁种出来的树更加牛x. 题目描述 很快,这棵树就开花结果了.byx和手气君惊 ...
- Luogu Dynamic Ranking (带修改的主席树)
题目大意: 网址:https://www.luogu.org/problemnew/show/2617 给定一个序列a[1].a[2].....a[N],完成M个操作,操作有两种: [1]Q i j ...
- [Luogu 3701] 「伪模板」主席树
[Luogu 3701] 「伪模板」主席树 这是一道网络流,不是主席树,不是什么数据结构,而是网络流. 题目背景及描述都非常的暴力,以至于 Capella 在做此题的过程中不禁感到生命流逝. S 向 ...
- [luogu P4197] Peaks 解题报告(在线:kruskal重构树+主席树 离线:主席树+线段树合并)
题目链接: https://www.luogu.org/problemnew/show/P4197 题目: 在Bytemountains有N座山峰,每座山峰有他的高度$h_i$.有些山峰之间有双向道路 ...
- 【Luogu P3834】可持久化线段树(主席树)
Luogu P3834 可持久化数据结构就是支持在历史版本上进行查询和修改操作的数据结构. 主席树就是对线段树的改进,使之可持久化. 前置知识:动态开点线段树 我们利用权值(值域)线段树统计区间内的数 ...
- [Luogu P3899] [湖南集训]谈笑风生 (主席树)
题面 传送门:https://www.luogu.org/problemnew/show/P3899 Solution 你们搞的这道题啊,excited! 这题真的很有意思. 首先,我们可以先理解一下 ...
- Luogu P1552 [APIO2012]派遣 主席树
题目链接 Click Here 这个题好像大多数人用的都是左偏树啊?这里我来贡献一发主席树的解法. 把题目中的问题抽象出来,其实就是询问每一个点的子树中,工资前\(tot_i\)大的点,使它们的和满足 ...
- 主席树 || 可持久化线段树 || BZOJ 3653: 谈笑风生 || Luogu P3899 [湖南集训]谈笑风生
题面:P3899 [湖南集训]谈笑风生 题解: 我很喜欢这道题. 因为A是给定的,所以实质是求二元组的个数.我们以A(即给定的P)作为基点寻找答案,那么情况分两类.一种是B为A的父亲,另一种是A为B的 ...
- 主席树 || 可持久化线段树 || LCA || BZOJ 2588: Spoj 10628. Count on a tree || Luogu P2633 Count on a tree
题面: Count on a tree 题解: 主席树维护每个节点到根节点的权值出现次数,大体和主席树典型做法差不多,对于询问(X,Y),答案要计算ans(X)+ans(Y)-ans(LCA(X,Y) ...
随机推荐
- LAMP环境下,通过网页url获取gb2312编码中文命名的下载资源方法
最近有个功能, 要求获取中文命名的.zip压缩文件,我准备直接采用网页url填写压缩文件地址的方式获取下载资源, 但问题是 我们的linux系统和php编程环境都是采用的zh_GB2312编码, 而浏 ...
- 训练1-Y
对于给定的一个字符串,统计其中数字字符出现的次数. Input 输入数据有多行,第一行是一个整数n,表示测试实例的个数,后面跟着n行,每行包括一个由字母和数字组成的字符串 Output 对于每个测试实 ...
- phpunit使用
phpunit使用 标签(空格分隔): php 现在是凌晨 3 点.我们怎样才能知道自己的代码依然在工作呢? Web 应用程序是 24x7 不间断运行的,因此我的程序是否还在运行这个问题会在晚上一直困 ...
- 编译驱动模块所需的Makefile
目标定义:就是用来定义哪些内容作为模块编译,哪些内容要编译并链接进内核. obj-y += foo.o 表示要由foo.c或者foo.s文件编译得到foo.o并链接进内核: obj-m则表示该文件要作 ...
- Arduino基本函数介绍
转载自http://cnlearn.linksprite.com/?p=5248#.VwZrzvl95hE 数字 I/O (1)pinMode(pin, mode) 数字IO 口输入输出模式定义函数, ...
- Java关键字整理之一
变量.函数.类的前面都可能会用到关键字,最常见的 private.public.protected.default 这四个修饰符的访问权限如下表: -------------------------- ...
- sql不显示反复列
在报表里,基本上都能够把反复的资料不显示,在SQL里怎么才干做到例如以下情况呢? a 10 a 20 b 30 b 40 b 50 显示为: a 10 20 b 30 40 50 SQL 例如以下: ...
- MongoDB 2.6安装
Workaround to install as a service You can manually install 2.6.0 as a service on Windows from an Ad ...
- hdu2476String painter (区间DP)
Problem Description There are two strings A and B with equal length. Both strings are made up of low ...
- oracle故障处理之删除大表空间hang住
背景 数据库分区表数据越来越大,需要对过期话的数据进行迁移,以及大的分区表需要进行数据的清理和删除,达到释放磁盘空间的目的. 问题说明 环境:linux 6.X 数据库:oracle 11.2.0.4 ...