1782: [Usaco2010 Feb]slowdown 慢慢游

Time Limit: 1 Sec  Memory Limit: 64 MB
Submit: 570  Solved: 346
[Submit][Status][Discuss]

Description

每天Farmer John的N头奶牛(1 <= N <= 100000,编号1…N)从粮仓走向他的自己的牧场。牧场构成了一棵树,粮仓在1号牧场。恰好有N-1条道路直接连接着牧场,使得牧场之间都恰好有一条路径相连。第i条路连接着A_i,B_i,(1 <= A_i <= N; 1 <= B_i <= N)。奶牛们每人有一个私人牧场P_i (1 <= P_i <= N)。粮仓的门每次只能让一只奶牛离开。耐心的奶牛们会等到他们的前面的朋友们到达了自己的私人牧场后才离开。首先奶牛1离开,前往P_1;然后是奶牛2,以此类推。当奶牛i走向牧场P_i时候,他可能会经过正在吃草的同伴旁。当路过已经有奶牛的牧场时,奶牛i会放慢自己的速度,防止打扰他的朋友。 考虑如下的牧场结构(括号内的数字代表了牧场的所有者)。 

Input

* 第1行 : 一个正整数N * 第2…N行: 第i+1行包括一对正整数A_i,B_i * 第N+1..N+N行: 第 N+i行 包括一个正整数: P_i

Output

* 第一行到第N行:第i行表示第i只奶牛需要被放慢的次数

Sample Input

5
1 4
5 4
1 3
2 4
4
2
1
5
3

Sample Output

0
1
0
2
1

HINT

Source

Gold

题解:其实就是求以1为根节点的树上从树根到某一点的链上比自己权值小的点的个数

这样子经典的问题直接树转数组搞定= =,省选前刷水感觉棒棒哒

  1 /**************************************************************
  2     Problem: 1782
  3     User: HansBug
  4     Language: Pascal
  5     Result: Accepted
  6     Time:576 ms
  7     Memory:6972 kb
  8 ****************************************************************/
  9
 10 type
 11     point=^node;
 12     node=record
 13                g:longint;
 14                next:point;
 15     end;
 16
 17 var
 18    i,j,k,l,m,n,t:longint;
 19    a:array[0..100005] of point;
 20    b,c:array[0..100005,1..2] of longint;
 21    d,e:array[0..200000] of longint;
 22 procedure swap(var x,y:longint);
 23           var z:longint;
 24           begin
 25                z:=x;x:=y;y:=z;
 26           end;
 27 procedure sort(l,r:longint);
 28           var i,j,x,y:longint;
 29           begin
 30                i:=l;j:=r;x:=c[(l+r) div 2,1];
 31                repeat
 32                      while c[i,1]<x do inc(i);
 33                      while c[j,1]>x do dec(j);
 34                      if i<=j then
 35                         begin
 36                              swap(c[i,1],c[j,1]);
 37                              swap(c[i,2],c[j,2]);
 38                              inc(i);dec(j);
 39                         end;
 40                until i>j;
 41                if i<r then sort(i,r);
 42                if l<j then sort(l,j);
 43           end;
 44 procedure edg(x,y:longint);
 45           var p:point;
 46           begin
 47                new(p);p^.g:=y;p^.next:=a[x];a[x]:=p;
 48           end;
 49 function sum(x:longint):longint;
 50          begin
 51               sum:=0;
 52               while x>0 do
 53                     begin
 54                          inc(sum,d[x]);
 55                          dec(x,x and (-x));
 56                     end;
 57          end;
 58 procedure add(x,y:longint);
 59           begin
 60                if x=0 then exit;
 61                while x<=n do
 62                      begin
 63                           inc(d[x],y);
 64                           inc(x,x and (-x));
 65                      end;
 66           end;
 67 procedure dfs(y,x:longint);
 68           var p:point;
 69           begin
 70                add(x,1);
 71                e[x]:=sum(x-1);p:=a[x];
 72                while p<>nil do
 73                      begin
 74                           if p^.g<>y then dfs(x,p^.g);
 75                           p:=p^.next;
 76                      end;
 77                add(x,-1);
 78           end;
 79
 80 begin
 81      readln(n);t:=1;
 82      for i:=1 to n-1 do readln(b[i,1],b[i,2]);
 83      for i:=1 to n do
 84          begin
 85               c[i,2]:=i;
 86               readln(c[i,1]);
 87          end;
 88      sort(1,n);
 89      for i:=1 to n-1 do
 90          begin
 91               b[i,1]:=c[b[i,1],2];
 92               b[i,2]:=c[b[i,2],2];
 93               edg(b[i,1],b[i,2]);
 94               edg(b[i,2],b[i,1]);
 95          end;
 96      t:=c[t,2];
 97      fillchar(d,sizeof(d),0);
 98      dfs(0,t);
 99      for i:=1 to n do writeln(e[i]);
100      readln;
101 end.    

转载于:https://www.cnblogs.com/HansBug/p/4431724.html

1782: [Usaco2010 Feb]slowdown 慢慢游相关推荐

  1. 2015: [Usaco2010 Feb]Chocolate Giving

    2015: [Usaco2010 Feb]Chocolate Giving Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 269  Solved:  ...

  2. 题目推荐—BZOJ 水题推荐

    [bzoj1756]Vijos1083小白逛公园 裸题- -..线段树维护lmax,rmax,max,sum然后搞之.. [Ahoi2008]Meet 紧急集合 求两两点的lca然后会发现必然有两个l ...

  3. 【美文】接受生活的无力感,才能更好的出发

    我们来不及悼念青春便遮掉了眼里的光, 掩埋了胸口的鸟,携着玲珑的心眼匆匆赶路, 生怕一个不小心就追赶不上主流的人生. 我曾经憎恨过一份工作,因为做事永远要快人一步. 五月的时候,我要写下半年的工作计划 ...

  4. 计算机漫游用户的工作原理,深入理解计算机系统——计算机系统漫游

    前言 入坑计算机原理嘛,漫游慢慢游 思维导图 1.1 信息就是位+上下文 什么是位? 一个程序的生命周期是从一个源程序开始的,源程序实际上就是一个有值 0 和 1 组成的 位(比特 序列,8个位 为一 ...

  5. 《人人都可以创业》连载1:创业很简单,从心开始

    谋哥写<人人都可以创业>这本电子书,其实最主要的一个原因是看了秦刚老师的文章,因为他的文章非常注重实战,注重  执行力.如果你有想法,你不去执行就等于空.很多时候,你有好的想法,但是就是前 ...

  6. 哈·曼丁的故事(二)

    那一年,他天天扳着手指头计算时日,算着百鸟朝王的时间. 时间过得飞快,不知不觉已经到了百鸟朝王的日子,老头纳斯尔对他说:"现在我要去接见百鸟,你照我说的去做吧." "好的 ...

  7. 普吉岛泡酒店浮潜攻略——我住过的普吉岛的8个酒店

    Ray的女朋友考了潜水证,Ray还没有浮潜过.他俩定的本期度假主题是潜水,让我推荐. OH~话说,好几年没写过旅游攻略了.于是满口答应,写篇普吉岛的攻略给他. 去过几次马尔代夫,班多士岛.椰子岛.满月 ...

  8. 海明威的《老人与海》人生感悟

    海明威的<老人与海>故事背景是在二十世纪中叶的古巴.主角人物是一位圣地亚哥的老渔夫,配角是一个叫马诺林的小孩.这位风烛残年的渔夫一连八十四天都没有钓到一条鱼,几乎都快饿死了:但他仍然不肯认 ...

  9. The Old Man and The Sea 老人与海 by Ernest Hemingway 欧内斯特-海明威

    The Old Man and The Sea 老人与海 by Ernest Hemingway    欧内斯特-海明威 Part 1 He was an old man who fished alo ...

最新文章

  1. 2018-2019-2 网络对抗技术 20165320 Exp4 恶意代码分析
  2. [原] Excel(VBA)中数据的非科学记数法显示
  3. 聊一聊:请假不想说真实原因,你都怎么跟领导讲?
  4. asp和php数据库怎么区分,asp与php的数据库有哪些区别
  5. 用Python实现二叉树的遍历
  6. ListBox的一个郁闷小问题!
  7. Docker 的两类存储资源 - 每天5分钟玩转 Docker 容器技术(38)
  8. 蓝桥杯 PREV-3 历届试题 带分数 Java版
  9. Xsens MVN Analyze高精度惯性动作捕捉系统Link版
  10. 分享使用ASO提升App Store排名的技巧,appstore排名优化
  11. 论文相关-MATHTYPE字体对应
  12. Spring 定时器时间设置规则
  13. phpmywind 查询结果生成csv文件并下载到本地
  14. Javascript 声明时用“var”跟不用var的区别
  15. amazon账号关联第一步你做好了吗?
  16. Docker (四) 容器基本命令
  17. element-ui el-table 表格渲染错位以及高度计算错误问题
  18. 码绘——动态图形艺术自画像
  19. 文件上传漏洞靶场upload-labs学习(pass1-pass5)
  20. 1984年高考数学试题。

热门文章

  1. Google Drive 被曝0day,可诱骗用户安装恶意软件
  2. Black Hat USA 2020 大会主议题大盘点(上)
  3. 《UNIX环境高级编程》笔记--read函数,write函数,lseek函数
  4. 2018.12.11 区块链论文翻译
  5. virt-install选项详解
  6. decide your linux OS is GUI or not
  7. PHP的HashTable实现
  8. Cisco ASA ‘LU allocate xlate failed’排错一例
  9. [翻译]用表单字段加亮的方式为用户提供友好的界面
  10. c++ ANSI、UNICODE、UTF8互转