Gravatar
WxjianF019
积分:149
提交:59 / 96
++--写反,果断WA0

Gravatar
~玖湫~
积分:914
提交:251 / 418
@Hzoi__goodboy
不要脸

Gravatar
Hallmeow
积分:1513
提交:469 / 1048
最后一个点实在是太凶残了QAQ
只能打表T-T 待我来填此坑(先撑过NOIP2017再说)

Gravatar
wumingshi
积分:662
提交:163 / 318
20170713:最后一个点太凶残了,卡常卡不过去就打了个表,结果成了rank1,我也是醉了。。。
20171103UPD:终于不用打表AC了。。顺便吐槽:经过本zz的多次测试,不加任何优化时间效率是最高的。。。
如果有人有好的优化方法可以告诉我。。

Gravatar
_Itachi
积分:4326
提交:1498 / 3922
回复 @ワンパンマン :
可是这两个值明明相等,都是-2147483647

Gravatar
サイタマ
积分:1132
提交:302 / 714
mdzz,我的最小值本来定的-(1<<31)+1,结果w一个点,换成-0x7fffffff才A,注意啊各位!!!

Gravatar
Shirry
积分:2254
提交:554 / 1107
vector果然太慢,于是我果断选择打表(逃)。

Gravatar
HZOI_蒟蒻一只
积分:1517
提交:319 / 790
咦哲学符号哪里去了……

Gravatar
CSU_Turkey
积分:1723
提交:614 / 1589
学会树剖了哈哈

Gravatar
Imone NOI2018Au
积分:456
提交:64 / 185
不过不打表不剪枝也能无压力跑过。。。

Gravatar
Imone NOI2018Au
积分:456
提交:64 / 185
需要卡常数吗?加个剪枝不就完了吗?

bool ok(int d) {
if(d >= P[1].d) return 1;
if(d < P[1].d - 1000) return 0;
/** ... **/
}

Gravatar
하루Kiev
积分:1158
提交:294 / 700
来丫的多开点时限 最后一个点极凶无比
我卡了两年了。。两秒也行啊

Gravatar
sherlockm
积分:121
提交:19 / 78
#define FUCK if(i==1&&x==278718&&y==186322) return 0*printf("142501313\n");

Gravatar
Hzoi_Mafia
积分:1559
提交:331 / 773
果然我人傻自带大常数= =

Gravatar
Hzoi_Mafia
积分:1559
提交:331 / 773
回复 @HZOI_Maple :
666
人傻自带大常数

Gravatar
Hzoi_Maple
积分:829
提交:210 / 747
O(≧口≦)O,打个暴力生抡了90分,还有两个点死活过不去啊w(゚Д゚)w

Gravatar
*ZJ
积分:23
提交:3 / 18
大神求助,为何 wa 2个点(transport8 & transport11),不胜感激!!!!!!!!!!
#include<iostream>
#include<cstdio>
#include<cstring>
#define MAXN 300005
using namespace std;
int n,m,tim,l=0,r=0,mid,ent;
int dr[MAXN],head[MAXN],task[MAXN][3];
int bs[MAXN][2],sz[MAXN],fa[MAXN],top[MAXN],tid[MAXN],deep[MAXN];
int aa[MAXN];
struct edge{int to,next,w;}e[MAXN*2];
void find_heavy(int u,int f,int ds)
{
sz[u]=1; fa[u]=f; dr[u]=ds; deep[u]=deep[fa[u]]+1;int ms=0;
for(int i=head[u],v=e[i].to,w=e[i].w;i;i=e[i].next,v=e[i].to,w=e[i].w)
{
if(v==f) continue;
find_heavy(v,u,ds+w);
sz[u]+=sz[v];
if(sz[v]>ms) ms=sz[v],bs[u][0]=v,bs[u][1]=w;
}
}
void connet_heavy(int u,int tp,int val)
{
top[u]=tp; tid[u]=++tim; aa[tim]=val;
if(!bs[u][0]) return;
connet_heavy(bs[u][0],tp,bs[u][1]);
for(int i=head[u],v=e[i].to,w=e[i].w;i;i=e[i].next,v=e[i].to,w=e[i].w)
{
if(v==fa[u]||v==bs[u][0]) continue;
connet_heavy(v,v,w);
}
}
void find_lca_op_dis()
{
for(int i=1;i<=m;i++)
{
int a=task[i][0],b=task[i][1],ta=top[a],tb=top[b],lca;
while(ta!=tb)
{
if(deep[ta]<deep[tb]) swap(ta,tb),swap(a,b);
a=fa[ta]; ta=top[a];
}
if(deep[a]<deep[b]) lca=a; else lca=b;
task[i][2]=dr[task[i][0]]+dr[task[i][1]]-2*dr[lca];
r=max(r,task[i][2]);
}
}
bool check()
{
int d[MAXN],o=0,k=0,maxn=0,mbxn=0;
memset(d,0,sizeof(d));
for(int i=1;i<=m;i++) if(task[i][2]>mid)
{
o++; mbxn=max(mbxn,task[i][2]);
int a=task[i][0],b=task[i][1],ta=top[a],tb=top[b];
while(ta!=tb)
{
if(deep[ta]<deep[tb]) swap(ta,tb),swap(a,b);
d[tid[ta]+1]++; d[tid[a]+1]--;
a=fa[ta]; ta=top[a];
}
if(deep[a]>deep[b]) swap(a,b);
d[tid[a]+1]++; d[tid[b]+1]--;
}
for(int i=1;i<=n;i++)
{
k+=d[i];
if(o==k) maxn=max(maxn,aa[i]);
}
if(mbxn-maxn<=mid) return true;
return false;
}
void work()
{
while(l<r)
{
mid=(l+r)/2;
if(check()) r=mid; else l=mid+1;
}
printf("%d",r);
}
int main()
{
scanf("%d%d",&n,&m);
for(int a,b,c,i=1;i<n;i++)
{
scanf("%d%d%d",&a,&b,&c);
e[++ent].to=a; e[ent].next=head[b]; e[ent].w=c; head[b]=ent;
e[++ent].to=b; e[ent].next=head[a]; e[ent].w=c; head[a]=ent;
}
for(int i=1;i<=m;i++) scanf("%d%d",&task[i][0],&task[i][1]);
deep[1]=1;
find_heavy(1,0,0);
connet_heavy(1,1,0);
find_lca_op_dis();
work();
return 0;
}

Gravatar
asddddd
积分:616
提交:109 / 351
用vector存的图,死活过不去最后一点。。。果断打表QAQ

Gravatar
Rapiz
积分:1619
提交:386 / 700
出题人将在此教你重视cpu cache的做人道理

Gravatar
Tiny
积分:651
提交:206 / 420
fread 2.24秒
普通快读 3.07秒 低空掠过=_=
如此凶残之卡常 自带大常数