设为首页 加入收藏

TOP

NOIP 2012 题解(四)
2015-07-20 17:56:07 来源: 作者: 【 】 浏览:16
Tags:NOIP 2012 题解
,因为他一定能去,而且目前他最没用。

否则的话,就找一个距离最短的目标点过去(当然也可能一个都过不去喽)。

【证明】设军队x的经过的目标点是a,且他到根后回不到x。设他去了目标点b,设到a的军队是y。

显然我们可以让y去b,他一定能去。

【代码】

#include
         
          
#include
          
            #define INF 500000000000005ll #define N 50005 using namespace std; typedef long long LL; struct adj{int go,next,s;}a[N*2]; struct arr { int x;LL y; friend inline int operator < (const arr &A,const arr &B){return A.y
           
            =0;i--) if (f[k][i]&&dis[k][i]<=T) T-=dis[k][i],k=f[k][i]; return k; } void find(int k) { if (can[k]==Num) return;int flag=0; for (int i=end[k];i;i=a[i].next) { int go=a[i].go;if (go==f[k][0]) continue; find(go);if (can[go]!=Num) return;flag=1; } if (flag) can[k]=Num; } inline int check(LL Time) { Num++;int P=0,Q=0;p[0].y=INF; for (int i=1;i<=m;i++) if (Time
            
             Q) return 1; if (p[i].y
             
              Q; } LL erfen(LL l,LL r) { if (l==r) return l; LL mid=(l+r)>>1ll; if (check(mid)) return erfen(l,mid); return erfen(mid+1,r); } int main() { scanf("%d",&n); for (i=1;i
               
               

首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Lesson: Interfaces 下一篇POJ 2907 Collecting Beepers (D..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: