【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]寿司餐厅(网络流)相关推荐

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

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

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

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

  3. 六省联考2017 Day1

    目录 2018.3.18 Test T1 BZOJ.4868.[六省联考2017]期末考试 T2 T3 BZOJ.4870.[六省联考2017]组合数问题(DP 矩阵快速幂) 总结 考试代码 T1 T ...

  4. BZOJ 4872 luogu P3750 [六省联考2017]分手是祝愿

    4872: [Shoi2017]分手是祝愿 Time Limit: 20 Sec  Memory Limit: 512 MB [Submit][Status][Discuss] Description ...

  5. 黑吉辽沪冀晋六省联考 2017 BZOJ 486848694870487148724873

    趁着网络上题解还不是很多,赶快怒写一发骗一下访问量 这套题在BZOJ上的题号是4868-4873. 感觉还不错,就是有一些题弄起来有一点小恶心-- 这套题的部分分给得都很多,很良心的QAQ BZOJ ...

  6. bzoj千题计划262:bzoj4868: [六省联考2017]期末考试

    http://www.lydsy.com/JudgeOnline/problem.php?id=4868 假设 最晚出成绩的是第i天 预处理 cnt[i] 表示 有多少个学生 期望出成绩的那一天 &l ...

  7. [bzoj 4869] [六省联考2017] 相逢是问候

    相逢是问候 2017-09-09 Description Informatik verbindet dich und mich. 信息将你我连结.(s:看到这个就感觉有毒 B君希望以维护一个长度为n的 ...

  8. [六省联考2017]分手是祝愿(期望+DP)

    题解 很容易想出来最优策略是什么. 就是从n到1看到开着的灯就把它关了 我们预处理出当前状态把灯全部关闭后的最少步数cnt 然后我们的主人公就要瞎按... 设dp[i]代表当前状态最优解为i步时走到d ...

  9. [六省联考2017]组合数问题

    题目大意:求这个式子: ∑i=0∞Cik+rnk(modp) 这道题就是个数学题,做法其实就是优化的暴力--杨辉三角矩阵加速. 可以加速的原理,其实就是杨辉三角是一个一维递推,并且可以将递推描述为:复 ...

最新文章

  1. app h5 上传按钮多选_稿定小课堂之教你如何制作H5
  2. 服务器可以ghost备份吗_Ghost超详细图文教程 – 克隆备份系统全程图解(下部)...
  3. OpenCV透视变换应用于图像的实例(附完整代码)
  4. 从零开始数据科学与机器学习算法-人工神经网络与反向传播-09
  5. 吸尘器电机拆解图解_老少皆宜居家清理更轻松?吉米A6上手把无线吸尘器体验...
  6. jenkins修改pom文件_jenkins使用小技巧:pom.xml文件里的版本随着每次发布变化怎么办?...
  7. node事件循环 EventEmitter 异步I/O Buffer缓冲区 模块
  8. World Wind Java开发之七——读取本地栅格文件(影像+高程)构建三维场景(转)...
  9. 解决对象转json字符串时对象属性不按对象属性顺序的问题
  10. 桌面在计算机哪个文件,计算机中win7系统桌面文件在c盘哪个文件夹
  11. 形象思维图谱应用--树形图
  12. 中国近代史知识要点总结
  13. 如何使静态图片做成动态效果?怎么让静态图片动起来
  14. 5:实战2:微信自动加好友 JavaAppium
  15. HPC高性能计算知识: HPDA新兴技术分析(附下载)
  16. SAP_FI统驭科目
  17. (大佬)睿智的目标检测13——Keras搭建mtcnn人脸检测平台
  18. 如何应对云安全技术遇到的挑战?可从这三点入手
  19. 更开放的苹果能否改变iOS越狱市场的未来?
  20. 设计,看上去很美 wayfarer

热门文章

  1. Reactive框架:简化异步及事件驱动编程
  2. 国家发改委:春运期间推动“健康码”全国一码通行
  3. ARM学习方法大杂烩,高手经验之谈,内容完全来自互联网
  4. 韩国遭到日本制裁,三星被打回原形,原来是个组装工厂?
  5. 计算机视觉库OpenCV之saturate_cast防数据越界函数
  6. 想转行到机器学习,学到什么程度,才能找到工作?
  7. 学习机器学习:这10年我们能在各自的领域做点什么?
  8. 根据图片原型写一个html页面,原型图的交互说明该怎么写?
  9. Centos7 防火墙开放端口,查看状态,查看开放端口
  10. for-each的使用