Description

 其中: Auv是与Aij相邻的像素(为了简化,认为(i-1,j),(i+1,j,(i,j-1),(i,j+1)为相邻元素); Wij取值0或者1,表示Aij修改后取V0或者V1. E的定义直观上的理解是,当修改了A之后,各像素上的值与原来的值相差了多少,以及相邻的像素对比程度的变化.为了图像的保真度,我们希望E的值越小越好.

Input

第一行二个整数N,M(1<=N,M<=35) 第二行二个整数V0,V1 接下来N行M列,对应矩阵元素Aij

Output

一个数E,表示最小可能的估价值

Sample Input

1 2
0 255
10 20

Sample Output

30

题解:

二元组建图:http://www.cnblogs.com/chenyushuo/p/5146626.html

直接二元组建图即可,没有坑。。。。。

code:

 #include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<algorithm>
#define maxn 1600
#define maxm 20000
#define inf 1061109567
using namespace std;
char ch;
bool ok;
void read(int &x){
for (ok=,ch=getchar();!isdigit(ch);ch=getchar()) if (ch=='-') ok=;
for (x=;isdigit(ch);x=x*+ch-'',ch=getchar());
if (ok) x=-x;
}
int n,m,v0,v1,a[][],idx,pos[][];
struct flow{
int s,t,tot,now[maxn],son[maxm],pre[maxm],val[maxm];
int dis[maxn],head,tail,list[maxn];
bool bo[maxn];
void init(){s=,t=n*m+,tot=,memset(now,,sizeof(now));}
void put(int a,int b,int c){pre[++tot]=now[a],now[a]=tot,son[tot]=b,val[tot]=c;}
void add(int a,int b,int c){put(a,b,c),put(b,a,);}
bool bfs(){
memset(bo,,sizeof(bo));
head=,tail=,list[]=s,dis[s]=,bo[s]=;
while (head<tail){
int u=list[++head];
for (int p=now[u],v=son[p];p;p=pre[p],v=son[p])
if (val[p]&&!bo[v]) bo[v]=,dis[v]=dis[u]+,list[++tail]=v;
}
return bo[t];
}
int dfs(int u,int rest){
if (u==t) return rest;
int ans=;
for (int p=now[u],v=son[p];p&&rest;p=pre[p],v=son[p])
if (val[p]&&dis[v]==dis[u]+){
int d=dfs(v,min(rest,val[p]));
val[p]-=d,val[p^]+=d,ans+=d,rest-=d;
}
if (!ans) dis[u]=-;
return ans;
}
int dinic(){
int ans=;
while (bfs()) ans+=dfs(s,inf);
return ans;
}
}f;
const int dx[]={,};
const int dy[]={,};
int main(){
read(n),read(m),read(v0),read(v1),f.init();
for (int i=;i<=n;i++) for (int j=;j<=m;j++) read(a[i][j]),pos[i][j]=++idx;
for (int i=;i<=n;i++) for (int j=;j<=m;j++){
f.add(f.s,pos[i][j],abs(a[i][j]-v0)),f.add(pos[i][j],f.t,abs(a[i][j]-v1));
for (int k=;k<;k++){
int x=i+dx[k],y=j+dy[k];
if (x<=||x>n||y<=||y>m) continue;
f.add(pos[i][j],pos[x][y],abs(a[i][j]-a[x][y])),f.add(pos[x][y],pos[i][j],abs(a[i][j]-a[x][y]));
}
}
printf("%d\n",f.dinic());
return ;
}

bzoj1311: 最优压缩的更多相关文章

  1. [大牛翻译系列]Hadoop(18)MapReduce 文件处理:基于压缩的高效存储(一)

    5.2 基于压缩的高效存储 (仅包括技术25,和技术26) 数据压缩可以减小数据的大小,节约空间,提高数据传输的效率.在处理文件中,压缩很重要.在处理Hadoop的文件时,更是如此.为了让Hadoop ...

  2. asp.net core 系列之Performance的 Response compression(响应压缩)

    本文,帮助了解响应压缩的一些知识及用法(大部分翻译于官网,英文水平有限,不准确之处,欢迎指正). 什么是响应压缩?响应压缩简单的说就是为了减少网络带宽,而把返回的响应压缩,使之体积缩小,从而加快响应的 ...

  3. [MySQL Reference Manual]14 InnoDB存储引擎

    14 InnoDB存储引擎 14 InnoDB存储引擎 14.1 InnoDB说明 14.1.1 InnoDB作为默认存储引擎 14.1.1.1 存储引擎的趋势 14.1.1.2 InnoDB变成默认 ...

  4. 频繁项集挖掘之apriori和fp-growth

    Apriori和fp-growth是频繁项集(frequent itemset mining)挖掘中的两个经典算法,虽然都是十几年前的,但是理解这两个算法对数据挖掘和学习算法都有很大好处.在理解这两个 ...

  5. 【转】winrar命令行详解

    从命令行也可以运行 WinRAR 命令,常规的命令行语法描述如下: WinRAR  <命令> -<开关1> -<开关N> <压缩文件> <文件.. ...

  6. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  7. (转)KL散度的理解

    KL散度(KL divergence) 全称:Kullback-Leibler Divergence. 用途:比较两个概率分布的接近程度.在统计应用中,我们经常需要用一个简单的,近似的概率分布 f * ...

  8. 为你的Go应用创建轻量级Docker镜像?

    缩小Go二进制文件大小 环境 youmen@youmendeMacBook-Pro % gcc -dumpversion 12.0.5 youmen@youmendeMacBook-Pro % go ...

  9. hbase性能调优之压缩测试

    文章概述: 1.顺序写 2.顺序读 3.随机写 4.随机读 5.SCAN数据 0 性能测试工具 hbase org.apache.hadoop.hbase.PerformanceEvaluation ...

随机推荐

  1. config 数据库字符串的读取、修改 分类: WebForm 2014-12-16 10:24 203人阅读 评论(0) 收藏

    config数据库字符串: <connectionStrings>   <add name="MyWebDataString" connectionString= ...

  2. Myeclipse2013 SVN安装方法

    1. 打开Help下的Install from Site 2. 弹出窗口,如下图: 3. 点击Add标签,如图: 在对话框Name输入Svn, URL中输入:http://subclipse.tigr ...

  3. 海思android4.4 SDK编译Latin输入法

    原来的HiSTBAndroidV500R001C01SPC020\device\hisilicon\bigfish\packages\apps\HiLatinIME\Android.mk内容例如以下: ...

  4. JavaCodeTra 猴子选猴王 约瑟夫循环

    之前用的是循环链表,java刚学,不知道怎么用链表.用个小算法吧 代码: import java.util.Scanner; /** * */ /** * @author john * @约瑟夫循环/ ...

  5. java数组使用技巧

    参考网上文章,总结了一下java数组使用技巧,如下: package com.beijing.array; import java.nio.ByteBuffer; import java.util.A ...

  6. Java 自带MD5加密 Demo

    package demo; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; pub ...

  7. shell入门之函数应用 分类: 学习笔记 linux ubuntu 2015-07-10 21:48 77人阅读 评论(0) 收藏

    最近在学习shell编程,文中若有错误的地方还望各位批评指正. 先来看一个简单的求和函数 #!/bin/bash #a test about function f_sum 7 8 function f ...

  8. CentOS 6.7 编译安装Nginx 1.8.0

    1.配置编译环境 yum update && yum upgrade yum groupinstall "Development Tools" 或者 yum ins ...

  9. HDU 4288 Coder(线段树)

    题意: 给定三种操作 1. add x 向序列中添加x,添加之后序列还保持有序 2. del x  删除序列中值为x的元素 3. sum  求下边模5等于3的元素和 思路: 直接暴力也可以过,就是看暴 ...

  10. poj 3463 Sightseeing(次短路+条数统计)

    /* 对dij的再一次理解 每个点依旧永久标记 只不过这里多搞一维 0 1 表示最短路还是次短路 然后更新次数相当于原来的两倍 更新的时候搞一下就好了 */ #include<iostream& ...