zoukankan      html  css  js  c++  java
  • BZOJ3112 ZJOI2013 防守战线

    传送门 (消失的题面)

    洛咕 (这里还是有题面的233)

    还是根据线性规划列个柿子然后对偶一下就可以了

    对偶一定想清楚行列(

    附代码。

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    #define inf 20021225
    #define ll long long
    #define db double
    #define mxn 1010
    #define mxm 10100
    #define eps 1e-7
    using namespace std;
    
    db M[mxn][mxm];
    int n,m;// n行数 m列数 
    
    void privot(int x,int y)
    {
    	db tmp=1.0/M[x][y];M[x][y]=1.0;
    	for(int i=0;i<=m;i++)	M[x][i]*=tmp;
    	for(int i=0;i<=n;i++)
    	{
    		if(i==x||abs(M[i][y])<eps)	continue;
    		db t=M[i][y]; M[i][y]=0.0;
    		for(int j=0;j<=m;j++)
    			M[i][j]-=t*M[x][j];
    	}
    }
    
    bool simplex()
    {
    	while(1)
    	{
    		int x=0,y=0;db mn=1e15;
    		for(int i=1;i<=m;i++)	if(M[0][i]>eps){y=i;break;}
    		if(!y)	return true;
    		for(int i=1;i<=n;i++)
    			if(M[i][y]>eps&&M[i][0]/M[i][y]<mn)
    				mn=M[i][0]/M[i][y],x=i;
    		if(!x){printf("Unbounded
    ");return false;}
    		privot(x,y);
    	}
    }
    
    int main()
    {
    	int l,r,v;
    	scanf("%d%d",&n,&m);
    	for(int i=1;i<=n;i++)	scanf("%lf",&M[i][0]);
    	for(int i=1;i<=m;i++)
    	{
    		scanf("%d%d%d",&l,&r,&v);M[0][i]=v;
    		for(int j=l;j<=r;j++)	M[j][i]=1.0;
    	}
    	if(simplex())
    		printf("%.0lf
    ",-M[0][0]);
    	return 0;
    }
  • 相关阅读:
    struts2基础
    hibernate框架基础
    Django的模板层
    HBuilder无法连接夜神模拟器的解决办法
    Django的视图层
    Django的路由层
    Django简介
    http协议
    web应用
    Mongodb之增删改查
  • 原文地址:https://www.cnblogs.com/hanyuweining/p/10321936.html
Copyright © 2011-2022 走看看