深蓝配浅红,怎能满足一片绿
  • 板块P1007 独木桥
  • 楼主hylily
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/8/23 15:14
  • 上次更新2023/11/3 01:45:32
查看原帖
深蓝配浅红,怎能满足一片绿
776366
hylily楼主2023/8/23 15:14
#include<bits/stdc++.h>
using namespace std;
struct sss{
	int name;
	int fangxiang;
};
int main(){
	int a,b,i;
	cin>>a>>b;
	int d[a+5],d1[a+5];
	sss c[b+5],e[b+5];
	int isok = b;
	for(int i = 1;i<=a;i++){
		d[i] = 0;
	}
	for(int i = 1;i<=b;i++){
		cin>>c[i].name;
		e[i].name = c[i].name;
		d1[c[i].name]++;
	}
	int ans = 0,ans2 = 0;
	for(int i = 1;i<=b;i++){
		if(c[i].name<a/2)c[i].fangxiang = 0;
		else c[i].fangxiang = 1; 
	}
	for(int i = 1;i<=b;i++){
		if(e[i].name<a/2)e[i].fangxiang = 1;
		else e[i].fangxiang = 0; 
	}
	i = 1;
	while(isok>0){
		if(d[i]>1){
			c[i].fangxiang = abs(c[i].fangxiang-1);	
		}
		if(c[i].fangxiang == 1){
			c[i].name++;
		}	
		else if(c[i].fangxiang == 0){
			c[i].name--;
		}
		if(c[i].name<1||c[i].name>a){
			isok--;
			c[i].fangxiang = -1;
			c[i].name = a-1;
			
		}
		i++;
		if(i>b){
			i = 1;
			ans++;
		}
		
	}
	isok = b;
	cout<<ans<<" ";
	while(isok>0){
		if(d1[i]>1){
			for(int j = 1;j<=b;j++){
				if(e[j].name == i)
				{
					e[j].fangxiang = abs(e[j].fangxiang-1);
				}
			}
		}
		
		if(e[i].fangxiang == 1){
			e[i].name++;
		}	
		else if(e[i].fangxiang == 0){
			e[i].name--;
		}
		if(e[i].name<1&&e[i].fangxiang!=-1||e[i].name>a&&e[i].fangxiang!=-1){
			isok--;
			e[i].fangxiang = -1;
		}
		i++;
		if(i>b){
			i = 1;
			ans2++;
		}
	}
	cout<<ans2;
	return 0;
}

不会啊啊啊啊啊啊!!! 20tle求教

2023/8/23 15:14
加载中...