不知道为什么调试出错
查看原帖
不知道为什么调试出错
921176
leiwenjin1234楼主2024/10/20 13:04
#include<bits/stdc++.h>
using namespace std;
struct T {
	int x, y;
	long long pt;
};
long long n, m, q, r, k, lrt = 1, t = 1;
vector<T>tree;
short ma[3005][3005];
int mac(int x, int y) {
	if (x == 1 || y == 1)return 1;
	return 0;
}
bool check(int tx, int ty) {
	if (ma[tx][ty] != 0)return 0;
	if (tx > n || tx < 1 || ty > m || ty < 1)return 0;
	short fi = 0;
	fi = max(ma[tx + 1][ty], fi);
	fi = max(ma[tx + 1][ty + 1], fi);
	fi = max(ma[tx + 1][ty - 1], fi);
	fi = max(ma[tx ][ty + 1], fi);
	fi = max(ma[tx ][ty - 1], fi);
	fi = max(ma[tx - 1][ty - 1], fi);
	fi = max(ma[tx - 1][ty], fi);
	fi = max(ma[tx - 1][ty + 1], fi);
	if (fi == 0) {
		return 0;
	}
	fi = 0;
	fi = mac(ma[tx + 1][ty], fi);
	fi = mac(ma[tx + 1][ty + 1], fi);
	fi = mac(ma[tx + 1][ty - 1], fi);
	fi = mac(ma[tx ][ty + 1], fi);
	fi = mac(ma[tx ][ty - 1], fi);
	fi = mac(ma[tx - 1][ty - 1], fi);
	fi = mac(ma[tx - 1][ty], fi);
	fi = mac(ma[tx - 1][ty + 1], fi);
	if (fi == 0) {
		return 0;
	}
	return 1;
}
signed main() {
	cin >> n >> m >> q >> r >> k;
	for (int i = 1; i <= q; i++) {
		int x, y, xx, yy;
		cin >> x >> y >> xx >> yy;
		for (int i = x; i <= xx; i++) {
			for (int j = y; j <= yy; j++) {
				ma[i][j] = 1;
			}
		}
	}
	for (int i = 1; i <= r; i++) {
		int x,y,z;
		cin>>x>>y>>z;
		T d;
		d.pt=x;
		d.x=y;
		d.y=z;
		tree.push_back(d);
	}
	while (lrt +k>= t) {
		int g=tree.size();
		for (int i = 0; i <g; i++) {
			if (tree[i].pt == t) {
				ma[tree[i].x][tree[i].y] = 2;
				lrt=t;
			}
			if (tree[i].pt < t) {
				int tx = tree[i].x;
				int ty = tree[i].y;
				if (t - tree[i].pt > k) {
					short fi = 0;
					fi = max(ma[tx + 1][ty], fi);
					fi = max(ma[tx + 1][ty + 1], fi);
					fi = max(ma[tx + 1][ty - 1], fi);
					fi = max(ma[tx ][ty + 1], fi);
					fi = max(ma[tx ][ty - 1], fi);
					fi = max(ma[tx - 1][ty - 1], fi);
					fi = max(ma[tx - 1][ty], fi);
					fi = max(ma[tx - 1][ty + 1], fi);
					if (fi == 0) {
						ma[tx][ty] = 0;
						tree.erase(tree.begin() + i);
						r--;
						lrt=t;
						continue;
					}
				}
				for (int qt = tx - 1; qt <= tx + 1; qt++) {
					for (int c = ty - 1; c <= ty + 1; c++) {
						if (check(q, c)) {
							tree.push_back({q, c, t});
							ma[q][c]=2;
							r++;
							lrt=t;
						}
					}
				}
			}
		}
		t++;
	}
	cout<<tree.size();
	return 0;
}

调试到68行后报错,vector有值,报错函数库里,实在想不明白

2024/10/20 13:04
加载中...