题目 2638 数列操作ψ
2017-03-27 14:50:07
|
|
题目 2638 数列操作ψ
2017-03-27 14:29:58
|
|
输出记得用.lf傻B的用.llf错了数次
|
|
暴搜。。。
|
|
给出的A矩阵不一定满秩!
题目 2637 [HEOI 2013]钙铁锌硒维生素
2017-03-27 13:42:33
|
|
spj呢
题目 706 [SDOI 2005] 动物园
2017-03-27 11:51:24
|
|
大神求助,为何 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; }
题目 2109 [NOIP 2015]运输计划
2017-03-27 09:44:21
|
|
唉
|
|
。。无语了,用double输出和long double输出结果还能不一样、让Pascal只有10位的extended情何以堪
题目 2292 [HZOI 2015]西瓜
2017-03-26 22:22:23
|
|
|
|
mdzz没有读入起点还能过一个点
|
|
ctrlC+v上一题,忘记已经改变变量名的尴尬=-=
题目 133 [USACO Mar08] 牛跑步
2017-03-26 21:04:41
|
|
和1682差不多
题目 2570 奔跑
2017-03-26 20:26:32
|
|
回复 @wspzz=5 : 此森林的另一棵树路过~
|
|
题目 2613 [SYZOI Round1]组合数
2017-03-26 20:06:55
|
|
01背包????
|
|
|
|
居然爆int。。。
|
|
根本不能过编译
页面 9 [C++] string 类的函数
2017-03-26 16:56:02
|
|
啊♂?幻♂想♂乡?
题目 2189 [HZOI 2015] 帕秋莉的超级多项式
2017-03-26 16:46:00
|