题解【CodeForces 910A The Way to Home】
题目大意
一只青蛙现在在一个数轴上,它现在要从点 跳到点 ,它每次可以向右跳不超过 个单位。比如,它可以从点 跳到点 () 。
特别的,青蛙只能在有百合花的点上停留。保证点 和点 之间有一些点有百合花,并且起点和终点有百合花。请输出青蛙到达点 的最小跳跃次数。
题解
注意到 ,暴力将 建图跑最短路即可。
#include<iostream>
#include<ctime>
#include<queue>
#include<stack>
#include<cmath>
#include<iterator>
#include<cctype>
#include<vector>
#include<map>
#include<set>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=2001,INF=0x3f3f3f3f;
typedef long long ll;
typedef vector<pair<int,ll> > graph[N];
graph g;
inline void addedge(int u,int v,ll w){g[u].push_back(make_pair(v,w));}
int n,d,dis[N];
bool vis[N];
string str;
struct node
{
int idx,dis;
node(int _idx,int _dis){idx=_idx; dis=_dis;}
inline bool operator<(const node& w)const{return dis>w.dis;}
};
inline void dij(int s)
{
memset(dis,0x3f,sizeof dis);
priority_queue<node> q; q.push(node(s,0)); dis[s]=0;
while (!q.empty())
{
node now=q.top(); q.pop(); int nowi=now.idx,S=g[nowi].size();
if (vis[nowi]) continue; vis[nowi]=true;
for (int i=0;i<S;i++)
{
int v=g[nowi][i].first,w=g[nowi][i].second;
if (dis[nowi]+w<dis[v]){dis[v]=dis[nowi]+w; if (!vis[v]) q.push(node(v,dis[v]));}
}
}
}
int main()
{
scanf("%d%d",&n,&d); cin>>str;
for (int i=0;i<n;i++)
if (str[i]-'0')
for (int j=1;j<=d;j++)
{
int pos=i+j; if ((pos>n)||(pos==i)||(str[pos]=='0')) continue;
addedge(i+1,pos+1,1);
}
dij(1); printf("%d",(dis[n]==INF)?-1:dis[n]);
return 0;
}
以下是博客签名,正文无关
本文来自博客园,作者:yspm,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/13942627.html
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异