bzoj4873 [Shoi2017]寿司餐厅
Input
Output
输出共一行包含一个正整数,表示Kiana能获得的总美味度减去花费的总钱数的最大值。
Sample Input
2 3 2
5 -10 15
-10 15
15
Sample Output

(参考sliverNebula的博客)
可以这么理解:割掉S与点i的边,就是放弃了i. 割掉i与T的连边,就是选i的代价.
做网络流的题要有把所有东西都看作“点”的想法.
- #include <cstdio>
- #include <queue>
- #include <cstring>
- #include <iostream>
- #include <algorithm>
- using namespace std;
- const int maxn = ,maxm = ,inf = 0x7fffffff;
- int n,m,a[],mx,d[][],cnt,pos[][],S,T,ans,head[maxn];
- int to[maxm],nextt[maxm],w[maxm],tot = ,vis[maxn],cur[maxn];
- void add(int x,int y,int z)
- {
- w[tot] = z;
- to[tot] = y;
- nextt[tot] = head[x];
- head[x] = tot++;
- w[tot] = ;
- to[tot] = x;
- nextt[tot] = head[y];
- head[y] = tot++;
- }
- bool bfs()
- {
- queue <int> q;
- q.push(S);
- memset(vis,-,sizeof(vis));
- vis[S] = ;
- while (!q.empty())
- {
- int u = q.front();
- q.pop();
- if (u == T)
- return true;
- for (int i = head[u];i;i = nextt[i])
- {
- int v = to[i];
- if (w[i] && vis[v] == -)
- {
- vis[v] = vis[u] + ;
- q.push(v);
- }
- }
- }
- return false;
- }
- int dfs(int u,int f)
- {
- if (u == T)
- return f;
- int res = ;
- for (int i = cur[u];i;i = nextt[i])
- {
- int v = to[i];
- if (w[i] && vis[v] == vis[u] + )
- {
- int temp = dfs(v,min(f - res,w[i]));
- w[i] -= temp;
- w[i ^ ] += temp;
- res += temp;
- if (w[i])
- cur[u] = i;
- if (res == f)
- return res;
- }
- }
- if (!res)
- vis[u] = -;
- return res;
- }
- void dinic()
- {
- while (bfs())
- {
- for (int i = ; i <= T; i++)
- cur[i] = head[i];
- ans -= dfs(S,inf);
- }
- }
- int main()
- {
- scanf("%d%d",&n,&m);
- for (int i = ; i <= n; i++)
- {
- scanf("%d",&a[i]);
- mx = max(mx,a[i]);
- }
- cnt = mx + n;
- for (int i = ; i <= n; i++)
- for (int j = i; j <= n; j++)
- {
- if (i == j)
- pos[i][j] = i;
- else
- pos[i][j] = ++cnt;
- }
- S = cnt + ;
- T = S + ;
- for (int i = ; i <= n; i++)
- for (int j = ; j <= n - i + ; j++)
- {
- scanf("%d",&d[i][i + j - ]);
- int l = i,r = i + j - ;
- if (d[l][r] < )
- add(pos[l][r],T,-d[l][r]);
- else
- {
- add(S,pos[l][r],d[l][r]);
- ans += d[l][r];
- }
- if (l != r)
- add(pos[l][r],pos[l + ][r],inf),add(pos[l][r],pos[l][r - ],inf);
- else
- {
- add(pos[l][r],a[l] + n,inf);
- add(pos[l][r],T,a[l]);
- }
- }
- for (int i = ; i <= mx; i++)
- add(i + n,T,i * i * m);
- dinic();
- printf("%d\n",ans);
- return ;
- }
bzoj4873 [Shoi2017]寿司餐厅的更多相关文章
- 【最大权闭合子图】bzoj4873 [Shoi2017]寿司餐厅
4873: [Shoi2017]寿司餐厅 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 369 Solved: 256[Submit][Status ...
- bzoj4873: [Shoi2017]寿司餐厅(最大权闭合子图)
4873: [Shoi2017]寿司餐厅 大难题啊啊!!! 题目:传送门 题解:一眼题是网络流,但还是不会OTZ,菜啊... %题解... 最大权闭合子图!!! 好的...开始花式建边: 1.对于每个 ...
- BZOJ4873[Shoi2017]寿司餐厅——最大权闭合子图
题目描述 Kiana最近喜欢到一家非常美味的寿司餐厅用餐.每天晚上,这家餐厅都会按顺序提供n种寿司,第i种寿司有一个 代号ai和美味度di,i,不同种类的寿司有可能使用相同的代号.每种寿司的份数都是无 ...
- BZOJ4873 Shoi2017寿司餐厅(最小割)
选择了某个区间就必须选择其所有子区间,容易想到这是一个最大权闭合子图的模型.考虑将区间按长度分层,相邻层按包含关系连边,区间[i,j]的权值即di,j,其中最后一层表示长度为1的区间的同时也表示寿司本 ...
- BZOJ4873 [Shoi2017]寿司餐厅 【最大权闭合子图】
题目链接 BZOJ4873 题解 题意很鬼畜,就可以考虑网络流[雾] 然后就会发现这是一个裸的最大权闭合子图 就是注意要离散化一下代号 #include<algorithm> #inclu ...
- bzoj4873: [Shoi2017]寿司餐厅(最小割)
传送门 大佬们是怎么一眼看出这是一个最大权闭合子图的……大佬好强->这里 1.把所有区间$(i,j)$看成一个点,如果权值大于0,则从$S$向他连边,容量为权值,否则从它向$T$连边,容量为权值 ...
- 【BZOJ4873】[Shoi2017]寿司餐厅 最大权闭合图
[BZOJ4873][Shoi2017]寿司餐厅 Description Kiana最近喜欢到一家非常美味的寿司餐厅用餐.每天晚上,这家餐厅都会按顺序提供n种寿司,第i种寿司有一个代号ai和美味度di ...
- BZOJ:4873: [Shoi2017]寿司餐厅
4873: [Shoi2017]寿司餐厅 首先很开心在膜你赛的时候做了出来. 看到数据范围,看到不能dp,看到贡献去重后计算,咦,流? 那就容易了,转最大权闭合子图,每个区间建一个点,取了就一定要取他 ...
- bzoj 4873: [Shoi2017]寿司餐厅 [最小割]
4873: [Shoi2017]寿司餐厅 题意:略 唯一会做的... 一眼最小割 就是最大权闭合子图呀 \(s\rightarrow d_{positive} \rightarrow -d_{negt ...
随机推荐
- Hyperledger Fabric CouchDB as the State Database——使用CouchDB
使用CouchDB作为状态数据库 状态数据库选项 状态数据库包括LevelDB和CouchDB.LevelDB是嵌入在peer进程中的默认键/值状态数据库,CouchDB是一个可选的外部状态数据库.与 ...
- Spark Shell Examples
Spark Shell Example 1 - Process Data from List: scala> val pairs = sc.parallelize( List( ("T ...
- .NET导出Excel之NPOI
前段时间研究过微软的Excel导出.table输出Excel,而它们也存在一些弊端: 1.对于微软的Excel导出存在一些弊端,如:需要安装Office软件.速度问题: 2.table输出Excel在 ...
- 当Kubernets遇上阿里云 -之七层负载均衡(一).
我们知道Kubernetes的service只能实现基于4层的负载均衡,无法提供7层之上的许多特性,诸如基于URL的负载均衡,SSL支持,三方授权等等:Ingress可以实现七层负载均衡的许多功能,唯 ...
- [咸恩静][Coffee House]
歌词来源:http://music.163.com/#/song?id=5400159 하루의 시작은 향긋한 커피 [ha-lu-e xi-ja-geun hyang-geu-Tan Keo-Pi] ...
- 武汉天喻信息 移动安全领域 SE(Secure Element)
产品简介: SE(Secure Element)为安全模块,是一台微型计算机,通过安全芯片和芯片操作系统(COS)实现数据安全存储.加解密运算等功能.SE可封装成各种形式,常见的有智能卡和嵌入式安全模 ...
- 贪吃蛇GUI Prototype
- OpenFlow协议
功能 1.0版本Openflow:控制器通过Openflow协议与交换机建立了安全通道(Sceure Channel),下发流表. 1.3版本Openflow:多控制器,多流表. 用于实现Contro ...
- lintcode-401-排序矩阵中的从小到大第k个数
401-排序矩阵中的从小到大第k个数 在一个排序矩阵中找从小到大的第 k 个整数. 排序矩阵的定义为:每一行递增,每一列也递增. 样例 给出 k = 4 和一个排序矩阵: [ [1 ,5 ,7], [ ...
- 软工网络15团队作业4——Alpha阶段敏捷冲刺-7
一.当天站立式会议照片: 二.项目进展 昨天已完成的工作: 进一步优化功能与完善服务器. 明天计划完成的工作: 服务器是需要完善,后端的配置还需要修改. 工作中遇到的困难: 今日遇到的困难是服务器后端 ...