【题目】#2146. 「SHOI2017」寿司餐厅

【题意】给定n种寿司的代号,取区间[i,j]的寿司收益是d[i,j]和所有子区间的d,吃了c(c>0)种代号x的寿司的代价是mx^2+cx,给定n,m和矩阵d(有负数!),求最大收益。n<=100。

【算法】最大权闭合子图

【题解】开始考虑每个区间建一个收益点向区间内的寿司连边,然后对每个代号新建一个点权为-mx^2的点,每种寿司寿司连向代号点,这样就是求最大权闭合子图了。

但是这样边数是n^3,可能过不了。

考虑优化,区间$[i,j]$只需要连向$[i,j-1]$和$[i+1,j]$就可以了,所有区间$[i,i]$的点权为d[i,i]-a[i],这样边数只有n^2,复杂度O(n^4)。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int inf=0x3f3f3f3f;
int n,m,S,T,a[110];
namespace nwf{const int maxn=20010,maxm=40010;int tot=1,first[maxn],d[maxn],q[maxn],cur[maxn];struct edge{int v,f,from;}e[maxm*2];void insert(int u,int v,int f){tot++;e[tot].v=v;e[tot].f=f;e[tot].from=first[u];first[u]=tot;tot++;e[tot].v=u;e[tot].f=0;e[tot].from=first[v];first[v]=tot;}bool bfs(){memset(d,-1,sizeof(d));d[S]=0;int head=0,tail=1;q[head]=S;while(head<tail){int x=q[head++];for(int i=first[x];i;i=e[i].from)if(e[i].f&&d[e[i].v]==-1){d[e[i].v]=d[x]+1;q[tail++]=e[i].v;}}return ~d[T];}int dfs(int x,int a){if(x==T||a==0)return a;int flow=0,f;for(int& i=cur[x];i;i=e[i].from)if(e[i].f&&d[e[i].v]==d[x]+1&&(f=dfs(e[i].v,min(a,e[i].f)))){e[i].f-=f;e[i^1].f+=f;flow+=f;a-=f;if(a==0)break;}return flow;}int dinic(){int ans=0;while(bfs()){for(int i=S;i<=T;i++)cur[i]=first[i];ans+=dfs(S,inf);}return ans;}
}
int main(){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)scanf("%d",&a[i]);S=0;T=n*n+1001;int ans=0;for(int i=1;i<=n;i++){for(int j=i;j<=n;j++){int u;scanf("%d",&u);if(i!=j){nwf::insert((i-1)*n+j,i*n+j,inf),nwf::insert((i-1)*n+j,(i-1)*n+j-1,inf);if(u>0)nwf::insert(S,(i-1)*n+j,u),ans+=u;else nwf::insert((i-1)*n+j,T,-u);//
            }else if(u-a[i]>0)nwf::insert(S,(i-1)*n+j,u-a[i]),ans+=u-a[i];else nwf::insert((i-1)*n+j,T,a[i]-u);}}for(int i=1;i<=1000;i++){nwf::insert(n*n+i,T,i*i*m);for(int j=1;j<=n;j++)if(a[j]==i)nwf::insert((j-1)*n+j,n*n+i,inf);}printf("%d",ans-nwf::dinic());return 0;
}

View Code

转载于:https://www.cnblogs.com/onioncyc/p/8733405.html

【BZOJ】4873: [Shoi2017]寿司餐厅相关推荐

  1. BZOJ 4873 [Shoi2017]寿司餐厅 | 网络流 最大权闭合子图

    链接 BZOJ 4873 题解 当年的省选题--还记得蒟蒻的我Day1 20分滚粗-- 这道题是个最大权闭合子图的套路题.严重怀疑出题人就是先画好了图然后照着图编了个3000字的题面.和我喜欢的妹子当 ...

  2. 4873: [Shoi2017]寿司餐厅

    4873: [Shoi2017]寿司餐厅 Time Limit: 20 Sec   Memory Limit: 512 MB Submit: 155   Solved: 114 [ Submit][ ...

  3. [BZOJ4873][六省联考2017]寿司餐厅(最大权闭合子图)

    4873: [Shoi2017]寿司餐厅 Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 490  Solved: 350 [Submit][Stat ...

  4. 51nod2938 寿司餐厅

    2938 寿司餐厅 题目详情见bzoj4873[Shoi2017]寿司餐厅,这里只放代码: #include<iostream> #include<algorithm> #in ...

  5. 【BZOJ4873】[六省联考2017]寿司餐厅(网络流)

    [BZOJ4873][六省联考2017]寿司餐厅(网络流) 题面 BZOJ 洛谷 题解 很有意思的题目 首先看到答案的计算方法,就很明显的感觉到是一个最大权闭合子图. 然后只需要考虑怎么构图就行了. ...

  6. P3749 [六省联考2017]寿司餐厅(最大权闭合子图变形)

    P3749 [六省联考2017]寿司餐厅 最大权闭合子图 有两种建图方式 下面a[i]a_[i]a[​i]表示寿司iii的编号 第二种建图其实就是把di,i也当成一个寿司而已d_{i,i}也当成一个寿 ...

  7. bzoj 4871: [Shoi2017]摧毁“树状图”

    4871: [Shoi2017]摧毁"树状图" Time Limit: 25 Sec  Memory Limit: 512 MB Submit: 53  Solved: 9 [Su ...

  8. bzoj 4627 回转寿司(权值线段树)

    回转寿司 Description 酷爱日料的小Z经常光顾学校东门外的回转寿司店.在这里,一盘盘寿司通过传送带依次呈现在小Z眼前.不同的寿 司带给小Z的味觉感受是不一样的,我们定义小Z对每盘寿司都有一个 ...

  9. BZOJ 4627回转寿司(值域线段树)

    4627: [BeiJing2016]回转寿司 Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 507  Solved: 217 [Submit][S ...

最新文章

  1. CUDA软件系统知识
  2. Windows Mobile 获取基站信息(LAC,CellID)
  3. java 通信层_Android native进程间通信实例-binder篇之——HAL层访问JAVA层的服务
  4. 左神算法:单调栈结构(Java版)
  5. XCTF-高手进阶区:bug
  6. Android网络请求开源框架retrofit的基本GET用法(2.4版本)
  7. 计算机与应用化学怎么投稿,计算机与应用化学杂志
  8. 逆透视变换详解 及 代码实现(一)
  9. Jeecg-Boot导入附件异常解决
  10. 小程序开发 缓存的应用
  11. java便签小程序原码_localStorage实现便签小程序
  12. 网站访客 简易日志记录
  13. java redis pubsub_如何从Java中的生菜RedisPubSubListener获取消息?
  14. 2007年IT技术走向何方 网络将再掀“酷”革命
  15. ubuntu笔记本gpu温度太高解决办法
  16. python菜鸟教程 | 素数
  17. window8 激活工具
  18. 小A与小姐姐给气球涂色 题目描述 小A与小姐姐闲的无聊,它们路过一家商店,看见里面有很多无色的气球,于是他们突然有一
  19. 题解 - [POI2008]KUP-Plot purchase
  20. localhost无法访问的问题

热门文章

  1. tdk磁材手册_TDK的铁氧体磁铁(FB系列) - TDK Product Center.PDF
  2. mongo java mapreduce_MongoDB中MapReduce介绍与使用
  3. HDLBits 系列(21)LFSR(线性反馈移位寄存器)
  4. 有关FPGA比较好的文章收藏(备忘)
  5. 用离散傅里叶变换来实现OFDM
  6. springclould feign客户端添加全局参数
  7. 如何选择合适的NoSQL数据库
  8. Vue源码探究-全局API
  9. 脉讯发布“社群搜索工具” 助企业精准洞察消费者需求
  10. C#实现的ReplaceFirst和ReplaceLast