28分求调
查看原帖
28分求调
1139104
Cable8734楼主2025/1/4 22:37

https://www.luogu.com.cn/record/197117362 思路同一楼题解

#include <iostream>
using namespace std;

void solve(int x, int y, int a, int b, int sze){
	int l = (sze >> 1);
	if(sze <= 1){
		return;
	}
	if(x < a + l && y < b + l){
		printf("%d %d 1\n", a + l, b + l);
		solve(x, y, a, b, l);
		solve(a + l - 1, b + l, a, b + l, l);
		solve(a + l, b + l - 1, a + l, b, l);
		solve(a + l, b + l, a + l, a + l, l);
	}else if(x < a + l && y >= b + l){
		printf("%d %d 2\n", a + l, b + l - 1);
		solve(a + l - 1, b + l - 1, a, b, l);
		solve(x, y, a, b + l, l);
		solve(a + l, b + l - 1, a + l, b, l);
		solve(a + l, b + l, a + l, b + l, l);
	}else if(x >= a + l && y < b + l){
		printf("%d %d 3\n", a + l - 1, b + l);
		solve(a + l - 1, b + l - 1, a, b, l);
		solve(a + l - 1, b + l, a, b + l, l);
		solve(x, y, a + l, b, l);
		solve(a + l, b + l, a + l, b + l, l);
	}else{
		printf("%d %d 4\n", a + l - 1, b + l - 1);
		solve(a + l - 1, b + l - 1, a, b, l);
		solve(a + l - 1, b + l, a, b + l, l);
		solve(a + l, b + l - 1, a + l, b, l);
		solve(x, y, a + l, b + l, l);
	}
}

int main(){
	int x, y, k;
	
	scanf("%d\n%d %d", &k, &x, &y);
	
	solve(x, y, 1, 1, (1 << k));
	
	return 0;
}
2025/1/4 22:37
加载中...