P8674 [蓝桥杯 2018 国 B] 调手表

原题链接

题解 一道思维题

由于闹钟是圆的,所以从任意一个分钟数调到另外任意一个分钟数最多要按多少次相当于从点0调到1~n-1任意一点最多要按多少次
可以把1~n看成一个一个点,就相当于单源最短路了
md,好巧妙

code

#include<bits/stdc++.h>
using namespace std;
struct refresh
{
    int pos,val;
};
int main()
{
    int n,k;
    cin>>n>>k;
    int times[n+5];
    memset(times,0x3f,sizeof times);
    queue<refresh> q;
    q.push({0,0});
    while(!q.empty())
    {
        int now=q.front().pos,val=q.front().val;
        q.pop();
        if(val<times[now])times[now]=val;
        else continue;
        q.push({(now+1)%n,val+1});
        q.push({(now+k)%n,val+1});
    }
    int ans=0;
    for(int i=0;i<n;i++)ans=max(ans,times[i]);
    cout<<ans<<endl;
    return 0;
}

posted @   纯粹的  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示