洛谷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=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]寿司餐厅相关推荐
- P3749 [六省联考2017]寿司餐厅(最大权闭合子图变形)
P3749 [六省联考2017]寿司餐厅 最大权闭合子图 有两种建图方式 下面a[i]a_[i]a[i]表示寿司iii的编号 第二种建图其实就是把di,i也当成一个寿司而已d_{i,i}也当成一个寿 ...
- 【BZOJ4873】[六省联考2017]寿司餐厅(网络流)
[BZOJ4873][六省联考2017]寿司餐厅(网络流) 题面 BZOJ 洛谷 题解 很有意思的题目 首先看到答案的计算方法,就很明显的感觉到是一个最大权闭合子图. 然后只需要考虑怎么构图就行了. ...
- [BZOJ4873][六省联考2017]寿司餐厅(最大权闭合子图)
4873: [Shoi2017]寿司餐厅 Time Limit: 20 Sec Memory Limit: 512 MB Submit: 490 Solved: 350 [Submit][Stat ...
- 洛谷 P3750 [六省联考2017]分手是祝愿
传送门 题解 //Achen #include<algorithm> #include<iostream> #include<cstring> #include&l ...
- 洛谷 P3745 [六省联考2017]期末考试
题目描述 有 nnn 位同学,每位同学都参加了全部的 mmm 门课程的期末考试,都在焦急的等待成绩的公布. 第 iii 位同学希望在第 tit_iti 天或之前得知所有课程的成绩.如果在第 tit_ ...
- 六省联考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 ...
- 洛谷P4383 [八省联考2018]林克卡特树lct(DP凸优化/wqs二分)
题目描述 小L 最近沉迷于塞尔达传说:荒野之息(The Legend of Zelda: Breath of The Wild)无法自拔,他尤其喜欢游戏中的迷你挑战. 游戏中有一个叫做"LC ...
- dp凸优化/wqs二分学习笔记(洛谷4383 [八省联考2018]林克卡特树lct)
qwq 安利一个凸优化讲的比较好的博客 https://www.cnblogs.com/Gloid/p/9433783.html 但是他的暴力部分略微有点问题 qwq 我还是详细的讲一下这个题+这个知 ...
最新文章
- thinkphp_ajax分页实现_无需整理
- [Android]实现类似微信的延迟加载的Fragment——LazyFragment
- 一些概念整理(不一定完全正确)
- 基于FPGA的UART接口协议设计
- mysqldump: Couldn't execute 'SET OPTION SQL_QUOTE_SHOW_CREATE=1'
- Python获取一个字符串所有连续子串
- 初探Apache Impala
- 28家知名IT公司名称的由来
- linux条件变量cond,Linux 条件变量 pthread_cond_signal及pthread_cond_wait
- java中运算符的优先级
- 毕啸南专栏 | 对话驭势CEO吴甘沙:无人车结盟竞争是大势所趋
- Hadoop生态圈-Flume的组件之sink处理器
- 【浙江大学PAT真题练习乙级】1006 换个格式输出整数 (15分) 真题解析
- python如何保存源文件_python处理document文档保留原样式
- 7种超粗体字体(带有示例)
- mac系统如何获取最好权限删除顽固文件?
- VC++_2010_学习版_未能下载以下组件解决方案和microsoft应用程序错误报告
- 什么是边缘计算网关?(边缘计算网关产品的特点?)
- border-color属性设置单边边框和综合四边边框颜色
- 北京航空航天大学计算机考研难度,北京航空航天大学考研难吗?一般要什么水平才可以进入?...