AC日记——[ZJOI2006]物流运输 bzoj 1003
2024-09-08 14:09:38
思路:
最短路+dp;
节点在a-b天里不能使用
那么我们准备每一组a-b求一条最短路,如果没有,则用极大值表示;
cost[a,b]记录这个最短路;
然后,开始dp;
dp[i]=min(dp[i],dp[j]+cost[j+1][i]*(i-j)+k);
dp[i]表示前i天最小费用;
最后输出dp[n]-k;
来,上代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; #define ll long long ll n,m,k,e,map[][],cost[][],que[**],dp[]; bool if_[][]; inline void in(ll &now)
{
register char Cget=getchar();now=;
while(Cget>''||Cget<'') Cget=getchar();
while(Cget>=''&&Cget<='')
{
now=now*+Cget-'';
Cget=getchar();
}
} ll spfa(ll u,ll v)
{
ll dis[],can[],init[],h=,tail=;
for(ll i=;i<=m;i++) can[i]=true,dis[i]=0x7ffffff,init[i]=false;
for(ll i=u;i<=v;i++)
{
for(ll j=;j<=m;j++) if(if_[i][j]) can[j]=false;
}
que[]=,dis[]=,init[]=true;
while(h<tail)
{
ll now=que[h++];init[now]=false;
for(ll i=;i<=m;i++)
{
if(can[i]&&dis[i]>dis[now]+map[now][i])
{
dis[i]=dis[now]+map[now][i];
if(!init[i])
{
init[i]=true;
que[tail++]=i;
}
}
}
}
return dis[m];
} int main()
{
in(n),in(m),in(k),in(e);ll u,v,w;
memset(dp,/,sizeof(dp));
memset(map,/,sizeof(map));
while(e--)
{
in(u),in(v),in(w);
map[u][v]=map[v][u]=min(w,map[v][u]);
}
in(e);
while(e--)
{
in(w),in(u),in(v);
for(ll i=u;i<=v;i++) if_[i][w]=true;
}
for(ll i=;i<=n;i++)
{
for(ll j=i;j<=n;j++)
{
cost[i][j]=spfa(i,j);
}
}
dp[]=;
for(ll i=;i<=n;i++)
{
for(ll j=;j<i;j++)
{
dp[i]=min(dp[i],dp[j]+cost[j+][i]*(i-j)+k);
}
}
cout<<dp[n]-k;
}
最新文章
- .NET Core下的日志(1):记录日志信息
- python selenium中使用ddt进行数据驱动测试
- android典型监听事件实
- storm源码之巧用java反射反序列化clojure的defrecord获取属性值
- 每天一个linux命令(37)--iostat命令
- html之改变图片透明度而不改变文字的透明度--两种方法实现
- Android 为TV端助力
- WebPack命令执行的时候,其内部处理逻辑是什么
- build to win读后感
- easy ui Uncaught Error: cannot call methods on tooltip prior to initialization; attempted to call method &#39;hide&#39;
- CentOS7中替换安装python3.7.0
- canconfig 配置命令
- PHP漏洞-Session劫持
- php学习二:表达式
- PhoneGap 获得APP的VersionName
- ASP.NET读取RSS
- UltraISO制作启动盘及提取U盘为ISO镜像
- /sys/kernel/debug/gpio
- ExtJs工具篇(2)&mdash;&mdash;Aptana Studio 3 汉化
- net-snmp配置文件snmp.conf