反向最大闭合图+topsort;

题解:

1.从右往左链接相邻的植物;

2.引有向边保护-->被保护;

3.处理环;

4.负权连s,正权连t;

5.跑最大流;

#include<iostream>
#include<cstdio>
#include<cstring>
#define maxx   10000000
using namespace std;
int read()
{int f=1,x=0;char ch;ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}return x*f;
}
int sum=0;
int st,ed;
int n,m;
int tot=0;
int vis[10000];
int level[10000];
int map[1000][1000];
int ww[600][500];
int c[100000];
int v[100000];
struct {int flow,next,y;}e[1000000];
int len=0;
int re[1000000];
int q[1000000],le[1000000],head,tail,lin[10000000];
void init(int x,int y,int flow)
{vis[y]++;e[++len].flow=flow;e[len].y=y;e[len].next=lin[x];lin[x]=len;re[len]=len+1;e[++len].flow=0;e[len].y=x;e[len].next=lin[y];lin[y]=len;re[len]=len-1;return ;
}
void initx()
{   st=++tot;n=read();m=read();    for(int i=0;i<=n-1;i++)for(int u=0;u<=m-1;u++){map[i][u]=++tot;if(u-1>=0)init(map[i][u],map[i][u-1],maxx);}ed=++tot;for(int i=0;i<=n-1;i++){for(int u=0;u<=m-1;u++){v[map[i][u]]=read();int w=read();for(int z=1;z<=w;z++){int x,y;x=read();y=read();init(map[i][u],map[x][y],maxx);}}}
}
int f[1000000];
void topsort()
{head=0;tail=0;for(int i=map[0][0];i<=map[n-1][m-1];i++)if(vis[i]==0)q[++tail]=i;while(head++<tail){int x=q[head];for(int i=lin[x];i;i=e[i].next){if(e[i].flow<=0)continue;int y=e[i].y;vis[y]--;if(vis[y]==0)q[++tail]=y;}}for(int i=1;i<=tail;i++){f[q[i]]=1;if(v[q[i]]>=0){init(q[i],ed,v[q[i]]),sum+=v[q[i]];}else init(st,q[i],-v[q[i]]);}
}
bool makelevel()
{f[st]=1;f[ed]=1;memset(level,-1,sizeof(level));head=0;tail=1;q[1]=st;level[st]=0;while(head++<tail){int x=q[head];for(int i=lin[x];i;i=e[i].next){int y=e[i].y;if(e[i].flow<=0)continue;if(f[y]==0)continue;if(level[y]==-1){level[y]=level[x]+1;q[++tail]=y;}}}//cout<<"s";return level[ed]!=-1;
}
int maxlow(int x,int flow)
{if(x==ed)return flow;int maax=0;int d;for(int i=lin[x];i&&maax<flow;i=e[i].next){int y=e[i].y;if(f[y]==0)continue;if(e[i].flow<=0)continue;if(level[y]!=level[x]+1)continue;if(d=maxlow(y,min(flow-maax,e[i].flow))){maax+=d;e[i].flow-=d;e[re[i]].flow+=d;}}if(maax==0)level[x]=-1;return maax;
}
int ans=0;
void dinic()
{int d;while(makelevel())while(d=maxlow(st,maxx)){ans+=d;}
}
int main()
{initx();topsort();memset(q,0,sizeof(q));dinic();cout<<sum-ans<<endl;return 0;
}

  

转载于:https://www.cnblogs.com/Lazers/p/6939449.html

【noi】植物大战僵尸相关推荐

  1. 女友让我破解植物大战僵尸!我干脆撸了一款一样的....翻身舔狗把歌唱呀

    今天给大家分享的开源项目可以说非常适合入门,还比较好玩,更是一个有故事的项目.既能满足想学习的读者,又能满足那些喜欢八卦的读者. 提到植物大战僵尸相信大部分读者都不陌生,可以说是塔防类游戏的鼻祖.就鸟 ...

  2. 【植物大战僵尸2】算法 笔记

    文章目录 春日活动--旅行原木--特殊事件--植物挑战_超能花菜 春日活动--暖春植树--初春挑战 地图解锁顺序建议 花园战争 超z联赛 无尽挑战 无尽常用植物及装扮 植物排名 春日活动–旅行原木–特 ...

  3. pvz安卓服务器维修礼包码,植物大战僵尸2礼包兑换码大全2020最新版

    植物大战僵尸2礼包码2020最新版是一款能够让玩家体验烧脑塔防大战的放置游戏,拥有经典的游戏规则设计,带来的玩法也会让每个玩家体验最为精彩的体验,每个僵尸都有着自己的特性,游戏之中的每一种植物都有自己 ...

  4. [日记]游长白遇梅花,植物大战僵尸

    "旅客朋友们--"我因为坐在面包车副驾驶的位置,所以假装自己是导游,"您即将经过的景点是'董眼镜修车铺',请向车窗的左侧观看--" 董眼镜修车铺 "董 ...

  5. 基于python开发植物大战僵尸

    目录 摘要 2 一, 引言 3 1.1中国游戏产业的现状 3 1.2中国游戏产业的未来发展局势 4 1.3植物大战僵尸游戏的发展状况 4 二.系统结构 5 2.1 Python3.8.2 IDLE 简 ...

  6. 植物2 IOS 怎么实名认证_植物大战僵尸2未来世界22天困难怎么过关 植物阵容推荐...

    植物大战僵尸2未来世界22天困难攻略 植物大战僵尸2未来世界22天有很多小伙伴都卡在这里,难度是一定的,那么到底要怎么过呢?下面就和小编一起去了解一下吧! 植物大战僵尸未来世界第二十二天过关条件是指挥 ...

  7. 谈 Scratch 版“植物大战僵尸”

    请先查看  Scratch经典游戏作品:植物大战僵尸  并下载资源. Python 版"植物大战僵尸"下载链接:https://download.csdn.net/download ...

  8. 计蒜客-植物大战僵尸

    嘟嘟最近迷恋上了一款游戏:植物大战僵尸.在梦中,他梦到了一个更加刺激的植物大战僵尸版本.有 n 个僵尸从起点出发,每个僵尸占用一个独立的直线道路.第 i 个僵尸在第一秒的速度为 f_if​i​​ ,之 ...

  9. 前女友让我撸个植物大战僵尸,我一怒之下把代码开源了...

    今天给大家分享的开源项目可以说非常适合入门,还比较好玩,更是一个有故事的项目.既能满足想学习的读者,又能满足那些喜欢八卦的读者. 提到植物大战僵尸相信大部分读者都不陌生,可以说是塔防类游戏的鼻祖.就鸟 ...

  10. 植物大战僵尸anroid版

    anroid植物大战僵尸简易版小游戏 文章目录 一.游戏背景 二.代码内容解析 1.项目展示 总结 # 前言 提示: 小游戏植物大战僵尸,这个是随便做的,不是大项目,所以做的没那么认真 提示:以下是本 ...

最新文章

  1. android与PC,C#与Java 利用protobuf 进行无障碍通讯【Socket】
  2. 用XCA(X Certificate and key management)可视化程序管理SSL 证书(2)--生成SSL证书请求...
  3. Spring Cloud【Finchley】实战-03订单微服务与商品微服务之间的调用
  4. [GKCTF 2021]Random
  5. [转]十个让你变成糟糕的程序员的行为
  6. html如何动态添加样式表,JavaScript动态插入CSS的方法
  7. git学习笔记-(4-git对象)
  8. 写大数据简历的黄金法则及项目经验
  9. 【69元】茗振 捶打按摩披肩100种模式 颈肩颈椎按摩器 腰部敲敲乐
  10. 【C/C++】为什么INT_MAX(整形最大值)减去INT_MIN(整形最小值)等于-1
  11. 大型连锁百货运维审计用什么软件好?有哪些功能?
  12. 计算机系统:计算机系统的基本组成
  13. 淘宝API-item_search - 按关键字搜索淘宝商品
  14. 自考本科和成人高考对于考公务员来说都一样吗?
  15. 【2016】二月份英语学习总结
  16. ios 自架验证服务器,iOS 13-Sign In with Apple(苹果登录)APP+后端验证
  17. html5猜大王游戏,5月8日维护:新副本金兜洞兕大王部分测试
  18. “AI安全”风起云涌,拿下A轮融资的瑞莱智慧如何与群雄共舞?
  19. 使用 Kali Linux 爆破 WiFi 密码
  20. 双枢轴快速排序与 Arrays.sort()

热门文章

  1. CSS3-变换-过渡-动画
  2. android应用程序的生命周期,Android应用程序的生命周期.doc
  3. PAT乙级 1020 月饼
  4. 用python内置函数算复杂度吗_Python减少代码量的两个内置函数
  5. MySQL常用存储引擎
  6. AIX学习笔记-第一天简介
  7. Servlet是否单例?
  8. leetcode:Majority Number
  9. ImageMagick还是GraphicsMagick?
  10. 修改默认共享内存tmpfs大小