【Luogu P3953】NOIP2017 day1T3 逛公园

Python 爬虫实战:Steam 游戏数据爬取与游戏市场分析 本文介绍了一个基于Python的Steam游戏数据分析项目。通过爬取Steam公开API和游戏详情页,获取游戏列表、价格、评价、标签等数据,结合SteamSpy统计销量和在线人数。项目使用requests、BeautifulSoup4进行数据采集,pandas处理数据,pyecharts和seaborn进行可视化。核心步骤包括:1)获取全量游戏列表并过滤;2)异步请求游戏详情处理限速;3)提取关键字段如价格、评分、标签;4)多维分析价格分布、标签热度等。技术栈涵盖API请求、HTML解析、数据存储与可视化, 阅读详情

题目链接

题目描述

策策同学特别喜欢逛公园。公园可以看成一张 N 个点 M 条边构成的有向图,且没有 自环和重边。其中1号点是公园的入口, N 号点是公园的出口,每条边有一个非负权值, 代表策策经过这条边所要花的时间。

策策每天都会去逛公园,他总是从1号点进去,从 N 号点出来。

策策喜欢新鲜的事物,它不希望有两天逛公园的路线完全一样,同时策策还是一个 特别热爱学习的好孩子,它不希望每天在逛公园这件事上花费太多的时间。如果1号点 到 N 号点的最短路长为 d ,那么策策只会喜欢长度不超过 d+K 的路线。

策策同学想知道总共有多少条满足条件的路线,你能帮帮它吗?

为避免输出过大,答案对 P 取模。

如果有无穷多条合法的路线,请输出−1。

题解

为什么自己当时那么菜,连这题都毫无头绪

这题明显是个DP,由于和路径长度偏移量有关且K很小,很容易想出状态数组是dp[N][K]。
再来想想状态的含义应该是什么。
我们最后要求的是从1号点出发到达n号点路径长度偏移量不超过k的路径总数。
考虑一条合法路径上的点u,那么u到n号点的最短路偏移量也会小于k。在所有u到n号点的路径中偏移量小于 k-当前已偏移量 的都可以进行贡献。
故我们设dp[u][k]表示从点u到n号点路径长度偏移量不超过k的路径条数,那么答案就是dp[1][k] ,我们可以看出这个状态是很好的。

由于是在图上进行DP,所以用记搜实现会更加方便。转移的话由当前走的边算出这次的偏移量d,继续搜索 dp[v][k-d] 即可。

但我们还要考虑无穷多方案的情况。
可以发现只有当在某条合法路径上出现0环时才有无数条路径。
这时因为走一条0环上的边,新的偏移量一定为0,那么我们就会搜到相同状态,因此只需记录一下是否有相同状态同时被搜到即可。

还有一点需要注意的就是边界的设置。不能只把dp[n][0]设为1,因为dp[n][ ]的任何一个都至少为1,也就是说后面的要都加上1。并且可能有直接的一整个0环出现,要在搜到n号点的时候把他的dp值设为1,不然这个无穷多解的情况就漏了!(WA了好久TAT)

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#include<queue>
#define Set(a,b) memset(a,b,sizeof(a))
using namespace std;
inline int read()
{
    int x=0;char ch=getchar();int t=1;
    for(;ch>'9'||ch<'0';ch=getchar())if(ch=='-') t=-1;
    for(;ch>='0'&&ch<='9';ch=getchar()) x=(x<<1)+(x<<3)+(ch-48);
    return x*t;
}
const int N=1e5+100;
const int M=2e5+100;
struct edge{
    int to,next,w;
}a[M],b[M];
int cnt=0;
int head[N];
int he2[N];
int cn=0;
inline void add1(int x,int y,int z){a[++cnt]=(edge){y,head[x],z};head[x]=cnt;}
inline void add2(int x,int y,int z){b[++cn]=(edge){y,he2[x],z};he2[x]=cn;}
queue<int> Q;
int dis[N];bool vis[N];
int t,n,m,k,p;
int dp[N][51];//u到n路径长度不超过 最短路径+k 的方案数
bool in[N][51];//判0环(重复搜相同状态则必为一个0环)
int D;
bool flag;
inline void SPFA()
{
    Q.push(n);
    while(!Q.empty())
    {
        register int u=Q.front();Q.pop();
        vis[u]=0;
        for(register int v,i=head[u];i;i=a[i].next)
        {
            v=a[i].to;
            if(dis[u]+a[i].w>=dis[v]) continue;
            dis[v]=dis[u]+a[i].w;
            if(!vis[v]) {vis[v]=1;Q.push(v);}
        }
    }
}
inline int dfs(int u,int len)
{
    if(flag) return 0;
    if(len<0) return 0;
    if(in[u][len]) return (flag=1);
    if(dp[u][len]!=-1) return dp[u][len];
    dp[u][len]=(u==n? 1:0);//这里再设初状态
    in[u][len]=1;
    for(register int v,i=he2[u];i&&(!flag);i=b[i].next)
    {
        v=b[i].to;register int w=b[i].w;
        dp[u][len]+=dfs(v,len-(dis[v]+w-dis[u]));
        if(dp[u][len]>=p) dp[u][len]-=p;
    }
    in[u][len]=0;
    return dp[u][len];
}
int main()
{
    freopen("park.in","r",stdin);
    freopen("park.out","w",stdout);
    int T=read();
    while(T--)
    {
        n=read();m=read();k=read();Set(head,0);cnt=0;p=read();cn=0;
        Set(dis,127/3);dis[n]=0;register int x,y,z;Set(dp,-1);Set(head,0);Set(he2,0);
        Set(in,0);
        for(register int i=1;i<=m;++i){x=read();y=read();z=read();add2(x,y,z);add1(y,x,z);}
        SPFA();flag=0;
        if(p==1) {puts("0");continue;}
        dfs(1,k);
        if(flag) puts("-1");
        else printf("%d\n",dp[1][k]%p);
    }
}
【GameFramework框架】一、框架介绍 这是GameFramework框架教程的第一篇,但是博主不准备直接就讲GameFramework框架。【GameFramework框架】二、GameFramework框架介绍了。框架(Framework)通常被理解为一种基础要素的集合,它们用于承载系统的必要功能。约束性:框架定义了解决特定问题的边界,并将相关的软件组件约束在这个范围内,以保持框架的内聚性和解决问题的专注性。支撑性:框架本身不直接解决问题,而是提供一个基础的支撑结构,使得在其上构建的解决方案更为灵活和高效。 阅读详情

相关推荐

【Android14 ShellTransitions】Transition就绪:双Transaction与SurfaceControl显示时机剖析

本文深入剖析了Android14 ShellTransitions框架中Transition就绪阶段的核心机制。重点解释了为何需要“双Transaction”来精确控制SurfaceControl的显示与隐藏时机,以确保Activity切换动画的流畅性。通过分析onTransactionReady流程、窗口绘制状态机及动画目标提升策略,揭示了系统如何协调WMCore与WMShell,实现从状态收集到动画播放的无缝衔接。

ooo22的博客 526

【NOIP2017提高组正式赛】Day1T3逛公园

Description 策策同学特别喜欢逛公园。公园可以看成一张o个点n条边构成的有向图,且没有自环和重边。其中1号点是公园的入口,o号点是公园的出口,每条边有一个非负权值,代表策策经过这条边所要花的时间。 策策每天都会去逛公园,他总是从1号点进去,从o号点出来。 策策喜欢新鲜的事物,他不希望有两天逛公园的路线完全一样,同时策策还是一个特别热爱学习的好孩子,他不希望每天在逛公园这件事

lijf2001的博客 1533

51单片机基础知识

前言 周末闲着无聊,以后定时更新一期关于51单片机的学习案例,以供大家平时参考使用。至于单片机,你可以理解为人的大脑,而人各项身体器官的运作需要意识给到大脑,然后大脑再驱动我们的中枢神经进行相应的动作,这里的意识可以理解为我们要写的程序,而人的器官相当于各种输出设备,例如我们以后要学的LED、电机、各种传感器等等。学好单片机能让你找到一份相对不错的工作,当然越可观的东西也是要付出相应努力的。 一、51单片机是什么? 通常我们一说到 51 单片机,指的都是兼容IntelMCS-51体系架构的一系列单片机,而

qq_43537819的博客 6903

JZOJ5475.【NOIP2017提高组】day1T3逛公园

problemDescription 策策同学特别喜欢逛公园。公园可以看成一张��个点��条边构成的有向图,且没有自环和重边。其中1号点是公园的入口,��号点是公园的出口,每条边有一个非负权值,代表策策经过这条边所要花的时间。 策策每天都会去逛公园,他总是从1号点进去,从��号点出来。 策策喜欢新鲜的事物,他不希望有两天逛公园的路线完全一样,同时策策还是一个特别热爱学习的好孩子,他不

路人黑的纸巾 4268

STM32实战:滑模观测器与PLL锁相环融合的FOC无感控制精解

本文深入解析了STM32平台下结合滑模观测器(SMO)与PLL锁相环的无感FOC控制技术。通过实战案例详细介绍了PLL锁相环在消除SMO高频抖振、提升角度跟踪精度方面的关键作用,并分享了工程调参技巧、C语言实现细节及系统联调方法,为电机控制开发者提供了一套完整的解决方案。

weixin_30838873的博客 188

手把手教你学simulink(26.8)--控制算法场景示例:基于强化学习的无人机姿态稳定控制系统

首先,我们需要定义无人机的姿态稳定控制环境。环境包括无人机的状态(姿态角、角速度等)和动作(电机转速)。我们还需要定义奖励函数,用于评估控制器的表现。matlab深色版本% 定义环境% 定义状态空间% 12个状态变量% 定义动作空间% 电机转速范围奖励函数用于评估控制器的表现。我们可以根据无人机的姿态误差、角速度误差以及控制输入的变化率来设计奖励函数。具体来说,当无人机的姿态接近设定值时,给予正奖励;当姿态误差较大或控制输入变化剧烈时,给予负奖励。matlab深色版本。

MHD0815的博客 494

NOIP2017DAY1T3——逛公园

输入 第一行包含一个整数 T, 代表数据组数。 接下来T组数据,对于每组数据: 第一行包含四个整数 n, m, k, p, 每两个整数之间用一个空格隔开。 接下来m行,每行三个整数ai,bi, ci, 代表编号为ai, bi的点之间有一条权值为 ci的有 向边,每两个整数之间用一个空格隔开 输出 输出文件包含 T行,每行一个整数代表答案。 样例输...

weixin_30896825的博客 228

某Z节验证码

某Z节验证码、captchaBody、滑块、旋转、空间推理

mamenqi_csdn的博客 770

NOIP2017 Day1_T3 逛公园

题目大意:让你求从1到n的路径中,长度和最短路径不超过k有多少条?Warning:CCF老爷机严重卡常。题解:考场时想到了缩环,然并卵,就是没想到拆点按Turpo序dp。70分的做法,先跑SPFA求最短路,然后再求最短路的条数,如果此时有0环,那么队列会无限大,可以超过10^6就退出,之后再强行拆点连边SPFA跑方案数。发现如果原图中没有0环的话,拆点后的图是没有环的,所以强行Turpo一发,按顺序

Cold_Chair的博客 1839

QML从入门到实战 - 完整学习路线

想入门 QML 开发?来 “从零开始学 QML” 专栏,海量源码 + 实战案例 + 大型项目拆解,手把手教你搞定跨平台 UI 设计,小白也能轻松掌握!

BenBierBa的博客 3474

【学习系列】SAP RAP 18:Unmanaged场景开发示例-基本数据更新

本文介绍了在SAP RAP中unmanaged模式下从0到1的开发步骤。unmanaged模式下需要自行实现数据更新、权限检查等逻辑,适用于操作现有数据库表或复杂业务场景。文章以两层的采购订单对象为例,详细说明了创建技术对象(表、视图、行为定义等)的过程,并重点阐述了如何实现CRUD相关方法的核心逻辑。通过创建缓冲类来处理交互阶段和保存阶段的数据操作,确保事务一致性。完整代码展示了抬头层级的增删改查功能实现,为后续明细层级的开发奠定了基础。

DeveloperMrMeng的博客 637

NOIP2017提高组DAY1T3 - 逛公园(超详细&两种做法)

传送门 Analysis 首先看到这道题,暴力30分很好打 针对k=0k=0k=0的情况,我们直接最短路计数就可以了 然后还是从k入手,发现k最多只有50,是个突破口 我们可以试着每次枚举k,限制路径长度然后计数,最后相加 如果令f[u][j]f[u][j]f[u][j]表示当前在u这个点,与 u 到 1 的最短路相差 j 的路径条数 那么怎么更新这个状态呢? 令 v 能够到 u 那么可以得到:...

Faithfully-xly的博客 875

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

洛谷 P3953 [ NOIP 2017 ] 逛公园 —— 最短路DP

题目:https://www.luogu.org/problemnew/show/P3953 主要是看题解...还是觉得好难想啊... dfs DP,剩余容量的损耗是边权减去两点最短路差值...表示对于最短路来说多走了这么多... 还要注意该点能否到达 n 号点,不能就不走了(剪枝); %p 那个地方会爆 int 吗?反正 %=p RE了一个点...(然而改成 ll 还是RE) ...

aodan5477的博客 176

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Luogu P3953 逛公园(最短路+记忆化搜索)

P3953 逛公园 题面 题目描述 策策同学特别喜欢逛公园。公园可以看成一张 \(N\) 个点 \(M\) 条边构成的有向图,且没有自环和重边。其中 \(1\) 号点是公园的入口,\(N\) 号点是公园的出口,每条边有一个非负权值, 代表策策经过这条边所要花的时间。 策策每天都会去逛公园,他总是从 \(1\) 号点进去,从 \(N\) 号点出来。 策策喜欢新鲜的事物,它不希望有两天逛公园的路线完全...

weixin_30832143的博客 108

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【NOIP2017提高组 day1】逛公园

题目 题解 – 首先要在图上跑一遍最短路是肯定的(spfa或迪杰斯特拉) 接着就是怎么算答案了 我们可以先建一个反图(方便从终点跑回起点) 设f[i][j]:从起点跑到i号节点时,与目前的最短路相差j的长度时的方案数 所以说我们怎么从f[i][j]转移到f[a][b]呢(i,a由一条长为w的路径相连) 可以推出:j-b=d[a]+w-d[i] 即:b=j+d[i]-d[a]-w 因为直接递推...

Stupid_Computer的博客 431

【NOIP2017提高组】逛公园

                                             逛公园 题目背景 NOIP2017提高组 DAY1 T3 题目描述 策策同学特别喜欢逛公园。公园可以看成一张 N 个点 M 条边构成的有向图,且没有自环和重边。其中 1 号点是公园的入口,N 号点是公园的出口,每条边有一个非负权值,代表策策经过这条边所要花的时间。 策策每天都会去逛公园,他总是从 1...

ETO的博客 2320

NOIP2017Day1T3-逛公园

3. 逛公园 (park.cpp/c/pas) 题目描述 策策同学特别喜欢逛公园。公园可以看成一张NN 个点MM 条边构成的有向图,且没有 自环和重边。其中1号点是公园的入口,NN 号点是公园的出口,每条边有一个非负权值, 代表策策经过这条边所要花的时间。 策策每天都会去逛公园,他总是从1号点进去,从NN 号点出来。 策策喜欢新鲜的事物,它不希望有两天逛公园的

Mi-Queen 456

【NOIP2017提高组 day2】宝藏

题目 题解 –这道题不是最小生成树这道题不是最小生成树这道题不是最小生成树 因为修路的代价与它里起点的距离有关,又因为最后的路径一定组成了一棵树 所以我们可以一层层的dp 设f[i][s]:到第i层时,已经连上的集合为s的最优解 转移f[i][s|S]=min(f[i-1][s]+D[s][S]*(i-1)) (D[s][S]是把这两个没有交集的集合相连的最小代价) D是可以由d预处理出来...

Stupid_Computer的博客 1081

JZOJ 5185. 【NOIP2017提高组模拟6.30】tty's sequence

JZOJ 5185. 【NOIP2017提高组模拟6.30】tty's sequence DescriptionInputOutputSample Inputinput 1:6 3 1 1 1 0 0 0input 2:6 3 1 1 0 1 0 0input 3:6 3 11 8 2 1 3 9Sample Outputoutput 11 1outpu

Felix-Lee的博客 554

NOIP2017逛公园(提高D1T3)

标签:SPFA,记忆花搜索 题目 题目传送门 题目描述 策策同学特别喜欢逛公园。公园可以看成一张NNN个点MMM条边构成的有向图,且没有 自环和重边。其中1号点是公园的入口,NNN号点是公园的出口,每条边有一个非负权值, 代表策策经过这条边所要花的时间。 策策每天都会去逛公园,他总是从1号点进去,从NNN号点出来。 策策喜欢新鲜的事物,它不希望有两天逛公园的路线完全一样,同时策策还是一个 特别热爱...

Welcome to yjjr's blog! 336

NOIP2017:逛公园

Sol 发现NOIP2017NOIP2017NOIP2017还没AKAKAK??? 赶紧改 考场上明明打出了DPDPDP,没时间了,没判环,重点是没初始化数组,爆000 TATTATTAT 先最短路,然后f[i][j]f[i][j]f[i][j]表示到iii时,比最短路大jjj的方案 大力记搜就好了 判环就记录一下当前转移的是否在栈中就没了 明明这么简单,可我就是与ACACAC擦肩...

Cyhlnj 1026

[NOIP 2017 day1]逛公园

题目描述 策策同学特别喜欢逛公园。 公园可以看成一张N个点M条边构成的有向图,且没有自环和重边。其中1号点是公园的入口,N号点是公园的出口,每条边有一个非负权值,代表策策经过这条边所要花的时间。 策策每天都会去逛公园,他总是从1号点进去,从N号点出来。 策策喜欢新鲜的事物,他不希望有两天逛公园的路线完全一样,同时策策还是一个特别热爱学习的好孩子,他不...

DONGJING1108的博客 217

【NOIP2017】Day3

题目传送门(请点击开头目录) http://blog.youkuaiyun.com/lhq_er/article/details/76693851SolutionT1:模拟一个栈的进出,最后判断是否有剩余即可 T2:求最大全1矩阵,方法是求出极大矩阵后更新,维护单调栈,可以搜,网上有很多 T3:仔细考虑后发现时要求这样的二元组(s,t)是的1—>s—>t—>1, 我们可以枚举(s,t)再跑最短路(去掉

Lhq 477

NOIP总结

  拿到题目先写裸的暴力,暴力一定要写对,没想出正解有暴力垫底,想出了正解也可以拿来拍   过了样例之后一定要造数据测,数据越坑越好   一定要造极限数据,哪怕造不知道答案的数据都行,主要是检测RE和TLE,正确性用拍来检测   如果目前已经可以拿到很高的分,可以考虑放弃剩余的小分数,把时间留给其它地方   题目一定要认真仔细看清楚,坚决避免代码写完了结果题目看错的情况   样例一定要手...

weixin_30872867的博客 208

【NOIP 2017 提高组】逛公园

算法标签:最短路+DP+记忆化搜索

forever_dreams的博客 1419

【NOIP2017提高组 day1】时间复杂度

题目 题解 –是一道恶心的模拟题 首先可以用一个栈存正在运行中的循环 用isv数组判断变量是否重名 要注意不能进入的循环虽然不会影响答案,但是要经过标记后也存入站内(为了判错) 还要注意如果一个O(n)的循环如果在一个不能进入的循环内,答案是不会增加的 代码 #include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;cstdli...

Stupid_Computer的博客 721
上一篇: 【Luogu P3237】[HNOI2014]米特运输
下一篇: 【Luogu P3960】NOIP2017 day2T3 列队
NeosKnight
博客等级 码龄9年 21粉丝 151原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值