其他分享
首页 > 其他分享> > 士兵过河

士兵过河

作者:互联网

今天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