洛谷P3749 [六省联考2017]寿司餐厅
这几道都是上周llj讲的题,题解也写得十分好了,所以直接贴了几个链接和代码。
//Achen
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<vector>
#include<queue>
#include<cmath>
#include<ctime>
#include<map>
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
const int N=,inf=0x7fffffff;
typedef long long LL;
using namespace std;
int n,m,s,t,num,D[][],id[][],ans;
map<int,int>mp; template<typename T> void read(T &x) {
T f=; x=; char ch=getchar();
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} struct edge {
int u,v,fl,cap,nx;
edge(){}
edge(int u,int v,int fl,int cap,int nx):u(u),v(v),fl(fl),cap(cap),nx(nx){}
}e[N]; int fir[N],cur[N],ecnt=,p[N];
void add(int u,int v,int cap) {
e[++ecnt]=edge(u,v,,cap,fir[u]); fir[u]=ecnt;
e[++ecnt]=edge(v,u,,,fir[v]); fir[v]=ecnt;
} int calc(int s,int t) {
int fl=inf;
for(int i=t;i!=s;i=e[p[i]].u)
fl=min(fl,e[p[i]].cap-e[p[i]].fl);
for(int i=t;i!=s;i=e[p[i]].u)
e[p[i]].fl+=fl,e[p[i]^].fl-=fl;
return fl;
} int d[N],c[N];
queue<int>que;
void bfs(int s,int t) {
for(int i=;i<=n;i++) cur[i]=fir[i],d[i]=n,c[i]=;
que.push(t); d[t]=;
while(!que.empty()) {
int x=que.front();
que.pop();
for(int i=fir[x];i;i=e[i].nx) if(e[i].cap==) {
int y=e[i].v;
if(d[y]==n) {
d[y]=d[x]+;
que.push(y);
}
}
}
} int ISAP(int s,int t) {
int res=;
bfs(s,t);
for(int i=;i<=n;i++) c[d[i]]++;
for(int x=s;d[x]<n;) {
if(x==t) {
res+=calc(s,t);
x=s;
}
int ok=;
for(int &i=cur[x];i;i=e[i].nx)
if(e[i].fl<e[i].cap&&d[e[i].v]+==d[x]) {
p[x=e[i].v]=i; ok=; break;
}
if(!ok) {
int M=n; cur[x]=fir[x];
for(int i=fir[x];i;i=e[i].nx) if(e[i].cap>e[i].fl) {
M=min(M,d[e[i].v]+);
}
if(!(--c[d[x]])) break;
c[d[x]=M]++;
if(x!=s) x=e[p[x]].u;
}
}
return res;
} int main() {
read(n); read(m);
s=++num; t=++num; num+=n;
For(i,,n) {
int col; read(col);
if(!mp[col]) {
mp[col]=++num;
add(num,t,m*col*col);
}
add(i+,mp[col],inf);
add(i+,t,col);
}
For(i,,n)
For(j,i,n) {
read(D[i][j]); id[i][j]=++num;
if(D[i][j]>=) {
add(s,num,D[i][j]);
ans+=D[i][j];
}
else add(num,t,-D[i][j]);
add(num,i+,inf);
add(num,j+,inf);
}
For(i,,n)
For(j,i,n) if(i!=j) {
add(id[i][j],id[i+][j],inf);
add(id[i][j],id[i][j-],inf);
}
n=num;
ans-=ISAP(s,t);
printf("%d\n",ans);
return ;
}
洛谷P3749 [六省联考2017]寿司餐厅的更多相关文章
- 洛谷$P3749$ [六省联考2017] 寿司餐厅 网络流
正解:网络流 解题报告: 传送门$QwQ$ 这道题好烦昂,,,就给了好多变量,,,但仔细读一遍题还是能$get$的所以我就不再提取一遍题目大意辣$QwQ$? 显然考虑建两排点,一排收益一排支出然后最小 ...
- P3749 [六省联考2017]寿司餐厅 最小割
\(\color{#0066ff}{ 题目描述 }\) Kiana 最近喜欢到一家非常美味的寿司餐厅用餐. 每天晚上,这家餐厅都会按顺序提供 \(n\) 种寿司,第 \(i\) 种寿司有一个代号 \( ...
- 【BZOJ4873】[六省联考2017]寿司餐厅(网络流)
[BZOJ4873][六省联考2017]寿司餐厅(网络流) 题面 BZOJ 洛谷 题解 很有意思的题目 首先看到答案的计算方法,就很明显的感觉到是一个最大权闭合子图. 然后只需要考虑怎么构图就行了. ...
- 洛谷 P3747 [六省联考2017]相逢是问候 解题报告
P3747 [六省联考2017]相逢是问候 题目描述 \(\text {Informatik verbindet dich und mich.}\) 信息将你我连结. \(B\) 君希望以维护一个长度 ...
- 【洛谷P3749】[六省联考2017]寿司餐厅(网络流)
洛谷 题意: 给出\(n\)份寿司,现可以选取任意多次连续区间内的寿司,对于区间\([l,r]\),那么贡献为\(\sum_{i=l}^r \sum_{j=i}^rd_{i,j}\)(对于相同的\(d ...
- bzoj千题计划265:bzoj4873: [六省联考2017]寿司餐厅
http://www.lydsy.com/JudgeOnline/problem.php?id=4873 选a必选b,a依赖于b 最大权闭合子图模型 构图: 1.源点 向 正美味度区间 连 流量为 美 ...
- [BZOJ4873][六省联考2017]寿司餐厅(最大权闭合子图)
4873: [Shoi2017]寿司餐厅 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 490 Solved: 350[Submit][Status ...
- 洛谷P3750 [六省联考2017]分手是祝愿(期望dp)
传送门 嗯……概率期望这东西太神了…… 先考虑一下最佳方案,肯定是从大到小亮的就灭(这个仔细想一想应该就能发现) 那么直接一遍枚举就能$O(nlogn)$把这个东西给搞出来 然后考虑期望dp,设$f[ ...
- 洛谷P3746 [六省联考2017]组合数问题
题目描述 组合数 C_n^mCnm 表示的是从 n 个互不相同的物品中选出 m 个物品的方案数.举个例子,从 (1;2;3) 三个物品中选择两个物品可以有 (1;2);(1;3);(2;3) 这三种 ...
随机推荐
- thinkphp 模板注释
模板支持注释功能,该注释文字在最终页面不会显示,仅供模板制作人员参考和识别. 大理石平台厂家 单行注释 格式: {/* 注释内容 */ } 或 {// 注释内容 } 例如: {// 这是模板注释内容 ...
- thinkphp 模版引擎
系统支持原生的PHP模板,而且本身内置了一个基于XML的高效的编译型模板引擎,系统默认使用的模板引擎是内置模板引擎,关于这个模板引擎的标签详细使用可以参考模版引擎部分. 内置的大理石平台检定规程模板引 ...
- mysql查询语句对于为null和为空字符串给出特定值处理
SELECT if(IFNULL(filedName,"指定字符串")="","指定字符串",filedName) '重命名的字符名' FR ...
- hibernate_02_hibernate的入门
1.什么是Hibernate框架? Hibernate是一种ORM框架,全称为 Object_Relative DateBase-Mapping,在Java对象与关系数据库之间建立某种映射,以实现直接 ...
- WinDBG常用断点命令
WinDBG提供了多种设断点的命令: bp 命令是在某个地址 下断点, 可以 bp 0x7783FEB 也可以 bp MyApp!SomeFunction . 对于后者,WinDBG 会自动找到MyA ...
- python爬取(自动化)豆瓣电影影评,并存储。
from selenium import webdriverfrom selenium.webdriver import ActionChainsimport time driver = webdri ...
- Arrays.asList()使用的问题
在java语言中,把数组转换成List集合,有个很方便的方法就是 List<String> list = Arrays.asList("a","b" ...
- 2019-8-2-WPF-依赖属性绑定不上调试方法
title author date CreateTime categories WPF 依赖属性绑定不上调试方法 lindexi 2019-08-02 19:56:32 +0800 2019-8-2 ...
- 笔记:Python异常处理与程序调试
Python异常处理与程序调试 Python提供了强大的异常处理机制,通过捕获异常可以提高程序的健壮性.异常处理还具有释放对象,中止循环的运行等作用.在程序运行的过程中,如果发生了错误,可以返回事先约 ...
- centos6 php5.4 升級到php 5.6
因Centos6中的PHP版本有点底,需要升级PHP版本 [vagrant@localhost ~]$ php -v PHP 5.4.45 (cli) (built: Sep 30 2015 15:0 ...