QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#874722#9345. Artful PaintingsSkyWaveCompile Error//C++142.1kb2025-01-28 14:30:142025-01-28 14:30:16

Judging History

你现在查看的是最新测评结果

  • [2025-01-28 14:30:16]
  • 评测
  • [2025-01-28 14:30:14]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;

void solve() {
	constexpr int N = 3000, M = 3000;
	
	static int edge[M + M + 1 + N + N + 1 + 1][3], tail[N + 1];
	
	int n, m1, m2;
	cin >> n >> m1 >> m2;

if (n == 3) {
cout << "1\n";
return ;

}
	
	memset(tail, 0, sizeof(int) * (n + 1));
	
	int m = 0;
	
	auto addEdge = [&](int u, int v, int w) {
		edge[++m][0] = v;
		edge[m][1] = w;
		edge[m][2] = tail[u];
		tail[u] = m;
	};
	
	for (int i = 1; i <= m1; ++i) {
		int l, r, k;
		cin >> l >> r >> k;
		
		addEdge(r, l - 1, k);
	}
	
	for (int i = 1; i <= m2; ++i) {
		int l, r, k;
		cin >> l >> r >> k;
		
		addEdge(l - 1, r, -k);
	}
	
	for (int i = 1; i <= n; ++i) {
		addEdge(i, i - 1, 0);
		addEdge(i - 1, i, 1);
	}
	

	auto check = [&](int mid) {
		for (int i = m1 + 1; i <= m1 + m2; ++i) {
			edge[i][1] += mid;
		}
		
		int hero = tail[0];
		addEdge(0, n, mid);
		
		queue<int> que;
		que.push(0);
		static bitset<N + 1> inq;
		inq.reset();
		inq[0] = true;
		static int dis[N + 1];
		memset(dis + 1, 63, sizeof(int) * n);
		static int cnt[N + 1];
		memset(cnt, 0, sizeof(int) * (n + 1));
		cnt[0] = 1;
		
		bool res = true;
		while (!que.empty()) {
			int u = que.front(); que.pop();
			cout <<  u;q
			inq[u] = false;
			for (int i = tail[u]; i; i = edge[i][2]) {
				int v = edge[i][0], w = edge[i][1];
//				cout << "!!! " << u << ' ' << v << ' ' << w << '\n';
				
				if (dis[u] + w < dis[v]) {
					dis[v] = dis[u] + w;
					if (!inq[v]) {
						if (++cnt[v] == n) {
							res = false;
							break;
						}
						que.push(v);
						inq[v] = true;
 					}
				}
			}
		}
		

		--m;
		tail[0] = hero;

		for (int i = m1 + 1; i <= m1 + m2; ++i) {
			edge[i][1] -= mid;
		}
		
		return res;
	};

check(0);
return ;

	int l = 0, r = n;
	while (l <= r) {
		int mid = (l + r) >> 1;
		
		if (check(mid)) {
			r = mid - 1;
		} else {
			l = mid + 1;
		}
	}
	
	cout << l << '\n';
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	
	int t;
	cin >> t;
	while (t--) {
		solve();
	}
	return 0;
}
/*
1
3 1 1
1 2 1
2 2 1
*/

Details

answer.code: In lambda function:
answer.code:71:36: error: ‘q’ was not declared in this scope
   71 |                         cout <<  u;q
      |                                    ^