正题

评测记录:https://www.luogu.org/recordnew/lists?uid=52918&pid=P3701


题目大意

给出若干个人的克制关系

给出两边每个人的种类和血量。当两个人pkpkpk后,双方各−1hp-1hp−1hp,同一边的YYYYYYYYY可以给每个同一方的J+1hpJ\ +1hpJ +1hp,血量为0时就不能pkpkpk了,两个人之间不能重复pkpkpk。每次选两个人出来比赛,比赛mmm轮,求第一方最多能赢多少次。


解题思路

因为pk多次我们考虑网络流。
每次pk作为一个流量。
然后一个人能pk x(算上YYY给J的+1hp)次的话就用原点连这个点一条x的边。另一个边的就连汇点,然后可以击败就连一条1的边。
如样例

3 3
J W YYY
J HK E
2 2 2
2 2 2

图的情况


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 2100
using namespace std;
struct line{int to,next,w;
}a[N*10];
struct player{char id[5];
}p[N],p2[N];
int n,m,x,y,d[N],tot=2,state[N],hp;
int head,tail,ls[N],s,e,ans,w,YYY1,YYY2;
void addl(int x,int y,int w)//建边
{a[tot].to=y;a[tot].next=ls[x];a[tot].w=w;ls[x]=tot++;a[tot].to=x;a[tot].next=ls[y];a[tot].w=0;ls[y]=tot++;
}
bool bfs()
{head=0;tail=1;memset(d,-1,sizeof(d));d[s]=0;state[1]=s;do{head++;int x=state[head];for (int q=ls[x];q;q=a[q].next){int y=a[q].to;if (a[q].w>0 && d[y]==-1){d[y]=d[x]+1;state[++tail]=y;if (y==e) return true;}}}while (head<tail);return false;
}
int dinic(int x,int flow)
{int rest=0,k;if (x==e) return flow;for (int q=ls[x];q;q=a[q].next){int y=a[q].to;if (a[q].w>0 && d[y]==d[x]+1){rest+=(k=dinic(y,min(a[q].w,flow-rest)));a[q].w-=k;a[q^1].w+=k;}}if (!rest) d[x]=0;return rest;
}
int main()
{scanf("%d%d",&n,&m);e=n*2+2;s=n*2+1;for(int i=1;i<=n;i++) {scanf("%s",p[i].id);if(p[i].id[0]=='Y') YYY1++;}for(int i=1;i<=n;i++){scanf("%s",p2[i].id);if(p2[i].id[0]=='Y') YYY2++;}//以上为读入和记录YYY的个数for(int i=1;i<=n;i++){scanf("%d",&hp);if(p[i].id[0]=='J') addl(s,i,hp+YYY1);else addl(s,i,hp);}for(int i=1;i<=n;i++){scanf("%d",&hp);if(p2[i].id[0]=='J') addl(i+n,e,hp+YYY2);else addl(i+n,e,hp);}//以上为输入hp和主席特盘for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){char s1=p[i].id[0],s2=p2[j].id[0];if(s1=='E'&&(s2=='J'||s2=='Y')) addl(i,j+n,1);if(s1=='Y'&&(s2=='J'||s2=='H')) addl(i,j+n,1);if(s1=='H'&&(s2=='E'||s2=='W')) addl(i,j+n,1);if(s1=='W'&&(s2=='Y'||s2=='E')) addl(i,j+n,1);if(s1=='J'&&(s2=='H'||s2=='W')) addl(i,j+n,1);}}//击败连边while (bfs())ans+=dinic(s,1e9);if(ans>m) printf("%d",m);//对于m的特判else printf("%d",ans);
}

P3701 -「伪模板」主席树【网络流,最大流】相关推荐

  1. P3701 「伪模板」主席树-(网络流最大流)

    题目链接:点击进入 思路 对于每个byx的人,从源点向人连边,容量为此人的寿命. 对于每个诗乃酱的人,从人向汇点连边,容量为此人的寿命. 注:对于主席,他的寿命要多加上sum,sum为本方膜法师的人数 ...

  2. 【洛谷P3701】 「伪模板」主席树【网络流】

    题目大意: 题目链接:https://www.luogu.org/problemnew/show/P3701 byx和手气君都非常都非常喜欢种树.有一天,他们得到了两颗奇怪的树种,于是各自取了一颗回家 ...

  3. 如何告别「伪勤奋」?高冷冷

    转载:如何告别「伪勤奋」?高冷冷_许可 我来教你如何做到真正的勤奋吧,学会这4点,告别伪勤奋. 你有很多目标,有关于上进的决心和焦虑,也或多或少做了一些努力.每天把自己搞得很累,回头却发现自己什么都没 ...

  4. 企业增长过程中的「伪命题」

    本文已获得伟大航路战略咨询(ID:wdhlzx)官方授权发表 引言 如今的品牌升级更多的案例是,更新logo,提炼个新的广告语,重新定个位,增加产品或优化产品,再拍些新的广告片,做个"全域传 ...

  5. 微信内测新版本,「漂流瓶」这次真的要去流浪了

    近日,微信又悄悄地放出内测的 7.0.4 新版本,距离上次更新已经快两个月了.老规矩,想提前体验新版本新功能的读者,在后台回复「微信新版」四个字,随即获取内测资格. 长话短说,来看下这次微信又给大家带 ...

  6. 模板使用自定义类型_「Shopify模板」Shopify模板编辑Shopify模板代码更改教程

    Shopify模版是决定在线商店外观的模板.不同模版的样式和布局有所不同,可为客户提供不同的体验.例如,如果您销售的是水疗产品,那么您可能希望您的在线商店给人一种放松和奢华的感觉.或者,如果您销售的是 ...

  7. vscode如何找letax模板_一直努力却找不到变美思路?韩国新一代「整容模板」,教你如何提高美商、科学变美!...

    不知道大家有没有关注最近热议的"新一代韩国整容模板"?韩国作为整容大国,基本上每隔一段时间都会有审美喜好的改变.这次,几位被奉为"新一代整容模板"的小仙女,分别 ...

  8. vc++64位系统下long的长度为4个字节_Java与系统硬件的亲密接触「伪共享」

    作者:码洞来源:https://zhuanlan.zhihu.com/p/32764602 在解释[伪共享]这个概念之前,我们先来运行一段代码,小编的电脑上有4个core. 这个程序的逻辑是4个线程共 ...

  9. 「PPT模板」 商务UI风格

    比较刻板的商务风格已经不受我们喜欢了 但又是使用率较高的场合 模库网 MCOOL 带来的PPT模板 虽然也是商务风格 但元素的运用借鉴了设计大师们的 UI界面设计 所以看上去比较不会沉闷 而且还更贴近 ...

最新文章

  1. 深度学习——什么是张量(tensor)?
  2. Oracle并购Innobase公司是好意还是背后一刀
  3. 整理sqlserver 级联更新和删除 c#调用存储过程返回值
  4. 语音识别(3)---语音识别技术原理
  5. 仿腾讯图文轮播.html
  6. js值发送给php,将JSON数据从Javascript发送到PHP?
  7. C# 实现打开和关闭可执行文件
  8. smobiler php对比,Smobiler的开发讲解
  9. PS学习总结一:入门版必备的基础功能
  10. win10系统进不了服务器失败,快速解决Win10安装失败重启进不了系统的方法
  11. 万恶的prototype
  12. python用语句输入一个3*3的二维矩阵、并将之输出_从键盘输入一个3行4列的矩阵,将其转置后,变成4行3列的矩阵输出。这个c语言的代码咋写...
  13. Python根据地名获取经纬度
  14. 主板前置音频线接法几例(转)
  15. APP定制开发,移动市场重要的生存利器
  16. c语言复合赋值表达式题目,C语言中复合赋值运算,表达式等知识.doc
  17. 函数的极值与最大值最小值
  18. onenote uwp版安装失败解决方法 错误代码0x80073cfd
  19. SQLServer截取字符串常用函数
  20. 电磁波谱和光纤通信使用频段

热门文章

  1. wordpress home.php,WordPress主题通过function.php来加载js和css文件
  2. php复制整个文件夹,PHP实现递归复制整个文件夹的类实例
  3. C++ 学习之旅(6)——循环loop
  4. [PAT乙级]1042 字符统计
  5. 有序序列中的i个最大数(算法导论思考题9-1)
  6. 2021年度训练联盟热身训练赛第一场 H题On Average They‘re Purple(BFS)
  7. mysql技术分享-- 视图是什么
  8. 数据结构与算法--最小的k个数
  9. [51 nod 1238] 最小公倍数之和 V3(杜教筛)
  10. #530. 「LibreOJ β Round #5」最小倍数 二分 + 数论