❤大爱小颜❤

转身,一缕冷香远,逝雪深,笑意浅。来世你渡我,可愿?
扩大
缩小

【洛谷】P1007独木桥

哎,我在发博的路上收到了挫折

今天我一个JS硬是申请4遍,差点被禁

坚强!码农的字典中没有屈服!

今天来写一下独木桥吧

题目:https://www.luogu.com.cn/problem/P1007

首先自行脑补一下,你在桥上看风景,看风景的人在轰炸机上看着你。

假设你就在轰炸机上欣赏观看士兵,以你的视角,你会看到什么?一堆迷彩服在移动,当两个士兵相遇时,他们会认为自己调头了。然鹅,因为你在高空,你会看到他们‘穿过’了对方(你也可以看成灵魂互换)。这么来看我们就可以做了。

比方说,4号位置上有一个士兵,如果他开始向左,那在两秒后在2号位一定有一个士兵,虽然不一定是他。

这样来看,这道题就十分容易。先把士兵一一读进去。设士兵在m位置,则他向左下桥需要m时间,向右就是L-m+1个(这两个值肯定一大一小抑或一样大)。再取max(每个士兵下桥最大值的最大值,就是所有时间的最大值),min(注意!/敲黑板  这个储存的不是最小值,而是每个士兵下桥最小值的最小值),在打擂台更新答案即可。

代码:

#include<bits/stdc++.h>//万能头
using namespace std;
int main()
{
    //freopen("","r",stdin)
    //freopen("","w",stdout)文件输入输出,奥赛用,一般做题不是大数据没什么用
    int l,n,m,a,b,max=0,min=0;//定义变量
    cin>>l>>n;//读入
    if(n==0)
    {
       cout<<0<<" "<<0;
        }
       else{
    while(n--)
    {
        cin>>m;
        a=m;
        b=l-m+1;
        if(a>b)
        {
            if(a>max)  max=a;
            if(b>min)  min=b;    
        }
        if(a<b)
        {
           if(b>max) max=b;
           if(a>min) min=a;
        }//比较大小,打擂台更新答案
    }
    cout<<min<<" "<<max;//输出
    return 0;
    //fclose(stdin)
    //fclose(stdout)
}
}
View Code

一开始思路搞错,然鹅代码能运行,于是乎......

哎,各位码友一起努力!

posted on 2020-11-03 22:23  小颜太可了  阅读(194)  评论(0)    收藏  举报

导航