UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#214626#2376. 树与异或STASISZHY30182ms14296kbC++111.3kb2024-11-20 20:57:332024-11-20 23:07:16

answer

// Problem: A. 树与异或
// Contest: undefined - NOIP2024训练赛 10
// URL: http://www.noi.ac/contest/1162/problem/2376
// Memory Limit: 1024 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include<bits/stdc++.h>
#define int long long
#define fi first
#define se second
#define PII pair<int, int>

using namespace std;

const int N = 2e5 + 10, M = 1e6 + 10, mod = 1e9 + 7, INF = 0x3f3f3f3f;

int n, m, q, ans;
int s[N], dp[N][4], f[N];

vector<int> e[N];

void dfs(int now, int fa)
{
	dp[now][0] = s[now], f[now] = fa;
	for(auto i : e[now])
	{
		if(i == fa) continue;
		dfs(i, now);
		dp[now][1] ^= dp[i][0];
		dp[now][2] ^= dp[i][1];
	}
}

signed main()
{
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	cin >> n >> q;
	for(int i = 1; i <= n; i ++) cin >> s[i];
	for(int i = 1; i < n; i ++)
	{
		int u, v; cin >> u >> v;
		e[u].push_back(v), e[v].push_back(u);
	}
	dfs(1, 1); 
	for(int i = 1; i <= q; i ++)
	{
		int x, v, res = 0; cin >> x >> v;
		if(x != 1) dp[f[x]][1] ^= v ^ dp[x][0], res ^= dp[f[x]][0] ^ dp[f[x]][1];
		if(f[x] != 1) dp[f[f[x]]][2] ^= v ^ dp[x][0], res ^= dp[f[f[x]]][0];
		dp[x][0] = v, res ^= dp[x][1] ^ dp[x][2];
		ans = (ans + (res * i % mod) * i % mod) % mod;
	}
	cout << ans << '\n';
	return 0;
}

详细

小提示:点击横条可展开更详细的信息

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 6052kb

input:

1000 994
780089107 4670366 871010085 73730768 526852049 572589363 885190993 1049357301 450850404 460...

output:

986389582

result:

wrong answer 1st numbers differ - expected: '503748432', found: '986389582'

Test #2:

score: 10
Accepted
time: 0ms
memory: 6048kb

input:

1000 999
26885995 181771373 378079250 245122183 660787775 479226046 575400611 257120086 214404794 48...

output:

301019013

result:

ok 1 number(s): "301019013"

Test #3:

score: 0
Wrong Answer
time: 0ms
memory: 6052kb

input:

1000 994
978408146 31636243 945016735 512129400 92881624 689719983 649699545 964802847 100094796 941...

output:

659045821

result:

wrong answer 1st numbers differ - expected: '250985726', found: '659045821'

Test #4:

score: 0
Wrong Answer
time: 61ms
memory: 14292kb

input:

100000 99994
194640838 777315353 114710204 754050649 372592717 210279787 542056883 638262010 7998293...

output:

781171918

result:

wrong answer 1st numbers differ - expected: '897014293', found: '781171918'

Test #5:

score: 10
Accepted
time: 63ms
memory: 14296kb

input:

100000 100000
458877901 215980825 777376132 863774865 34430451 828397116 94813690 931300514 10548367...

output:

351450518

result:

ok 1 number(s): "351450518"

Test #6:

score: 10
Accepted
time: 58ms
memory: 14296kb

input:

100000 99991
56406146 757409402 876799234 573444553 883023109 326033134 328116703 623771278 41269529...

output:

440189625

result:

ok 1 number(s): "440189625"

Test #7:

score: 0
Runtime Error

input:

1000000 999998
814298729 663807029 628693441 45635199 148428014 913833778 1034283337 600802841 58045...

output:


result:


Test #8:

score: 0
Runtime Error

input:

1000000 999993
112899321 425466951 471078924 857561298 449437156 710041336 1033281580 23390934 44420...

output:


result:


Test #9:

score: 0
Runtime Error

input:

1000000 1000000
273043260 1042513348 30746190 864557483 187812119 562837674 263192174 364182254 3537...

output:


result:


Test #10:

score: 0
Runtime Error

input:

1000000 999995
83067658 1064735371 623243759 757522311 539363923 924297206 75317137 543750195 822898...

output:


result: