【洛谷】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) } }
一开始思路搞错,然鹅代码能运行,于是乎......

哎,各位码友一起努力!
浙公网安备 33010602011771号