当前位置: 首页 > news >正文

luogu 1772 物流运输 ZJOI2006 spfa+dp

主要路径上存在时间限制(消失)

因为数据较小(点数较小),利用限制条件在规定时间内分别spfa,(也可用floyd)

再通过dp取最优值

#include<bits/stdc++.h>
#define ll long long 
#define rep(i,x,y) for(register int i=x;i<=y;i++)
using namespace std;
inline int read(){
    int x=0,f=1;char ch=getchar();
    while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
    while(isdigit(ch)){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
    return x*f;}
const int N=30;
const int M=1000;
const int T=110;
const int inf=0x3f3f3f3f;

int day,n,rec,m,d,t,dis[N];
int close[N][T],now[N],vis[N];
ll cost[T][T],f[T];

int head[N],tot;
struct node{int v,w,next;}e[M];
void insert(int u,int v,int w){
    e[++tot]=(node){v,w,head[u]};head[u]=tot;
    e[++tot]=(node){u,w,head[v]};head[v]=tot;}

int spfa(int x,int y){
    memset(dis,inf,sizeof dis);
    memset(vis,0,sizeof vis);
    memset(now,0,sizeof now);
    
    rep(i,1,n)rep(j,x,y)
    if(close[i][j]) now[i]=1;
    
    queue<int> q;
    q.push(1);dis[1]=0;vis[1]=1;
    while(!q.empty()){
        int u=q.front();q.pop();vis[u]=0;
        for(int i=head[u];i;i=e[i].next){
            int v=e[i].v,w=e[i].w;
            if(now[v]) continue;
            if(dis[u]+w<dis[v]){
                dis[v]=dis[u]+w;
                if(!vis[v]) vis[v]=1,q.push(v);
            }
        }
    }return dis[n];
}
int main(){
    day=read(),n=read(),rec=read(),m=read();
    rep(i,1,m){
        int u=read(),v=read(),w=read();insert(u,v,w);}
    t=read();
    rep(i,1,t){
        int p=read(),u=read(),v=read();
        rep(j,u,v) close[p][j]=1;}
    rep(i,1,day)rep(j,1,day)
        cost[i][j]=spfa(i,j);
    rep(i,1,day){ 
        f[i]=(ll)cost[1][i]*i;
        rep(j,1,i)
        f[i]=min(f[i],f[j]+(ll)cost[j+1][i]*(i-j)+rec);}
    printf("%lld\n",f[day]); return 0;
}

 

转载于:https://www.cnblogs.com/asdic/p/9603575.html

相关文章:

  • Java快速教程
  • python接口自动化测试二十八:连接SQL sever操作
  • python中如何去掉字符串中的空格
  • jupyter、flask、tornado、djiango安装
  • BZOJ2768 JLOI2012冠军调查(最小割)
  • Js判断参数(String,Array,Object)是否为undefined或者值为空
  • 图片合成
  • 对象 get和set方法
  • spsss基本统计分析操作攻略
  • liunx环境下mongodb3.2升级至3.6
  • Keil MDK下如何设置非零初始化变量(复位后变量值不丢失)
  • web服务器下出现大量TIME_WAIT
  • 正则 常见2
  • js限制文本框只能输入数字方法小结
  • VC++文件操作之最全篇
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 【Linux系统编程】快速查找errno错误码信息
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • Java反射-动态类加载和重新加载
  • Java应用性能调优
  • Linux链接文件
  • Material Design
  • MySQL几个简单SQL的优化
  • WebSocket使用
  • 从输入URL到页面加载发生了什么
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 聊聊flink的BlobWriter
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 我看到的前端
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #pragam once 和 #ifndef 预编译头
  • #Z0458. 树的中心2
  • #宝哥教你#查看jquery绑定的事件函数
  • $.ajax()参数及用法
  • (1) caustics\
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (zt)最盛行的警世狂言(爆笑)
  • (附源码)springboot教学评价 毕业设计 641310
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • .cfg\.dat\.mak(持续补充)
  • .Net 6.0 处理跨域的方式
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET连接数据库方式
  • .so文件(linux系统)
  • /etc/sudoers (root权限管理)
  • @JsonFormat与@DateTimeFormat注解的使用
  • [ 蓝桥杯Web真题 ]-布局切换
  • [Angular] 笔记 18:Angular Router
  • [BT]小迪安全2023学习笔记(第15天:PHP开发-登录验证)