QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#66027 | #5110. Splitstream | rumen_m# | WA | 18ms | 13604kb | C++14 | 2.5kb | 2022-12-06 00:14:07 | 2022-12-06 00:14:11 |
Judging History
answer
# include <bits/stdc++.h>
const long long MAXN = 1e6+5;
using namespace std;
struct step
{
char type;
long long a,b,c;
};
step w[MAXN];
long long from[MAXN],to[MAXN],sz[MAXN];
bool fl[MAXN];
void bfs()
{
queue <long long> q;
q.push(1);
while(!q.empty())
{
long long x = q.front();
q.pop();
//cout<<x<<endl;
long long id = to[x];
if(id==0)continue;
if(fl[x])continue;
fl[x] = 1;
if(w[id].type == 'S')
{
//cout<<"OK"<<endl;
sz[w[id].b] = (sz[x]+1)/2;
sz[w[id].c] = (sz[x]/2);
q.push(w[id].b);
q.push(w[id].c);
}
else
{
sz[w[id].c] = sz[w[id].a] + sz[w[id].b];
// cout<<w[id].c<<" --> "<<sz[w[id].c]<<endl;
q.push(w[id].c);
}
}
}
long long findit(long long x, long long k)
{
//cout<<x<<" && "<<k<<" "<<sz[x]<<endl;
if(x == 1) return k;
long long id = from[x];
if(w[id].type == 'M')
{
long long a = w[id].a;
long long b = w[id].b;
if(2*min(sz[a],sz[b])>=k)
{
// cout<<"Here"<<endl;
if(k%2 == 0)
{
return findit(b,k/2);
}
else
return findit(a,(k+1)/2);
}else
{
if(sz[a] < sz[b])
{
return findit(b,k-sz[a]);
}
else
return findit(a, k-sz[b]);
}
}
else
{
long long a = w[id].a;
long long b = w[id].b;
long long c = w[id].c;
if(b==x)
{
return findit(a,k*2-1);
}
else
return findit(a,k*2);
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
long long n,q,m,i,j;
cin>>m>>n>>q;
for(i = 1;i<=n;i++)
{
cin>>w[i].type>>w[i].a>>w[i].b>>w[i].c;
if(w[i].type == 'S')
{
to[w[i].a] = i;
from[w[i].b] = i;
from[w[i].c] = i;
}
else
{
to[w[i].a] = i;
to[w[i].b] = i;
from[w[i].c] = i;
}
}
sz[1] = m;
bfs();
long long x,k;
for(i = 1;i<=q;i++)
{
cin>>x>>k;
if(sz[x]<k)cout<<"none"<<endl;
else
cout<<findit(x,k)<<endl;;
}
}
详细
Test #1:
score: 100
Accepted
time: 2ms
memory: 9324kb
input:
5 8 26 M 8 9 13 S 2 4 5 S 1 2 3 M 6 5 8 S 4 9 10 S 10 14 15 S 3 6 7 S 7 11 12 2 3 2 4 3 2 3 3 4 2 4 3 5 1 5 2 6 1 6 2 7 1 7 2 8 2 8 3 9 1 9 2 10 1 10 2 11 1 11 2 12 1 13 3 13 4 14 1 14 2 15 1
output:
5 none 4 none 5 none 3 none 2 none 4 none 3 none 1 none 5 none 4 none none 3 none 5 none none
result:
ok 26 lines
Test #2:
score: 0
Accepted
time: 2ms
memory: 13496kb
input:
1000000000 8191 1000 S 1 2 3 S 2 4 5 S 3 6 7 S 4 8 9 S 5 10 11 S 6 12 13 S 7 14 15 S 8 16 17 S 9 18 19 S 10 20 21 S 11 22 23 S 12 24 25 S 13 26 27 S 14 28 29 S 15 30 31 S 16 32 33 S 17 34 35 S 18 36 37 S 19 38 39 S 20 40 41 S 21 42 43 S 22 44 45 S 23 46 47 S 24 48 49 S 25 50 51 S 26 52 53 S 27 54 55...
output:
1 3 999999999 499999999 333333331 999999997 499999997 333333329 2 4 1000000000 500000000 333333332 999999998 499999998 333333330 1 5 999999997 499999997 333333329 999999993 499999993 333333325 3 7 999999999 499999999 333333331 999999995 499999995 333333327 2 6 999999998 499999998 333333330 999999994...
result:
ok 1000 lines
Test #3:
score: 0
Accepted
time: 10ms
memory: 13604kb
input:
1000000000 8190 1000 S 1 2 3 M 8193 8194 8192 S 2 4 5 M 8195 8196 8193 S 3 6 7 M 8197 8198 8194 S 4 8 9 M 8199 8200 8195 S 5 10 11 M 8201 8202 8196 S 6 12 13 M 8203 8204 8197 S 7 14 15 M 8205 8206 8198 S 8 16 17 M 8207 8208 8199 S 9 18 19 M 8209 8210 8200 S 10 20 21 M 8211 8212 8201 S 11 22 23 M 821...
output:
1 2 1000000000 500000000 333333333 999999999 499999999 333333332 1 1 3 3 999999999 999999999 499999999 499999999 333333331 333333331 999999997 999999997 499999997 499999997 333333329 333333329 2 2 4 4 1000000000 1000000000 500000000 500000000 333333332 333333332 999999998 999999998 499999998 4999999...
result:
ok 1000 lines
Test #4:
score: -100
Wrong Answer
time: 18ms
memory: 13520kb
input:
1000000000 10000 1000 S 1 2 3 S 2 4 5 S 4 6 7 S 6 8 9 S 8 10 11 S 10 12 13 S 12 14 15 S 14 16 17 S 16 18 19 S 18 20 21 S 20 22 23 S 22 24 25 S 24 26 27 S 26 28 29 S 28 30 31 S 30 32 33 S 32 34 35 S 34 36 37 S 36 38 39 S 38 40 41 S 40 42 43 S 42 44 45 S 44 46 47 S 46 48 49 S 48 50 51 S 50 52 53 S 52 ...
output:
1 1 536870913 none 2 none 3 none 4 none 5 none 6 none 7 none 8 none 9 none 10 none 11 none 12 none 13 none 14 none 15 none 16 none 17 none 18 none 19 none 20 none 21 none 22 none 23 none 24 none 25 none 26 none 27 none 28 none 29 none 30 none 31 none 32 none 33 none 34 none 35 none 36 none 37 none 3...
result:
wrong answer 4th lines differ - expected: '1000000000', found: 'none'