Codeforces Round #374 (Div. 2) C. Journey DPor最短路

Ubuntu 14.04 上 Mesosphere 生产集群部署与 ZooKeeper 强一致性配置 ZooKeeper 是分布式系统中实现强一致性的核心协调服务,其原理基于 ZAB 协议,通过法定票数(quorum)机制保障容错与高可用。在遗留系统运维场景中,ZooKeeper 常作为 Mesosphere DC/OS 的元数据中枢,承担服务发现、Leader 选举与状态同步等关键职能。其技术价值在于提供低延迟、可验证的分布式共识能力,广泛应用于政务云、金融核心、电信网管等对稳定性要求严苛的生产环境。本文聚焦 Ubuntu 14.04 这一长期服役的操作系统基线,深入解析 ZooKeeper 集群的节点规 阅读详情

题意

给你一个n点m边的图,让你从1走到n,找到一条经过尽量多点的路径,且路径边权和小于等于T

然后输出路径。

分析:自己原本打算5000*5000×vector 果断爆了。。
然后用最短路的方式,dp【Node】里面记录cost和num,又在case35TLE。

  1. 看了别人,还是要好好学学记录路径的方法。。。
  2. 2.

别人的代码。。400ms
最短路spfa(一敲)220600 KB (所以其实是卡着空间过的。。把一个东西改为bool。。。

#include<bits/stdc++.h>

using namespace std;

#define LL long long
#define MP(a,b) make_pair(a,b)
#define mem(a,b) memset(a,b,sizeof(a))
#define REP(i,a,b) for(int i=a;i<=b;++i)
#define FOR(i,a,b) for(int i=a;i<b;++i)
#define pii pair<int,int>
#define sf scanf
#define pf printf

const int maxn = 5000;

int n, m, lim;
int h[maxn+5], e[maxn+5], cost[maxn+5], nex[maxn+5];
int dis[maxn+3][maxn+3];
char inq[maxn+3][maxn+3];
int pre[maxn+3][maxn+3];
int sta[maxn+3];

int main()
{
    //freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    int u, v, w;
    sf("%d%d%d", &n, &m, &lim);
    REP(i,1,m)
    {
        sf("%d%d%d", &u, &v, &w);
        e[i] = v, cost[i] = w, nex[i] = h[u], h[u] = i;
    }
    pii tmp, tmp2;
    int dist;
    queue<pii> que;
    mem(dis, 0x7f);
    dis[1][1] = 0, inq[1][1] = 1, pre[1][1] = 0;
    que.push( MP(1,1) );
    while(!que.empty())
    {
        tmp = que.front(); que.pop();
        inq[tmp.first][tmp.second] = 0;
        int &x = tmp.first;
        for(int i=h[x]; i; i=nex[i]) {
            tmp2.first = e[i];
            tmp2.second = tmp.second+1;
            dist = dis[x][tmp.second] + cost[i];
            if(dist > lim) continue;
            if(dist < dis[tmp2.first][tmp2.second]) {
                dis[tmp2.first][tmp2.second] = dist;
                pre[tmp2.first][tmp2.second] = x;
                if(!inq[tmp2.first][tmp2.second]) {
                    inq[tmp2.first][tmp2.second] = 1;
                    que.push(tmp2);
                }
            }
        }
    }
    int ans, now;
    for(int i=n; i>=2; --i)
        if(dis[n][i] <= lim)
        {
            pf("%d\n", ans=i);
            break;
        }
    now = n;
    while(now)
    {
        sta[++sta[0]] = now;
        now = pre[now][ans--];
    }
    for(int i=sta[0]; i>=1; --i)
    {
        if(i<sta[0]) pf(" ");
        pf("%d", sta[i]);
    }
    pf("\n");
    return 0;
}

还有。。62ms

记录后继+ dp

#include <bits/stdc++.h>  
#define pr(x) cout << #x << "= " << x << "  " ;  
#define pl(x) cout << #x << "= " << x << endl;  
#define ll __int64  
#define mst(ss,b) memset(ss,b,sizeof(ss));  
using  namespace  std;  
const int N=5050;  
const int inf=0x3f3f3f3f;  

int n, m, T;  
int f[N][N];//f[i][j]表示当前在点i,接下来经过j个点(包括自己)到n点的最小距离  
short nxt[N][N];//nxt[i][j]表示当前在点i,接下来经过j个点(包括自己)到n点的后继  
vector< pair<int,int> >a[N];  
bool vis[N];  
void dfs(int x){  
  if (vis[x])return; vis[x] = 1;  
  for (auto it : a[x]){  
    dfs(it.first);  
    for (int i = 2; i <= n; ++i){  
      int dis = f[it.first][i - 1] + it.second;  
      if (dis < f[x][i]){  
        f[x][i] = dis;  
        nxt[x][i] = it.first;  
      }  
    }  
  }  
}  

void print(){  
  for (int i = n; ; --i)if (f[1][i] <= T){  
    printf("%d\n", i);  
    int x = 1; printf("%d ", x);  
    while (x != n){  
      x = nxt[x][i--];  
      printf("%d ", x);  
    }puts("");  
    break;  
  }  
}  

int main(){  
  while(~scanf("%d%d%d",&n, &m, &T)){  
    for (int i = 1; i <= n; ++i)a[i].clear(), vis[i] = 0;  
    for (int i = 1; i <= m; ++i){  
      int x, y, z;  
      scanf("%d%d%d", &x, &y, &z);  
      if (y == 1 || x == n)continue;  
      a[x].push_back({ y,z });  
    }  
    mst(f, inf);  
    f[n][1] = 0; vis[n] = 1;  
    dfs(1);  
    print();  
  }  
  return 0;  
}  
如何用谷歌插件Apollo.io高效开发客户?手把手教你避开常见坑点 本文详细介绍了如何利用谷歌插件Apollo.io高效开发外贸客户,包括核心功能解析、免费额度最大化利用策略、多插件协同技巧以及常见陷阱规避方法。通过Apollo.io的智能匹配算法和庞大数据库,外贸从业者可以精准锁定目标客户,提升开发效率。 阅读详情

相关推荐

避坑指南:在Ubuntu 20.04上从零部署IS-Fusion环境(含CUDA 11.1和PyTorch 1.10.1配置)

本文提供了在Ubuntu 20.04系统上从零部署IS-Fusion 3D目标检测环境的详细避坑指南。内容涵盖CUDA 11.1、PyTorch 1.10.1、spconv等核心组件的精确版本安装与兼容性配置,并指导如何准备nuScenes数据集及启动模型训练,旨在帮助研究者和开发者高效搭建稳定的多模态融合算法开发环境。

gitlab7runner的博客 553

CF #374 (Div. 2) C. Journey dp

1、CF #374 (Div. 2) C. Journey 2、总结:好题,这一道题,WA,MLE,TLE,RE,各种姿势都来了一遍。。 3、题意:有向无环图,找出第1个点到第n个点的一条路径,经过的点数要最多。 #include<bits/stdc++.h> #define F(i,a,b) for (int i=a;i<b;i++) #defi...

weixin_30507269的博客 140

QMT中ContextInfo的使用注意

QMT中ContextInfo下声明的全局变量的使用注意事项

路在何方 2810

Codeforces Round #374 (Div. 2) C. Journey DP

&#13; C. Journey&#13; 链接:&#13; http://codeforces.com/contest/721/problem/C&#13; 题意:&#13; 给你一个n点m边的图,让你从1走到n,找到一条经过尽量多点的路径,且路径边权和小于等于T&#13; 然后输出路径。&#13; 题解:&#13; 直接DP,DP[i][j]表示在i点,当前经过了j个点的...

花海 201

【ros2】ros2_control 全面解析与实战指南

ros2_control 是 ROS2 生态中用于机器人实时控制的核心框架,旨在统一硬件接入接口、复用控制算法,避免重复开发,实现仿真与实机硬件的无缝迁移。其核心目标是简化不同硬件(传感器、执行器、完整系统)的集成流程,让开发者专注于控制逻辑而非硬件适配。创建类型功能包,依赖rclcpp。实现on_initupdate在中声明控制器插件,编译生成动态库。在 YAML 配置文件中指定自定义控制器类型,加载测试。

EnHengNa的博客 1486

保姆级避坑指南:用Keil和J-Flash搞定凌思微LE5010蓝牙芯片的首次程序下载

本文提供了一份详细的保姆级避坑指南,帮助开发者使用Keil和J-Flash工具完成凌思微LE5010蓝牙芯片的首次程序下载。文章重点解决了算法文件混淆、协议栈漏烧和仿真器连接异常等常见问题,并详细介绍了开发环境配置、协议栈烧录和下载接口的物理层奥秘,助力开发者高效完成蓝牙开发任务。

weixin_28739079的博客 468

CodeForces 721C Journey(旅行时间和地点的优化)

3

Shyazhut 1390

K8s认证文件丢失的应急处理与恢复策略

本文详细介绍了Kubernetes(K8s)认证文件丢失时的应急处理与恢复策略。从快速诊断问题范围到不同场景的临时解决方案,再到深度恢复方案(无损重建、部分重置、完全重建),提供了全面的操作指南。同时强调了生产环境中的防丢失设计、高可用集群的特殊处理以及日常运维建议,帮助运维人员有效应对认证文件丢失的紧急情况。

weixin_33743248的博客 327

Codeforces Round #374 (Div. 2) C. Journey dp

分析:dp[i][j]表示在i点已经经过j个点最小花费时间是多少。 这里wa了整场,因为j应该是外层循环而不是i#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <queue> #include <string> #include <cmath> #include <vect

JIBANCANYANG 384

在虚拟机中对阿克曼转向车进行导航及避障的仿真测试

一、    在我使用rosdep install teb_local_planner去安装teb_local_planner的时候,报错:Command ‘rosdep’ not found, but can be installed with:sudo apt install python3-rosdep2    我花大半个月好不容易建立起的一系列ROS环境,被python3-rosdep2这条万恶的语句连同ROS一起给我删了。。。悲伤来的那么猝不及防    随着ROS版本的迭代,相关资料很多都不再适用

慕羽★的博客 3807

ROS机器人未知环境自主探索功能包explore_lite最全源码详细解析(二)

本系列文章主要针对ROS机器人常使用的未知环境自主探索功能包explore_lite展开全源码的详细解析,并进行概括总结。 本系列文章共包含六篇文章,前五篇文章主要介绍explore_lite功能包中 explore.cpp、costmap_tools.h、frontier_search.cpp、costmap_client.cpp等源码实现文件中全部函数的详细介绍,第六篇文章进行概括总结,包含自主探索功能包explore_lite的简介,实现未知环境自主探索功能的原理及流程总结,效果演示,使用功能包exp

慕羽★的博客 1648

Codeforces Round #374 (Div. 2) C. Journey(拓扑+DP)(DAG上跑DP)

题目链接 思路:dp【i】【j】代表1到i中经过j个点的最小花费。 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=5e3+5; const int inf=1e9+1; int pre[maxn][maxn]; int dp[maxn][maxn],ru[maxn]...

qq_42479630的博客 271

使用 MATLAB/Simulink 对风光互补发电系统进行建模

随着全球对清洁能源的需求日益增长,风力发电和光伏发电作为两种主要的可再生能源形式,在电力供应中的占比越来越高。然而,由于风电和光伏的间歇性和不确定性,单独依赖其中任何一种能源都会给电网带来挑战。因此,风光互补发电系统(Wind-PV Hybrid System)应运而生,通过合理配置风力发电机和光伏电池板的数量,可以有效提高系统的稳定性和可靠性。此外,为了确保整个电力系统的安全稳定运行,还需要研究风光互补发电系统与主网之间的协调调度策略。本教程将详细介绍如何使用。

amy_mhd的博客 118

Teamwork Gym - 101492E 基础dp

【例题6】在一个夜黑风高的晚上,有n(n <= 50)个小朋友在桥的这边,现在他们需要过桥,但是由于桥很窄,每次只允许不大于两人通过,他们只有一个手电筒,所以每次过桥的两个人需要把手电筒带回来,i号小朋友过桥的时间为T[i],两个人过桥的总时间为二者中时间长者。问所有小朋友过桥的总时间最短是多少。参考http://blog.csdn.net/acm_jl/article/details/510335

now_ing的博客 792

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

HDU - 3450 树状数组优化dp

https://vjudge.net/problem/HDU-3450直接用dp[i]表示以最后一个结尾的完美序列的个数。。然后就可以用树状数组优化了int num[N],val[N],cnt,tree[N<<2]; const int maxn=500010; int d,n; int dp[N]; int haxi(int x){ return lower_bound(val+1,val

now_ing的博客 508

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Gym - 100923A Por Costel and Azerah (水dp)

题意:给你一个序列,问你有多少个子序列的元素和为偶数。于每一位可以选择取或不取,对于奇数dp结果为上一位的奇数情况和偶数情况之和,对于偶数,则是偶数情况是偶数情况*2和奇数情况是上一位奇数情况*2,int a[mxn]; LL dp[mxn][2]; int main(){ // freopen("in.txt","r",stdin); freopen("azerah.in","r",s

now_ing的博客 496

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

codeforces Gym - 101485 D Debugging 记忆化dp

其实这个和那个扔水球的题目是不同的。这个 题目记忆化就可以了,子结构的性质挺明显的,而且时间复杂度其实在记忆化之后小。#include<iostream> #include<string> #include<cstring> #include<cmath> #include<cstdio> #include<stack> #include<queue> #include<vector> #inclu

now_ing的博客 467

[Gym-100819S] dp+离散化

这道题是挺好的。。可是怎么我再做还是不会。看来忘题和映像不深很严重。。https://vjudge.net/contest/170144#problem/H 看https://vjudge.net/solution/9660165int n; int dp[mxn]; struct Node{ int l,v,r; bool friend operator<(Node a,Node

now_ing的博客 391

Codeforces 831D Office Keys 贪心or dp

https://vjudge.net/problem/CodeForces-831D 这个地方的贪心想不出来。。。LL a[maxn],b[maxn]; void solve(){ sort(a+1,a+n+1); sort(b+1,b+k+1); LL ans=2*inf; for(int i=1;i<=k-n+1;++i){ LL sum=0;

now_ing的博客 375

cf 414B

本来可以算是自己能独立做出来的dp的,但是自己因为一个小小的自己犯的错误,,还是要看了下别人的题解。 #include #include #include #include #include #include #include #include #include #include #include #include #define ll long long #define inf 0x3f3f3

now_ing的博客 366

分组背包:hdu1712 hdu3033

#include #include #include #include #include #include #include #include #include #include #include #include #define ll long long #define inf 0x3f3f3f3f #define bug1 cout<<"bug1"<<endl; #define bug2 co

now_ing的博客 363

简单dp,first wrong POJ 3616 Milking Time

在一个农场里,在长度为N个时间可以挤奶,但只能挤M次,且每挤一次就要休息t分钟; 接下来给m组数据表示挤奶的时间与奶量求最大挤奶量 一个简单的动态规划,用一个dp表示在第i个时间段挤奶量的最大值,从i+1更新到M 自己没有做出来的原因:这道题如果收获都是1的话,其实就是贪心了, 然后对于这道dp,自己在表示“包含选了i个物品后的结束时间”的时候遇到了麻烦。。。就不会了 看这个

now_ing的博客 361

The Monochrome Picture SGU - 458 线段树优化dp

参考:https://vjudge.net/solution/2633272题意: 给定一个序列,删除最少的数使得任意两个相邻的数的abs不会相差1,看来自己还是不太熟悉线段树,原本居然不知道怎么处理这个地方的用线段树的优化..#include<bits/stdc++.h>using namespace std; #define up 1000000 #define N 100050 #defin

now_ing的博客 355

Codeforces 837D - Round Subset 【DP】

题意:给出n个数,让你从中选出k个数,使得它们乘积的后缀0最多,输出这个值。Input3 2 50 4 20Output3Input5 3 15 16 3 25 9Output3Input3 3 9 77 13Output0 NoteIn the first example there are3 subsets of 2 numbers. [50, 4] has product 200 wi

now_ing的博客 349

51Nod 1183 编辑距离(DP—编辑距离问题)

L式距离: 51Nod 1183 编辑距离(DP—编辑距离问题) 编辑距离,又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。char s1[105],s2[N]; int m,n,k; int dp[N][105]; inline void update(int &a,int b){

now_ing的博客 344
上一篇: Codeforces Round #368 (Div. 2) E. Garlands 二维树状数组 暴力
下一篇: Aizu 2304 Reverse Roads 费用流
sega_handsome
博客等级 码龄10年 7粉丝 164原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值