QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#870411 | #9678. 网友小 Z 的树 | staring# | 0 | 1ms | 14868kb | C++14 | 2.5kb | 2025-01-25 16:16:41 | 2025-01-25 16:16:49 |
Judging History
answer
#include "diameter.h"
#include<bits/stdc++.h>
using namespace std;
namespace staring
{
typedef long long LL;
typedef vector<int> VEC;
typedef pair<int,int> PII;
typedef pair<LL,LL> PLL;
#define fir first
#define sec second
#define FOR(i,a,b) for(int i=(a),__i=(b);i<=__i;i++)
#define ROF(i,a,b) for(int i=(a),__i=(b);i>=__i;i--)
template<typename TYPE>
TYPE gmax(TYPE &x,const TYPE y){return x<y?x=y:x;}
template<typename TYPE>
TYPE gmin(TYPE &x,const TYPE y){return y<x?x=y:x;}
static constexpr int SIZE=1<<20;
static char buffin[SIZE]{},*pin1{},*pin2{};
static char buffout[SIZE]{},*pout{buffout};
#define GETC() (pin1==pin2&&(pin2=(pin1=buffin)+fread(buffin,1,SIZE,stdin),pin1==pin2)?EOF:*pin1++)
#define PUTC(c) (pout-buffout==SIZE&&(fwrite(buffout,1,SIZE,stdout),pout=buffout),*pout++=c)
template<typename TYPE>
void read(TYPE &x)
{
static int signf{0},chin{0};
x=signf=0,chin=GETC();
while(chin<'0'||chin>'9')signf|=chin=='-',chin=GETC();
while(chin>='0'&&chin<='9')x=(x<<3)+(x<<1)+(chin^48),chin=GETC();
if(signf)x=-x;
}
template<typename TYPE>
void write(TYPE x,char ch=' ',bool f=0)
{
static char stack[64]{},top{0};
!x&&PUTC('0'),x<0&&(x=-x,PUTC('-'));
while(x)stack[top++]=x%10|48,x/=10;
while(top)PUTC(stack[--top]);
if(ch)PUTC(ch);
}
}using namespace staring;
PII find_diameter(int subid, int n)
{
if(n==1)return {1,1};
if(n==2)return {1,2};
int x=1,y=2,z=3;
VEC dxy(n+1),dxz(n+1),dyz(n+1),dz(n+1);
FOR(i,3,n)
{
dxy[i]=query(x,y,i);
if(dxy[i]>dxy[z])z=i;
}
int a=0,b=0;
FOR(i,1,n)
{
if(i!=x&&i!=z)
{
dxz[i]=query(x,z,i);
if(!a||dxz[i]<dxz[a])a=i;
}
if(i!=y&&i!=z)
{
dyz[i]=query(y,z,i);
if(!b||dyz[i]<dyz[b])b=i;
}
}
int disxz=0,disyz=0,disxy=0;
disxz=in(a,x,z)?dxz[a]>>1:1;
disyz=in(b,y,z)?dyz[b]>>1:1;
disxy=dxy[z]-disxz-disyz;
dz[x]=disxz,dz[y]=disyz;
int c=z;a=b=0;
FOR(i,1,n)
{
if(i!=x&&i!=y&&i!=z)
dz[i]=(dxz[i]+dyz[i]-dxy[i]+disxy)>>1;
if(dz[i]>dz[c])c=i;
if(i!=x&&i!=z&&(!a||dxz[i]>dxz[a]))a=i;
if(i!=y&&i!=z&&(!b||dyz[i]>dyz[b]))b=i;
}
return dz[c]>query(a,b,z)-dz[a]-dz[b]?(PII){z,c}:(PII){a,b};
}
詳細信息
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 14868kb
input:
1 100 25 1 3 2 18 3 8 4 18 5 14 6 22 7 18 8 10 9 11 10 12 11 25 12 16 13 11 14 17 15 17 16 25 17 2 18 20 19 18 20 12 21 1 22 17 23 14 24 1 50 1 37 2 27 3 10 4 25 5 16 6 17 7 10 8 36 9 16 10 6 11 48 12 2 13 28 14 30 15 10 16 44 17 31 18 1 19 6 20 7 21 30 22 42 23 45 24 23 25 27 26 39 27 45 28 48 29 4...
output:
WA
result:
wrong answer Wrong Answer
Subtask #2:
score: 0
Skipped
Dependency #1:
0%
Subtask #3:
score: 0
Skipped
Dependency #2:
0%
Subtask #4:
score: 0
Skipped
Dependency #3:
0%
Subtask #5:
score: 0
Skipped
Dependency #4:
0%
Subtask #6:
score: 0
Skipped
Dependency #5:
0%
Subtask #7:
score: 0
Skipped
Dependency #6:
0%
Subtask #8:
score: 0
Skipped
Dependency #7:
0%
Subtask #9:
score: 0
Skipped
Dependency #8:
0%
Subtask #10:
score: 0
Skipped
Dependency #9:
0%
Subtask #11:
score: 0
Skipped
Dependency #1:
0%