Energy Minimization

zoj2539:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2539

题意:公式第一项只要当xi=0时才会有作用,第二项只有当xi=1时才会有作用,第三项只有当xi和xj不相等时才会有作用

题解:对于每个点i,xi要么等于0,要么等于1,即点i要么属于S集,要么属于T集,如果点i,j不在同一个集合,它们之间会产生附加值总的最小value值正好对应一个最小割的容量,value=Sum(v0i)+Sum(v1j)+Sum(vij),令v0为源点,v1为汇点,则i表示点i属于S集,点j表示j属于T集,当(s,i)为割边时,(i,t)不会是割边,同理,(i,t)为割边时,(s,i)不会是割边,当i,j在同一个集合时,(i,j)不会是割边。所以只要充分理解了最小割,就知道为什么跑了一遍最大流就能够搞定了。

  1 #include<iostream>
  2 #include<cstring>
  3 #include<algorithm>
  4 #include<cstdio>
  5 #include<queue>
  6 #define INF 100000000
  7 using namespace std;
  8 const int N=402;
  9 const int M=820;
 10 struct Node{
 11    int v;
 12    int f;
 13    int next;
 14 }edge[M];
 15 int n,m,u,v,cnt,sx,ex;
 16 int head[N],pre[N];
 17 int mp[21][21];//根据题目要求申请
 18 void init(){
 19     cnt=0;
 20     memset(head,-1,sizeof(head));
 21 }
 22 void add(int u,int v,int w){
 23     edge[cnt].v=v;
 24     edge[cnt].f=w;
 25     edge[cnt].next=head[u];
 26     head[u]=cnt++;
 27     edge[cnt].f=0;
 28     edge[cnt].v=u;
 29     edge[cnt].next=head[v];
 30     head[v]=cnt++;
 31 }
 32 bool BFS(){
 33   memset(pre,0,sizeof(pre));
 34   pre[sx]=1;
 35   queue<int>Q;
 36   Q.push(sx);
 37  while(!Q.empty()){
 38      int d=Q.front();
 39      Q.pop();
 40      for(int i=head[d];i!=-1;i=edge[i].next    ){
 41         if(edge[i].f&&!pre[edge[i].v]){
 42             pre[edge[i].v]=pre[d]+1;
 43             Q.push(edge[i].v);
 44         }
 45      }
 46   }
 47  return pre[ex]>0;
 48 }
 49 int dinic(int flow,int ps){
 50     int f=flow;
 51      if(ps==ex)return f;
 52      for(int i=head[ps];i!=-1;i=edge[i].next){
 53         if(edge[i].f&&pre[edge[i].v]==pre[ps]+1){
 54             int a=edge[i].f;
 55             int t=dinic(min(a,flow),edge[i].v);
 56               edge[i].f-=t;
 57               edge[i^1].f+=t;
 58             flow-=t;
 59              if(flow<=0)break;
 60         }
 61
 62      }
 63       if(f-flow<=0)pre[ps]=-1;
 64       return f-flow;
 65 }
 66 int solve(){
 67     int sum=0;
 68     while(BFS())
 69         sum+=dinic(INF,sx);
 70     return sum;
 71 }
 72 int main() {
 73     int T,k,temp,sum,v0,v1,tt=1;
 74     scanf("%d",&T);
 75     while(T--) {
 76          scanf("%d%d%d%d",&n,&m,&v0,&v1);
 77          init();
 78          for(int i=1;i<=n;i++){
 79             for(int j=1;j<=m;j++){
 80                  scanf("%d",&mp[i][j]);
 81             }
 82          }
 83          for(int i=1;i<=n;i++){
 84             for(int j=1;j<=m;j++){
 85                 int a=(i-1)*m+j;
 86               add(0,a,abs(mp[i][j]-v0));
 87               add(a,n*m+1,abs(mp[i][j]-v1));
 88                 if(i<n){
 89                     int b=a+m;
 90                     add(a,b,abs(mp[i][j]-mp[i+1][j]));
 91                     add(b,a,abs(mp[i][j]-mp[i+1][j]));
 92                 }
 93                 if(j<m){
 94                     int b=a+1;
 95                     add(a,b,abs(mp[i][j]-mp[i][j+1]));
 96                     add(b,a,abs(mp[i][j]-mp[i][j+1]));
 97                 }
 98             }
 99          }
100          sx=0,ex=n*m+1;
101           if(tt>1)puts("");
102        printf("Case %d:\n%d\n",tt++,solve());
103     }
104     return 0;
105 }

时间: 2024-10-10 23:19:08

Energy Minimization的相关文章

An Experimental Comparison of Min-Cut/Max-Flow Algorithms for Energy Minimization in Vision

实现参考: http://blog.sina.com.cn/s/blog_60a0e97e0101bfj9.html 介绍流.割.最大流.最小割.最大流最小割定理.增广路径.残存网络.Ford-Fulkerson算法 https://blog.csdn.net/sinat_41613352/article/details/84481115 逻辑正确.表达清晰 https://blog.csdn.net/smartxxyx/article/details/9293665 理论正确.表达一般 原文地

朱松豪,你偷走了我的国奖梦!

摘要:南京邮电大学是一所历史悠久的名校,却被个别教师的劣行而玷污,不早日将其革除,南邮如何振兴?本文首先介绍了南邮的辉煌历史和卓越成就.然后就自动化学院朱松豪师门对国家奖学金近乎垄断的现状进行陈述,罗列其为了通过学生获取国家奖学金而做出的卑劣手段,陈列大量由其撰写而以学生为一作的垃圾论文.最后望人民群众发出正义的呼声,让败类滚出校园. 关键词:国家奖学金:朱松豪:败类: 南京邮电大学前身是1942年诞生于山东抗日根据地的战邮干训班,是我党.我军早期系统培养通信人才的学校之一.1949年8月,学校

总结一些机器视觉库

通用库/General Library OpenCV   无需多言. RAVL  Recognition And Vision Library. 线程安全.强大的IO机制.包含AAM. CImg  很酷的一个图像处理包.整个库只有一个头文件.包含一个基于PDE的光流算法. 图像,视频IO/Image, Video IO FreeImage DevIL ImageMagick FFMPEG VideoInput portVideo AR相关/Augmented Reality ARToolKit 

[转]计算机视觉、机器学习相关领域论文和源代码大集合

计算机视觉.机器学习相关领域论文和源代码大集合--持续更新…… [email protected] http://blog.csdn.net/zouxy09 注:下面有project网站的大部分都有paper和相应的code.Code一般是C/C++或者Matlab代码. 最近一次更新:2013-3-17 一.特征提取Feature Extraction: ·         SIFT [1] [Demo program][SIFT Library] [VLFeat] ·         PCA

转载:2013计算机视觉代码合集

转载,原文地址http://blog.csdn.net/daoqinglin/article/details/23607079 -------------------------------------------------------------------------- 来源: http://www.yuanyong.org/cv/cv-code-one.html http://www.yuanyong.org/cv/cv-code-two.html http://www.yuanyong

Latex制作beamer

Latex制作beamer latex beamer Beamer Theme Matrix网页给出了一般常用的主题和配色方案. tuwcvl这个主题比较简单,感觉比较适合用作实验室内的报告,可以自己修改下适合的logo. \documentclass{beamer} \usepackage{ctex}  \usetheme{tuwcvl}  \begin{document}  %%---------------------------------------------------  \tit

机器视觉开源代码集合

来源:http://xilinx.eetrend.com/article/8919 一.特征提取Feature Extraction: SIFT [1] [Demo program][SIFT Library] [VLFeat] PCA-SIFT [2] [Project] Affine-SIFT [3] [Project] SURF [4] [OpenSURF] [Matlab Wrapper] Affine Covariant Features [5] [Oxford project] MS

图像处理与计算机视觉基础,经典以及最近发展

*************************************************************************************************************** 在这里,我特别声明:本文章的源作者是   杨晓冬  (个人邮箱:[email protected]).原文的链接是 http://www.iask.sina.com.cn/u/2252291285/ish.版权归 杨晓冬 朋友所有. 我非常感谢原作者辛勤地编写本文章,并愿意共

CVPR 2015 papers

CVPR2015 Papers震撼来袭! CVPR 2015的文章可以下载了,如果链接无法下载,可以在Google上通过搜索paper名字下载(友情提示:可以使用filetype:pdf命令). Going Deeper With ConvolutionsChristian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke