QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#870447#9678. 网友小 Z 的树staring#0 1ms14528kbC++142.5kb2025-01-25 16:25:202025-01-25 16:25:25

Judging History

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

  • [2025-01-25 16:25:25]
  • 评测
  • 测评结果:0
  • 用时:1ms
  • 内存:14528kb
  • [2025-01-25 16:25:20]
  • 提交

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;
    }

    if(a==b)return {z,c};
    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: 14528kb

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%