zoukankan      html  css  js  c++  java
  • BZOJ 1003 ZJOI2006 物流运输trans 动态规划+SPFA

    标题效果:给定一个无向图。输送n日,有一天的某一时刻不能去,更换行考虑k,求总成本

    一阶cost[i][j]用于第一i为了天j天正在同一航线的最低消费 这种利用SPFA处理

    然后就是移动的法规问题 订购f[i]至1~i最低消费天

    然后,f[i]=min{ f[j]+cost[j+1][i]+k } ( 0<=j<i )

    注意m和n别写反

    乘天数之前要特判是不是正无穷

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    struct abcd{
    	int to,f,next;
    }table[10000];
    int head[30],tot;
    int n,m,_k,e,d,cost[110][110];
    bool ban[30][110],unusable[30];
    int q[65540],f[110],v[30];
    unsigned r,h;
    void SPFA()
    {
    	int i;
    	memset(f,0x3f,sizeof f);
    	q[++r]=1;f[1]=0;
    	while(r!=h)
    	{
    		int x=q[++h];
    		v[x]=0;
    		for(i=head[x];i;i=table[i].next)
    			if(!unusable[table[i].to])
    				if(f[x]+table[i].f<f[table[i].to])
    				{
    					f[table[i].to]=f[x]+table[i].f;
    					if(!v[table[i].to])
    						v[table[i].to]=1,q[++r]=table[i].to;
    				}
    	}
    }
    void Add(int x,int y,int z)
    {
    	table[++tot].to=y;
    	table[tot].f=z;
    	table[tot].next=head[x];
    	head[x]=tot;
    }
    int main()
    {
    	int i,j,k,x,y,z;
    	cin>>n>>m>>_k>>e;
    	for(i=1;i<=e;i++)
    	{
    		scanf("%d%d%d",&x,&y,&z);
    		Add(x,y,z);
    		Add(y,x,z);
    	}
    	cin>>d;
    	for(i=1;i<=d;i++)
    	{
    		scanf("%d%d%d",&z,&x,&y);
    		for(j=x;j<=y;j++)
    			ban[z][j]=1;
    	}
    	for(i=1;i<=n;i++)
    		for(j=i;j<=n;j++)
    		{
    			memset(unusable,0,sizeof unusable);
    			for(x=2;x<m;x++)
    				for(k=i;k<=j;k++)
    					if(ban[x][k])
    					{
    						unusable[x]=1;
    						break;
    					}
    			SPFA();
    			cost[i][j]=f[m]*(f[m]>=0x3f3f3f3f?

    1:j-i+1); } memset(f,0x3f,sizeof f); f[0]=0; for(i=1;i<=n;i++) for(j=0;j<i;j++) f[i]=min(f[i],f[j]+cost[j+1][i]+_k); cout<<f[n]-_k<<endl; }



    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    solr7.7.0 添加core (二)
    centos 安装solr7.7+tomcat8.5.31+jdk1.8 环境搭建(一)
    springboot 切面编程 日志模块
    Mysql 优化
    mysql查询某个字段中是否有重复的值
    php for循环字母
    layui.table.toolbar里的内容加判断
    phpmyadmin 导入大文件配置
    解决laravel5.2 使用ajax时的 VerifyCsrfToken问题
    火狐浏览器禁止缓存
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4912134.html
Copyright © 2011-2022 走看看