首页 > 其他分享 >做题记录整理dp15 P1772. [ZJOI2006] 物流运输(2022/9/28)

做题记录整理dp15 P1772. [ZJOI2006] 物流运输(2022/9/28)

时间:2022-09-28 22:11:06浏览次数:84  
标签:vis2 cnt int 28 2022 ZJOI2006 for1 dp dis

P1772. [ZJOI2006] 物流运输

图论+dp
首先看数据范围这么小,其实就可以猜到很可能是先把i到j天的最短路都求出来
然后就会发现dp方程很简单了

dp[i]=min(dp[j]+最短路[j+1][i]*(i-j)+k)

dp,i就是前i天的最小代价
选择在第j天改道
然后还有个坑点就是要开long long(。。。这个是看题解才知道的)

#include<bits/stdc++.h>
#define for1(i,a,b) for(ll i = a;i<=b;i++)
#define ll long long
#define mp(a,b) make_pair(a,b)
using namespace std;
ll d,cnt,hd[105],dis[105],vis[105],vis2[105];
ll jl[505][505],dp[505],cl[25][505];
ll n,m,k,e,t;
priority_queue<pair <int,int> , vector<pair <int,int> >, greater<pair <int,int> > > q;
const ll inf=1e8+5;
struct node{
	int to;
	int nex;
	int w;
}a[10005];
void ru(int x,int y,int z){
	a[++cnt].to=y;
	a[cnt].w=z;
	a[cnt].nex=hd[x];
	hd[x]=cnt;
}
void dij(){
	for1(i,1,m) dis[i]=inf,vis[i]=0;
	while(!q.empty()) q.pop();
	dis[1]=0;
	q.push(mp(0, 1));
	while(!q.empty())
	{
		int x = q.top().second;
		q.pop();
		if (vis[x] == 1)
			continue;
		vis[x] = 1;
		for(int i=hd[x];i;i=a[i].nex)
		{
			int v=a[i].to;
			if(vis2[v]) continue;
			if(dis[v]>dis[x]+a[i].w)
			{
				dis[v]=dis[x]+a[i].w;
				q.push(mp(dis[v], v));
			}
		}
	}
}
int main()
{
	cin>>n>>m>>k>>e;
	ll x,y,z;
	for1(i,1,e)
	{
		scanf("%lld%lld%lld",&x,&y,&z);
		ru(x,y,z);
		ru(y,x,z);
	}
	cin>>d;
	for1(i,1,d)
	{
		scanf("%lld%lld%lld",&t,&x,&y);
		for1(j,x,y) cl[t][j]=1;
	}
	memset(dp,0x3f,sizeof(dp));
	for1(i,1,n)
		for1(j,1,n)
		{
			memset(vis2,0,sizeof(vis2));
			for1(r,i,j)
				for1(l,1,m)
					if(cl[l][r]) vis2[l]=1;
			dij();
			jl[i][j]=dis[m];
		}

	for1(i,1,n)
	{
		dp[i]=jl[1][i]*i;
		for(int j=i-1;j>=0;j--)
			dp[i]=min(dp[i],dp[j]+jl[j+1][i]*(i-j)+k);
	}
	printf("%lld",dp[n]);
    return 0;
}

标签:vis2,cnt,int,28,2022,ZJOI2006,for1,dp,dis
From: https://www.cnblogs.com/yyx525jia/p/16739754.html

相关文章

  • 【C语言】Visual Studio 2022开发环境搭建
    1.下载VisualStudio2022VisualStudio的官方网站:​​https://visualstudio.microsoft.com/​​点击下载VisualStudio社区版Community2.安装VisualStudio2022双击Visual......
  • 2022保研经历-有删减
    2022保研经历我也知道大家仅仅是想看题目而已。个人基本情况下面是我的个人情况,可以帮助大家试探各个学校报名的门槛。因为夏令营过后,有学长延毕了,所以排名提高一丢丢......
  • 2022-09-28 依赖注入
    目录spring依赖注入方式setter注入简单类型引用类型构造器注入引用类型(了解)简单类型(了解)问题,解决方法方式一方式二依赖注入方式选择依赖自动装配自动装配方式有哪些依......
  • 初学C语言笔记220928
    void*p  强制类型转换成int型指针,再解引用voidqsort((void*base,//指向要排序的数组的第一个元素的指针size_tnitems,,//数组中的元素个数......
  • 2022-09-28 第六小组 张宁杰 Spring框架_01
    bean的生命周期生命周期:从创建到消亡的完整过程bean生命周期:bean从创建到销毁的整体过程bean生命周期控制:在bean创建后到销毁前做一些事情具体描述初始化容器创建......
  • USACO 2022赛季 简要题解
    DECGOLD-A-PairedUpG有\(n\)只奶牛,第\(i\)只在位置\(x_i\),有重量\(y_i\)。求在满足匹配要求的情况下,非匹配的奶牛的重量之和的最大/最小值。两只奶牛能......
  • flower in 9.28
    造了一个幂塔。但是vscode上出现了奇怪的现象。在洛谷博客上出现了更加诡异的现象。cnblogs还没试过。\[2^{2^{2^{2^{2^{2^{2^{2^{2^{2^{2^{2^{2^{2^{2^{2^{2^{2^{2^{2^{2......
  • 【闲话】2022.09.28
    又颓了一会KaTeX,真开心今天没有考试,于是自己切了会CDQ,切了会莫反,又思考了一下如何做可持久化字典树。没有切基环树,太难了,对于我这种蒟蒻而言。发现自己还想切一个由......
  • flower in 9.28
    造了一个幂塔。但是vscode上出现了奇怪的现象。在洛谷博客上出现了更加诡异的现象。cnblogs还没试过。\[2^{2^{2^{2^{2^{2^{2^{2^{2^{2^{2^{2^{2^{2^{2^{2^{2^{2^{2^{2^{2......
  • 9.28
    今日内容1.while循环2.for循环3.range方法while循环while条件: 条件成立之后执行的子代码(循环体代码)1.先判断条件是否成立2.如果成立则执行循环体代码3.循环......