博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【CodeChef-SPCLN】Cleaning the Space
阅读量:5099 次
发布时间:2019-06-13

本文共 1471 字,大约阅读时间需要 4 分钟。

https://odzkskevi.qnssl.com/7dfb262544887eff6fb35bfb444759d6?v=1502084197

 

做法是类似于最大割之类的东西,把每个碎片按照按钮拆点,从s到每个碎片第一个点连inf,每个碎片第i个按钮向第i+1个按钮连100-i能量

然后最大流最小割,最大流=割掉的边和=100*n-能量和的最大值。

 

#include
#include
#include
#include
#define rep(i,l,r) for(int i=l;i<=r;i++)#define dow(i,l,r) for(int i=r;i>=l;i--)#define rep0(i,r) for(int i=0;i
=0;i=e[i].next)#define maxn 20020#define maxm 200100#define LL long longusing namespace std;typedef struct { int next,f,t;}E;E e[maxm];int gap[maxn],d[maxn],fi[maxn],cur[maxn],s,t,total=0;const int inf=100000000;int n,m,q;void add(int j,int k,int l){ e[total].f=l; e[total].t=k; e[total].next=fi[j]; fi[j]=total; total++;}void addedge(int j,int k,int l){ add(j,k,l); add(k,j,0);}int sap(int x,int flow){ if (x==t) return flow; int now=0; repedge(i,x) { int too=e[i].t; if (d[too]+1==d[x] && e[i].f) { int more=sap(too,min(e[i].f,flow-now)); e[i].f-=more; e[i^1].f+=more; cur[x]=i; if (flow==(now+=more)) return flow; } } if (!(--gap[d[x]])) d[s]=t; gap[++d[x]]++; cur[x]=fi[x]; return now;}int maxflow(){ memset(d,0,sizeof(d)); memset(gap,0,sizeof(gap)); rep(i,1,t) cur[i]=fi[i]; gap[0]=t; int ans=0; while (d[s]
View Code

 

  • 我1

转载于:https://www.cnblogs.com/Macaulish/p/7302374.html

你可能感兴趣的文章
LeetCode(3) || Median of Two Sorted Arrays
查看>>
大话文本检测经典模型:EAST
查看>>
文本主题模型之LDA(一) LDA基础
查看>>
linux基础命令-chgrp/chown/chomd
查看>>
待整理
查看>>
iOS 6
查看>>
Nginx入门篇-基础知识与linux下安装操作
查看>>
一次动态sql查询订单数据的设计
查看>>
C# 类(10) 抽象类.
查看>>
1.linux ping:unknown host www.***.***
查看>>
无向图求桥 UVA 796
查看>>
Nginx+Keepalived 实现双击热备及负载均衡
查看>>
五分钟搭建WordPress博客(二)
查看>>
Vue_(组件通讯)子组件向父组件传值
查看>>
jvm参数
查看>>
Something-Summary
查看>>
Spring学习笔记
查看>>
6个有用的MySQL语句
查看>>
linux c/c++ IP字符串转换成可比较大小的数字
查看>>
我对前端MVC的理解
查看>>