士兵过河
作者:互联网
今天WC的时候想起之前打比赛遇到一道挺有趣的题目 最后才做出来的
我们从上帝视角(就是站的很高很高)看士兵过河 每个士兵就好比是一个蚂蚁
两个蚂蚁相遇分别转向 就好比是两个蚂蚁一直直线行走 这样一个蚂蚁的时间就很好算
我们就能算出 所有蚂蚁的时间 但是a蚂蚁算出来的时间不一定是a蚂蚁走出河岸的时间 可能是b蚂蚁走出河岸的时间
考虑0一定都在1的前面 并且0的内部顺序 和1的内部顺序一定不变
点击查看代码
#include<bits/stdc++.h>
using namespace std;
int a[100005],b[100005];
int main(){
int n,L;
cin>>n>>L;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++){
cin>>b[i];
if(b[i]==1)
a[i]=L-a[i];
//cout<<"a[i]="<<a[i]<<endl;
}
for(int i=1;i<=n;i++)
if(b[i]==0)cout<<a[i]<<" ";
for(int i=1;i<=n;i++)
if(b[i]==1)cout<<a[i]<<" ";
return 0;
}
标签:过河,蚂蚁,int,100005,时间,士兵 来源: https://www.cnblogs.com/wzxbeliever/p/16098873.html