【BZOJ4873】[六省联考2017]寿司餐厅(网络流)
【BZOJ4873】[六省联考2017]寿司餐厅(网络流)
题面
BZOJ
洛谷
题解
很有意思的题目
首先看到答案的计算方法,就很明显的感觉到是一个最大权闭合子图。
然后只需要考虑怎么构图就行了。
首先把那个奇奇怪怪的什么\(mx^2+cx\),首先\(cx\)可以拆到每个地方计算,然后\(mx^2\)显然就是只要有这种被买到就要产生贡献,那么直接给每种寿司新建一个贡献然后连\(mx^2\)的边就行了。
然后考虑选择了区间的贡献,如果选择了区间\([l,r]\),就让\([l,r]\)向\([l+1,r],[l,r-1]\)连边,这样子就强制选完这段了。
然后就是裸的最大权闭合子图了。
#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
#define ll long long
#define MAXN 50000
const int inf=1e9;
inline int read()
{int x=0;bool t=false;char ch=getchar();while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();if(ch=='-')t=true,ch=getchar();while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();return t?-x:x;
}
struct Line{int v,next,w;}e[1000000];
int h[MAXN],cnt=2;
inline void Add(int u,int v,int w)
{e[cnt]=(Line){v,h[u],w};h[u]=cnt++;e[cnt]=(Line){u,h[v],0};h[v]=cnt++;
}
int S,T,cur[MAXN],level[MAXN];
bool bfs()
{for(int i=S;i<=T;++i)level[i]=0;level[S]=1;queue<int> Q;Q.push(S);while(!Q.empty()){int u=Q.front();Q.pop();for(int i=h[u];i;i=e[i].next)if(e[i].w&&!level[e[i].v])level[e[i].v]=level[u]+1,Q.push(e[i].v);}return level[T];
}
int dfs(int u,int flow)
{if(u==T||!flow)return flow;int ret=0;for(int &i=cur[u];i;i=e[i].next){int v=e[i].v,d;if(e[i].w&&level[v]==level[u]+1){d=dfs(v,min(flow,e[i].w));ret+=d;flow-=d;e[i].w-=d;e[i^1].w+=d;if(!flow)break;}}if(!ret)level[u]=0;return ret;
}
int Dinic()
{int ret=0;while(bfs()){for(int i=S;i<=T;++i)cur[i]=h[i];ret+=dfs(S,inf);}return ret;
}
int n,m,ans,a[105],lst[1005];
int ID(int l,int r){return 1000+(l-1)*n+r;}
int main()
{n=read();m=read();S=0;T=1000+n*n+1;for(int i=1;i<=n;++i){a[i]=read();if(!lst[a[i]])lst[a[i]]=i,Add(a[i],T,m*a[i]*a[i]);Add(ID(i,i),a[i],inf);Add(ID(i,i),T,a[i]);}for(int i=1;i<=n;++i)for(int j=i;j<=n;++j){int x=read();if(x>0)ans+=x;if(x>0)Add(S,ID(i,j),x);else Add(ID(i,j),T,-x);if(i!=j)Add(ID(i,j),ID(i+1,j),inf),Add(ID(i,j),ID(i,j-1),inf);}printf("%d\n",ans-Dinic());return 0;
}
转载于:https://www.cnblogs.com/cjyyb/p/10611551.html
【BZOJ4873】[六省联考2017]寿司餐厅(网络流)相关推荐
- [BZOJ4873][六省联考2017]寿司餐厅(最大权闭合子图)
4873: [Shoi2017]寿司餐厅 Time Limit: 20 Sec Memory Limit: 512 MB Submit: 490 Solved: 350 [Submit][Stat ...
- P3749 [六省联考2017]寿司餐厅(最大权闭合子图变形)
P3749 [六省联考2017]寿司餐厅 最大权闭合子图 有两种建图方式 下面a[i]a_[i]a[i]表示寿司iii的编号 第二种建图其实就是把di,i也当成一个寿司而已d_{i,i}也当成一个寿 ...
- 六省联考2017 Day1
目录 2018.3.18 Test T1 BZOJ.4868.[六省联考2017]期末考试 T2 T3 BZOJ.4870.[六省联考2017]组合数问题(DP 矩阵快速幂) 总结 考试代码 T1 T ...
- BZOJ 4872 luogu P3750 [六省联考2017]分手是祝愿
4872: [Shoi2017]分手是祝愿 Time Limit: 20 Sec Memory Limit: 512 MB [Submit][Status][Discuss] Description ...
- 黑吉辽沪冀晋六省联考 2017 BZOJ 486848694870487148724873
趁着网络上题解还不是很多,赶快怒写一发骗一下访问量 这套题在BZOJ上的题号是4868-4873. 感觉还不错,就是有一些题弄起来有一点小恶心-- 这套题的部分分给得都很多,很良心的QAQ BZOJ ...
- bzoj千题计划262:bzoj4868: [六省联考2017]期末考试
http://www.lydsy.com/JudgeOnline/problem.php?id=4868 假设 最晚出成绩的是第i天 预处理 cnt[i] 表示 有多少个学生 期望出成绩的那一天 &l ...
- [bzoj 4869] [六省联考2017] 相逢是问候
相逢是问候 2017-09-09 Description Informatik verbindet dich und mich. 信息将你我连结.(s:看到这个就感觉有毒 B君希望以维护一个长度为n的 ...
- [六省联考2017]分手是祝愿(期望+DP)
题解 很容易想出来最优策略是什么. 就是从n到1看到开着的灯就把它关了 我们预处理出当前状态把灯全部关闭后的最少步数cnt 然后我们的主人公就要瞎按... 设dp[i]代表当前状态最优解为i步时走到d ...
- [六省联考2017]组合数问题
题目大意:求这个式子: ∑i=0∞Cik+rnk(modp) 这道题就是个数学题,做法其实就是优化的暴力--杨辉三角矩阵加速. 可以加速的原理,其实就是杨辉三角是一个一维递推,并且可以将递推描述为:复 ...
最新文章
- app h5 上传按钮多选_稿定小课堂之教你如何制作H5
- 服务器可以ghost备份吗_Ghost超详细图文教程 – 克隆备份系统全程图解(下部)...
- OpenCV透视变换应用于图像的实例(附完整代码)
- 从零开始数据科学与机器学习算法-人工神经网络与反向传播-09
- 吸尘器电机拆解图解_老少皆宜居家清理更轻松?吉米A6上手把无线吸尘器体验...
- jenkins修改pom文件_jenkins使用小技巧:pom.xml文件里的版本随着每次发布变化怎么办?...
- node事件循环 EventEmitter 异步I/O Buffer缓冲区 模块
- World Wind Java开发之七——读取本地栅格文件(影像+高程)构建三维场景(转)...
- 解决对象转json字符串时对象属性不按对象属性顺序的问题
- 桌面在计算机哪个文件,计算机中win7系统桌面文件在c盘哪个文件夹
- 形象思维图谱应用--树形图
- 中国近代史知识要点总结
- 如何使静态图片做成动态效果?怎么让静态图片动起来
- 5:实战2:微信自动加好友 JavaAppium
- HPC高性能计算知识: HPDA新兴技术分析(附下载)
- SAP_FI统驭科目
- (大佬)睿智的目标检测13——Keras搭建mtcnn人脸检测平台
- 如何应对云安全技术遇到的挑战?可从这三点入手
- 更开放的苹果能否改变iOS越狱市场的未来?
- 设计,看上去很美 wayfarer