题目:洛谷P3973、BZOJ3996。

题目大意:
给你n,参数b[][]和c[](里面的数均>0),要你求一个数组A[](0/1,1表示选择),已知:
1. 若同时选择X和Y,获得B[x][y]收益
2. 若选择了X,需要C[x]的代价
求最大的收益
解题思路:
我们将第一个条件转化为:若不同时选择X和Y,需要B[x][y]的代价。
然后,建最小割模。
将(i,j)看成一个点,从S向其连容量为B[i][j]+B[j][i](若i=j则只连B[i][j])。
将每个i看成一个点,向T连容量为C[i]的边。
然后因为选(i,j)必须要选i和j,所以从(i,j)分别向i和j连容量∞的边(i=j则只连一条)。
求出最小割,然后答案就是sum(B)-最小割。

C++ Code:

#include<bits/stdc++.h>
#define N 1005
#define INF 0x3f3f3f3f
int dis[N*N+N+5],iter[N*N+N+5],cnt=1,head[N*N+N+5],B[505][505],C[505],n,sm=0,level[N*N+N+5],q[7000005];
bool vis[N*N+N+5];
struct edge{
int from,to,cap,nxt;
}e[(N*N+N+5)<<2];
inline int readint(){
int c=getchar(),d=0;
for(;!isdigit(c);c=getchar());
for(;isdigit(c);c=getchar())
d=(d<<3)+(d<<1)+(c^'0');
return d;
}
inline void addedge(const int from,const int to,const int cap){
e[++cnt]=(edge){from,to,cap,head[from]};
head[from]=cnt;
e[++cnt]=(edge){to,from,0,head[to]};
head[to]=cnt;
}
void bfs(int s){
memset(level,-1,sizeof(level));
level[s]=0;
int l=0,r=1;
q[1]=s;
while(l!=r){
int u=q[l=l%7000000+1];
for(int i=head[u];i!=-1;i=e[i].nxt){
int v=e[i].to;
if(level[v]<0&&e[i].cap>0){
level[v]=level[u]+1;
q[r=r%7000000+1]=v;
}
}
}
}
int dfs(int u,int t,int f){
if(u==t)return f;
for(int& i=iter[u];i!=-1;i=e[i].nxt){
int v=e[i].to;
if(e[i].cap>0&&level[v]>level[u]){
int d=dfs(v,t,std::min(f,e[i].cap));
if(d){
e[i].cap-=d;
e[i^1].cap+=d;
return d;
}else level[v]=-1;
}
}
return 0;
}
int max_flow(int s,int t){
int flow=0;
while(1){
bfs(s);
if(level[t]<0)return flow;
memcpy(iter,head,sizeof(iter));
int f;
while(f=dfs(s,t,INF))flow+=f;
}
}
int main(){
n=readint();
memset(head,-1,sizeof head);
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)sm+=(B[i][j]=readint());
for(int i=1;i<=n;++i)C[i]=readint();
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j){
int flow=(i==j)?B[i][i]:B[i][j]+B[j][i];
addedge(0,(i-1)*n+j,flow);
addedge((i-1)*n+j,n*n+i,INF);
if(i!=j)addedge((i-1)*n+j,n*n+j,INF);
}
for(int i=1;i<=n;++i)addedge(n*n+i,n*n+n+1,C[i]);
printf("%d\n",sm-max_flow(0,n*n+n+1));
}

[TJOI2015]线性规划的更多相关文章

  1. 使用Python scipy linprog 线性规划求最大值或最小值(使用Python学习数学建模笔记)

    函数格式 scipy.optimize.linprog(c, A_ub=None, b_ub=None, A_eq=None, b_eq=None, bounds=None, method='simp ...

  2. java 线性规划 和lingo 比较

    model:max=13*A+ 23*B; 5*A + 15*B <480 ; 4*A + 4 *B <160 ; 35* A + 20 *B <1190 ; end Variabl ...

  3. 对偶理论、拉格朗日对偶问题、LP线性规划对偶性质

    Lagrange 对偶问题 定义其的对偶问题: Lagrange函数 考虑线性规划问题 若取集合约束D={x|x≥0},则该线性规划问题的Lagrange函数为 线性规划的对偶问题为: 对偶定理原问题 ...

  4. 用Microsoft.Solver.Foundation进行线性规划,为WPF应用添加智能

    在管理信息系统的开发过程中,往往会涉及到一些线性规划数学模型,例如资源配置优化.微软的Microsoft.Solver.Foundation是一个数学库,可以很好的对线性规划问题进行求解.关于它的细节 ...

  5. 【线性规划与网络流 24题】已完成(3道题因为某些奇怪的原因被抛弃了QAQ)

    写在前面:SDOI2016 Round1滚粗后蒟蒻开始做网络流来自我拯救(2016-04-11再过几天就要考先修课,现在做网络流24题貌似没什么用←退役节奏) 做的题目将附上日期,见证我龟速刷题. 1 ...

  6. matlab绘图--线性规划图解法示意

    matlab绘图--线性规划图解法示意 图解法 matlab绘图 区域填充 线性规划问题: matlab绘图 L1=[4,0;4,4];  plot(L1(:,1),L1(:,2));hold on  ...

  7. hdu 4091 线性规划

    分析转自:http://blog.csdn.net/dongdongzhang_/article/details/7955136 题意 :  背包能装体积为N,  有两种宝石, 数量无限, 不能切割. ...

  8. 建模算法(一)——线性规划

    一.解决问题 主要是安排现有资源(一定),取得最好的效益的问题解决,而且约束条件都是线性的. 二.数学模型 1.一般数学模型 2.MATLAB数学模型 其中c,x都是列向量,A,Aeq是一个合适的矩阵 ...

  9. UVA 10498 Happiness(线性规划-单纯形)

    Description Prof. Kaykobad has given Nasa the duty of buying some food for the ACM contestents. Nasa ...

随机推荐

  1. 【JavaScript框架封装】JavaScript中的文本字符串的转义和反转义的实现

    如果是想把本地的一个字符串串存到服务器,再次取出来的还是文本的话,就需要这个文本字符串的转义: /** * 对一个字符串的转义 * @param str * @return {*} */ functi ...

  2. hdu 4826

    hdu 4826 题意 度度熊是一只喜欢探险的熊,一次偶然落进了一个 $ m * n $ 矩阵的迷宫,该迷宫只能从矩阵左上角第一个方格开始走,只有走到右上角的第一个格子才算走出迷宫,每一次只能走一格, ...

  3. 【Computer Vision】 复现分割网络(1)——SegNet

    目录 Tags: ComputerVision 编译 数据处理 训练结果 Reference Tags: ComputerVision 编译 src/caffe/layers/contrastive_ ...

  4. Linux下MATLAB安装及使用

    安装过程 1.在在media目录下创建matlab文件夹,并挂载R2017b_glnxa64_dvd1.iso镜像文件 sudo mkdir /media/matlab sudo mount -t a ...

  5. powershell远程访问

    在服务器上打开powershell 1.winrm quickconfig 2.Enable-PSRemoting -Force 在客户端上打开powershell 1.Enter-PSSession ...

  6. BA-siemens-BA模块特性

    PXC24(包含UEC24的模块特性) DO点可以接220vac的电压,渠道人员告知电流不要超过2A AO点只能输出0-10V的电压,不能输出4-20ma的电流,说明书上是错误的 AO点输出10v失败 ...

  7. 【基础训练】HDOJ2032杨辉三角

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWEdzaWxlbmNl/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...

  8. wifi共享精灵2014.04.25.001已经更新,wifi热点中文名走起!

    五一回来后,有个惊喜,wifi共享精灵有了最新动向.不晓得wifi共享精灵是啥的朋友,我来解释下,它就相当于一个无线路由器.说起来,Wifi共享精灵正式版2014.04.25.001(http://w ...

  9. ubuntu中写一个shell脚本的过程

    gedit hello.sh ,然后输入 #!/bin/bash echo "Hello world!" chmod +x hello.sh ./hello.sh

  10. Apache + Tomcat 负载均衡 session复制

    转自:http://blog.csdn.net/cssmhyl/article/details/8455400 http://snowolf.iteye.com/blog/743611 Apache  ...