UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#214846#2642. colorx_add_b0240ms19324kbC++111.8kb2024-11-22 19:09:072024-11-22 23:11:48

answer

#include<bits/stdc++.h>

namespace IO
{
	template<typename Type>
	void read(Type &x){
		char ch=getchar();
		x=0;bool f=0;
		while(ch<'0'||ch>'9')
			f|=(ch=='-'),ch=getchar();
		while(ch>='0'&&ch<='9')
			x=((x<<1)+(x<<3)+(ch^48)),ch=getchar();
		x=f?-x:x;
	}
}

using namespace std;

#define N 100005

int n,m,u,v,pos,idx1,idx2;
int head[N],dfn[N],seq[N<<1],to[N],st[22][N<<1],ret[N],sum1[N],sum2[N];
char color[N],ans[N];
char op;

struct Edge
{
	int u,v,nxt;
}e[N<<1];

void addEdge(int u,int v)
{
	e[++pos]={u,v,head[u]};
	head[u]=pos;
}

void initdfs(int u,int Father)
{
	dfn[u]=++idx1;seq[++idx2]=dfn[u];ret[dfn[u]]=u;
	if(!to[u]) to[u]=idx2;
	for(int i=head[u];i;i=e[i].nxt){
		int v=e[i].v;
		if(v==Father) continue ;
		sum1[v]=sum1[u]+(color[v]=='H');
		sum2[v]=sum2[u]+(color[v]=='G');
		initdfs(v,u);
		seq[++idx2]=dfn[u];
	}
}

void init()
{
	for(int i=1;i<=idx2;i++)
		st[0][i]=seq[i];
	for(int t=1;(1<<t)<=idx2;t++)
		for(int i=1;i+(1<<t)<=idx2;i++)
			st[t][i]=min(st[t-1][i],st[t-1][i+(1<<(t-1))]);
}

int LCA(int u,int v)
{
	int L=to[u],R=to[v];
	if(L>R) swap(L,R);
	int t=__lg(R-L+1);
	return min(st[t][L],st[t][R-(1<<t)+1]);
}

int dist1(int u,int v)
{
	return sum1[u]+sum1[v]-2*sum1[LCA(u,v)]+(color[LCA(u,v)]=='H');
}

int dist2(int u,int v)
{
	return sum2[u]+sum2[v]-2*sum2[LCA(u,v)]+(color[LCA(u,v)]=='G');
}

int main()
{
	IO::read(n);IO::read(m);
	scanf("%s",color+1);
	for(int i=1;i<n;i++){
		IO::read(u);IO::read(v);
		addEdge(u,v);
		addEdge(v,u);
	}
	initdfs(1,0);
	init();
	for(int i=1;i<=m;i++){
		IO::read(u);IO::read(v);
//		printf("%d\n",LCA(u,v));
		scanf("%s",&op);
		if(op=='H') ans[i]=(dist1(u,v))?'1':'0';
		else ans[i]=(dist2(u,v))?'1':'0';
	}
	printf("%s",ans+1);
}

详细

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

Test #1:

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

input:

920 900
HHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHGHHGHHHHHHHGGHGHHHGHHGHGHHHHHH...

output:

0010100111101111001000001000010101100010011110110110001100100101111000101111100001111001110100001111...

result:

wrong answer 1st lines differ - expected: '001010011110011110101000100001...101010011101001110111011...

Test #2:

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

input:

927 949
HHHHGHGGGHHHHGHGHHHHHGHGGHGGGHHHGGHHHHHHGGGGGGHHHGGHHHHGHHHHGGGHHHGHGHHHHGGGGHHGHHGGHGHGGGGG...

output:

1111011111111110101101101011111111111101111010110110111111111110111011111111111101111111111011111111...

result:

wrong answer 1st lines differ - expected: '111100001111011110110110011011...001100101101011111101111...

Test #3:

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

input:

934 998
HHHHGHHHGHHGGGHGGHGHGHHHGHHGHGGGHHHHHGHHGGHHHHHHGHHHGGHHHHHGGHHHGHHHHHHHGHHGHGHGGHHGHGHHHGGH...

output:

1101011111111010110101111111110111111101111100110111001101110111111111011111111001111011001010101111...

result:

wrong answer 1st lines differ - expected: '110101011111101011010101111111...101110111001110010111110...

Test #4:

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

input:

941 947
HHHHHHHHHHHHHHHGHHHGHHHGHHHHGHHHGHHHHHHHHGHHHHHHHHHGHHHHHGHHHHHGHHGHHHHGHGGHHGHHHHHHHHHHGGHH...

output:

1111111011010110001111010101110101111001000101101101111101111001101111111111111011010101001111101111...

result:

wrong answer 1st lines differ - expected: '111111101101011000110101010111...010110001111011001100000...

Test #5:

score: 0
Wrong Answer
time: 48ms
memory: 18452kb

input:

92189 98896
HHHHHHHHHGHHHHGGGHGHHHHHHGHHHHHGHHHHHHHHHGHGHHHGHHHHHHGGHHHGHGGHHHHHHHHHGHHHHHHGHGHGHHHG...

output:

1110111111111110111111111111111111111011110111111111111111110111111101111111111111111111111111101111...

result:

wrong answer 1st lines differ - expected: '111011111111111111111111111111...111111111111111111111111...

Test #6:

score: 0
Wrong Answer
time: 33ms
memory: 19164kb

input:

95803 95747
HHHHHHHHHHHHHGHHHHHHHHHHHHHHHHHHGHHGHGHHHHGHGHHHHHHGGHHHHHHHHHHHHGHHHGHHHHHHHHHGHGGHHHHH...

output:

1011011101111111111111111101111111111111111111111111111111101111111111110111111101111111001101101111...

result:

wrong answer 1st lines differ - expected: '101101110111111111111111110111...111110110111111011111111...

Test #7:

score: 0
Wrong Answer
time: 25ms
memory: 18532kb

input:

92610 90996
HHGGGHHGHGGGHGHGHGGGGGGHGGGHGGHGHGHGGHHHHHGHGGHGHGGGGHGGGHGGHHGHHHGGHGHGGHGGGHGGGGGGGGGG...

output:

1111111111111111111111111111111111111111111111111111110111111111111111111111101111011111111111011111...

result:

wrong answer 1st lines differ - expected: '111111111111111111101111111111...111111001111111111111111...

Test #8:

score: 0
Wrong Answer
time: 46ms
memory: 19240kb

input:

96224 91494
HHHHHHHHGGHHGHHHHHHHHHHHHHGHHHGHHHHHHHHHHHHHHHHHGGHHHHHHGHHHHHHHHHHHHHHHHHGHGGGHGHGHHHHH...

output:

1111011111101111111111111111011011110101001111011101111011111111111011111111111111111111111011111101...

result:

wrong answer 1st lines differ - expected: '111101011011110011111111111101...110101101111111111111110...

Test #9:

score: 0
Wrong Answer
time: 48ms
memory: 18620kb

input:

93031 96743
HHHHHHHHHGHHHHHHHHHHHHHHHHHGGHHHHGHHHGHHHHHHHHHGHHHHHHHHHHHHHHGGHHHHHGGHGHHHGHHHGHHHHHHG...

output:

0100011111101110011111110111001111101111110101110110111111101111111101111110110001011110011111011111...

result:

wrong answer 1st lines differ - expected: '010001111110111101111111011100...111111110111001111110101...

Test #10:

score: 0
Wrong Answer
time: 40ms
memory: 19324kb

input:

96645 93594
HHHHHHHHHGHGHHHHHHHGHHHHGGGHHHHHHHHHHHHHHHHHHGHHHHHGHGHHHHHGHGHHHHHGHHHHGHHHHGGHHGHHHHGH...

output:

0101010111111111111111111011111111101111111101111111111111111011111111111110111110111111111111111110...

result:

wrong answer 1st lines differ - expected: '010100011011111001111111111111...111001111111111111011001...