QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#571693#9347. Competition in Swiss-systemreal_sigma_team#WA 132ms3816kbC++172.1kb2024-09-18 04:00:172024-09-18 04:00:17

Judging History

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

  • [2024-09-18 04:00:17]
  • 评测
  • 测评结果:WA
  • 用时:132ms
  • 内存:3816kb
  • [2024-09-18 04:00:17]
  • 提交

answer

//#pragma GCC optimize("O3")
#include<bits/stdc++.h>

using namespace std;

typedef int ll;

void solve() {
	ll n, m;
	cin >> n >> m;
	vector<vector<ll>> all(n);
	vector<ll> mp(n, 0), gp(n, 0), cm(n, 0), cg(n, 0);
	vector<ll> cma(m);
	for (ll i = 0; i < m; i++) {
		cin >> cma[i];
	}
	for (ll i = 0; i < m; i++) {
		vector<bool> used(n, false);
		for (ll j = 0; j < cma[i]; j++) {
			ll a, b, w1, w2, d;
			cin >> a >> b >> w1 >> w2 >> d;
			a--;
			b--;
			used[a] = true;
			used[b] = true;
			if (w1 == 2) {
				mp[a] += 3;
			}
			if (w2 == 2) {
				mp[b] += 3;
			}
			if (w1 == w2) {
				mp[a]++;
				mp[b]++;
			}
			gp[a] += w1 * 3 + d;
			gp[b] += w2 * 3 + d;
			cg[a] += w1 + w2 + d;
			cg[b] += w1 + w2 + d;
			all[a].push_back(b);
			all[b].push_back(a);
		}
		for (ll j = 0; j < n; j++) {
			cm[j]++;
			if (!used[j]) {
				cg[j] += 2;
				gp[j] += 6;
				mp[j] += 3;
			}
		}
		cout << "Round " << i + 1 << '\n';
		for (ll j = 0; j < n; j++) {
			cout << mp[j] << ' ';
			ll col = 0, nu = 0, nd = 1;
			for (auto k : all[j]) {
				col++;
				ll nowu = mp[k], nowd = cm[k] * 3;
				if (nowu * 3 < nowd) {
					nowu = 1;
					nowd = 3;
				}
				ll x = nd * nowd / gcd(nd, nowd);
				nu *= x / nd;
				nd = x;
				nu += nowu * (x / nowd);
			}
			if (col == 0) {
				cout << "1/3" << ' ';
			} else {
				nd *= col;
				ll x = gcd(nu, nd);
				cout << nu / x << '/' << nd / x << ' ';
			}
			if (gp[j] * 3 < cg[j] * 3) {
				cout << "1/3" << ' ';
			} else {
				ll x = gcd(cg[j] * 3, gp[j]);
				cout << gp[j] / x << '/' << cg[j] * 3 / x << ' ';
			}
			col = 0;
			nu = 0;
			nd = 1;
			for (auto k : all[j]) {
				col++;
				ll nowu = gp[k], nowd = cg[k] * 3;
				if (nowu * 3 < nowd) {
					nowu = 1;
					nowd = 3;
				}
				ll x = nd * nowd / gcd(nd, nowd);
				nu *= x / nd;
				nd = x;
				nu += nowu * (x / nowd);
			}
			if (col == 0) {
				cout << "1/3" << ' ';
			} else {
				nd *= col;
				ll x = gcd(nu, nd);
				cout << nu / x << '/' << nd / x << ' ';
			}
			cout << '\n';
		}
	}
}

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	ll t;
	cin >> t;
	while (t--) {
		solve();
	}
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3816kb

input:

2
2 3
0 1 1
1 2 2 0 1
1 2 1 1 1
3 2
1 1
1 2 0 2 0
2 3 2 0 0

output:

Round 1
3 1/3 1/1 1/3 
3 1/3 1/1 1/3 
Round 2
6 1/2 13/15 7/15 
3 1/1 7/15 13/15 
Round 3
7 4/9 17/24 11/24 
4 7/9 11/24 17/24 
Round 1
0 1/1 1/3 1/1 
3 1/3 1/1 1/3 
3 1/3 1/1 1/3 
Round 2
3 1/1 1/2 1/1 
6 1/2 1/1 1/2 
3 1/1 1/2 1/1 

result:

ok 17 lines

Test #2:

score: -100
Wrong Answer
time: 132ms
memory: 3516kb

input:

3215
26 4
13 13 11 13
19 9 2 1 0
17 1 0 2 0
25 15 2 0 0
14 5 1 2 0
20 2 0 2 0
10 21 2 1 0
3 16 0 2 0
8 6 2 1 0
26 24 1 2 0
22 18 0 1 2
7 11 2 0 0
13 4 1 2 0
23 12 0 2 0
18 20 1 2 0
3 5 2 1 0
25 24 1 2 0
7 9 1 2 0
11 14 2 0 0
8 17 1 1 1
23 12 2 0 0
19 26 1 2 0
2 15 0 2 0
4 13 2 1 0
16 10 0 2 0
6 21 0...

output:

Round 1
3 1/3 1/1 1/3 
3 1/3 1/1 1/3 
0 1/1 1/3 1/1 
3 1/3 2/3 1/3 
3 1/3 2/3 1/3 
0 1/1 1/3 2/3 
3 1/3 1/1 1/3 
3 1/3 2/3 1/3 
0 1/1 1/3 2/3 
3 1/3 2/3 1/3 
0 1/1 1/3 1/1 
3 1/3 1/1 1/3 
0 1/1 1/3 2/3 
0 1/1 1/3 2/3 
0 1/1 1/3 1/1 
3 1/3 1/1 1/3 
0 1/1 1/3 1/1 
0 1/3 5/9 1/3 
3 1/3 2/3 1/3 
0 1/1 1...

result:

wrong answer 19th lines differ - expected: '3 1/3 5/9 1/3', found: '0 1/3 5/9 1/3 '