传送门

题解

这几道都是上周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=200007,inf=0x7fffffff;
typedef long long LL;
using namespace std;
int n,m,s,t,num,D[107][107],id[107][107],ans;
map<int,int>mp;template<typename T> void read(T &x) {T f=1; x=0; char ch=getchar();while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar();if(ch=='-') f=-1,ch=getchar();for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0'; 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=1,p[N];
void add(int u,int v,int cap) {e[++ecnt]=edge(u,v,0,cap,fir[u]); fir[u]=ecnt;e[++ecnt]=edge(v,u,0,0,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]^1].fl-=fl;return fl;
} int d[N],c[N];
queue<int>que;
void bfs(int s,int t) {for(int i=1;i<=n;i++) cur[i]=fir[i],d[i]=n,c[i]=0;que.push(t); d[t]=0;while(!que.empty()) {int x=que.front();que.pop();for(int i=fir[x];i;i=e[i].nx) if(e[i].cap==0) {int y=e[i].v;if(d[y]==n) {d[y]=d[x]+1;que.push(y);}}}
}int ISAP(int s,int t) {int res=0;bfs(s,t);for(int i=1;i<=n;i++) c[d[i]]++;for(int x=s;d[x]<n;) {if(x==t) {res+=calc(s,t);x=s; }int ok=0;for(int &i=cur[x];i;i=e[i].nx) if(e[i].fl<e[i].cap&&d[e[i].v]+1==d[x]) {p[x=e[i].v]=i; ok=1; 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]+1);}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,1,n) {int col; read(col);if(!mp[col]) {mp[col]=++num;add(num,t,m*col*col);}add(i+2,mp[col],inf);add(i+2,t,col);}For(i,1,n) For(j,i,n) {read(D[i][j]); id[i][j]=++num;if(D[i][j]>=0) {add(s,num,D[i][j]);ans+=D[i][j];}else add(num,t,-D[i][j]);add(num,i+2,inf);add(num,j+2,inf);}For(i,1,n) For(j,i,n) if(i!=j) {add(id[i][j],id[i+1][j],inf);add(id[i][j],id[i][j-1],inf);    }n=num;ans-=ISAP(s,t);printf("%d\n",ans);return 0;
}

View Code

转载于:https://www.cnblogs.com/Achenchen/p/8604806.html

洛谷P3749 [六省联考2017]寿司餐厅相关推荐

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

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

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

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

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

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

  4. 洛谷 P3750 [六省联考2017]分手是祝愿

    传送门 题解 //Achen #include<algorithm> #include<iostream> #include<cstring> #include&l ...

  5. 洛谷 P3745 [六省联考2017]期末考试

    题目描述 有 nnn 位同学,每位同学都参加了全部的 mmm 门课程的期末考试,都在焦急的等待成绩的公布. 第 iii 位同学希望在第 tit_iti​ 天或之前得知所有课程的成绩.如果在第 tit_ ...

  6. 六省联考2017 Day1

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

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

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

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

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

  9. 洛谷P4383 [八省联考2018]林克卡特树lct(DP凸优化/wqs二分)

    题目描述 小L 最近沉迷于塞尔达传说:荒野之息(The Legend of Zelda: Breath of The Wild)无法自拔,他尤其喜欢游戏中的迷你挑战. 游戏中有一个叫做"LC ...

  10. dp凸优化/wqs二分学习笔记(洛谷4383 [八省联考2018]林克卡特树lct)

    qwq 安利一个凸优化讲的比较好的博客 https://www.cnblogs.com/Gloid/p/9433783.html 但是他的暴力部分略微有点问题 qwq 我还是详细的讲一下这个题+这个知 ...

最新文章

  1. thinkphp_ajax分页实现_无需整理
  2. [Android]实现类似微信的延迟加载的Fragment——LazyFragment
  3. 一些概念整理(不一定完全正确)
  4. 基于FPGA的UART接口协议设计
  5. mysqldump: Couldn't execute 'SET OPTION SQL_QUOTE_SHOW_CREATE=1'
  6. Python获取一个字符串所有连续子串
  7. 初探Apache Impala
  8. 28家知名IT公司名称的由来
  9. linux条件变量cond,Linux 条件变量 pthread_cond_signal及pthread_cond_wait
  10. java中运算符的优先级
  11. 毕啸南专栏 | 对话驭势CEO吴甘沙:无人车结盟竞争是大势所趋
  12. Hadoop生态圈-Flume的组件之sink处理器
  13. 【浙江大学PAT真题练习乙级】1006 换个格式输出整数 (15分) 真题解析
  14. python如何保存源文件_python处理document文档保留原样式
  15. 7种超粗体字体(带有示例)
  16. mac系统如何获取最好权限删除顽固文件?
  17. VC++_2010_学习版_未能下载以下组件解决方案和microsoft应用程序错误报告
  18. 什么是边缘计算网关?(边缘计算网关产品的特点?)
  19. border-color属性设置单边边框和综合四边边框颜色
  20. 北京航空航天大学计算机考研难度,北京航空航天大学考研难吗?一般要什么水平才可以进入?...

热门文章

  1. R与Python手牵手:数据探索性分析案例展示
  2. 从一个小问题洞察挣钱秘籍,却被90%的数据分析师忽略
  3. visual studio 中将选中代码相同的代码的颜色设置,修改高亮颜色
  4. 洛谷 P1168 中位数 堆
  5. ModelAttribue注解的使用
  6. 算法基本和常见排序算法
  7. BZOJ4237 稻草人
  8. android动画的实现过程
  9. 访问itunes store的时候提示网络连接超时的解决方案
  10. 案例分享:巧用工具提升无源码系统的性能和稳定性