2015.10.27 2013---长春

这场做了5题

呜呜呜---

这场老是读错题,,,还读不懂题,,,

可以滚了---

A - Hard Code

签到

B - Golden Radio Base

进制的转换---读好久读不懂题---

C

wtw 写的

D

读好久读不懂题---

E

F

syh发现是白薯模板题--

G

wtw 用哈希,线段树搞的--

还是不懂他怎么搞的

先用的模是1e9+7,,,wa了---

后来用了这个----998244353

就过了--

J

最开始还以为是水题----sad---

后来看了题解做的---

http://www.cnblogs.com/oyking/p/3916442.html

给出一颗n个点的树,共m个询问

每次询问a,b,c三个点,分别输出每个点 比 另外两个点近的点的个数

先考虑只有 a  b 两个点的情况 ,求出一颗符合条件的子树

再考虑有 a  c 两个点的情况,求出一颗符合条件的子树

然后求出这两颗子树的交集有多少个点就可以了---

题解里面的type 写得好好啊---这样可以知道这个中点是由哪一端跳上去的---

然后分四种情况来算

dep[a] > dep[b]  dep[a] > dep[c]

dep[a] < dep[b]  dep[a] < dep[c]

dep[a] > dep[b]  dep[a] < dep[c]

dep[a] < dep[b]  dep[a] > dep[c]

里面的Up(d,u) 是从一个节点u向上跳 d的距离到达的节点,,做cf的时候遇到过一次

  1 #include<cstdio>
  2 #include<cstring>
  3 #include<iostream>
  4 #include<algorithm>
  5 #include<vector>
  6 using namespace std;
  7
  8 const int INF = (1<<30)-1;
  9 const int maxn = 400005;
 10 const int MAX_LOG = 20;
 11
 12 int n,m;
 13 int first[maxn],ecnt;
 14 int fa[MAX_LOG][maxn],dep[maxn];
 15 int dp[maxn],vis[maxn];
 16 int sz[maxn];
 17
 18 struct Edge{
 19     int u,v,next,w;
 20 };
 21
 22 struct node{
 23     int type,r;
 24 };
 25
 26 Edge e[10*maxn],ea[10*maxn];
 27
 28 void init(){
 29     ecnt  = 0;
 30     memset(first,-1,sizeof(first));
 31 }
 32
 33 void Add_edge(int u,int v){
 34     e[ecnt].u = u;
 35     e[ecnt].v = v;
 36     e[ecnt].next = first[u];
 37     first[u] = ecnt++;
 38 }
 39
 40 void Dfs(int p,int pre,int d){
 41     fa[0][p] = pre;
 42     dep[p] = d;
 43     sz[p] = 1;
 44     for(int i = first[p];~i;i = e[i].next){
 45         int v = e[i].v;
 46         if(v == pre) continue;
 47         Dfs(v,p,d+1);
 48         sz[p] += sz[v];
 49     }
 50 }
 51
 52 void Pre(){
 53     Dfs(1,-1,0);
 54     for(int k = 0;k+1 < MAX_LOG;++k){
 55         for(int v = 1;v <= n;v++){
 56             if(fa[k][v] < 0) fa[k+1][v] = -1;
 57             else fa[k+1][v] = fa[k][fa[k][v]];
 58         }
 59     }
 60 }
 61
 62 int Lca(int u,int v){
 63     if(dep[u] > dep[v]) swap(u,v);
 64     for(int k = MAX_LOG-1;k >= 0;--k){
 65         if(dep[v]-dep[u] & (1<<k))
 66         v = fa[k][v];
 67     }
 68     if(u == v) return u;
 69     for(int k = MAX_LOG-1;k >= 0;--k){
 70         if(fa[k][u] != fa[k][v]){
 71             u = fa[k][u];
 72             v = fa[k][v];
 73         }
 74     }
 75     return fa[0][u];
 76 }
 77
 78 int Up(int d,int u){
 79     for(int k = MAX_LOG-1;k >= 0;k--){
 80         if(d & (1<<k)) u = fa[k][u];
 81     }
 82     return u;
 83 }
 84
 85 node mid(int a,int b,int ab){
 86     node u;
 87     int len = dep[a] + dep[b] - 2*dep[ab];
 88     if(dep[a] >= dep[b]) u = node{1,Up((len-1)/2,a)};
 89     else u = node{2,Up(len/2,b)};
 90     return u;
 91 }
 92
 93 int solve(int a,int b,int c,int ab,int ac){
 94     node x = mid(a,b,ab);
 95     node y = mid(a,c,ac);
 96     int xx = x.r,yy = y.r;
 97     if(x.type == 1 && y.type == 1){
 98         if(dep[xx] < dep[yy]) swap(xx,yy);//xx shi geng shen de nage
 99         if(Lca(xx,yy) == yy) return sz[xx];
100         return 0;
101     }
102     else if(x.type == 2 && y.type == 2){
103         if(dep[xx] < dep[yy]) swap(xx,yy);
104         if(Lca(xx,yy) == yy) return n-sz[yy];
105         else return n-sz[xx]-sz[yy];
106     }
107     else{
108         if(x.type == 2) swap(xx,yy);// xx shi cong a duan kai shi tiao de
109         if(Lca(xx,yy) == xx) return sz[xx]-sz[yy];
110         else return sz[xx];
111     }
112 }
113
114 int main(){
115     int T;
116     scanf("%d",&T);
117     while(T--){
118         scanf("%d",&n);
119         init();
120         for(int i = 1;i <= n-1;i++){
121             int u,v;
122             scanf("%d %d",&u,&v);
123             Add_edge(u,v);
124             Add_edge(v,u);
125         }
126         memset(sz,0,sizeof(sz));
127         Pre();
128         scanf("%d",&m);
129         for(int i = 1;i <= m;i++){
130             int a,b,c;
131             scanf("%d %d %d",&a,&b,&c);
132             int lab = Lca(a,b);
133             int lac = Lca(a,c);
134             int lbc = Lca(b,c);
135             printf("%d %d %d\n",solve(a,b,c,lab,lac),solve(b,a,c,lab,lbc),solve(c,a,b,lac,lbc));
136         }
137     }
138     return 0;
139 }

时间: 2024-10-06 02:40:38

2015.10.27 2013---长春的相关文章

Daily Scrumming* 2015.10.27(Day 8)

一.总体情况总结 今日项目总结: 前后端同一了API设计以及API权限认证.用户状态保存的开发方案 API以及后端模型已经开始开发,前端UEditor开始学习,本周任务有良好的起步 前后端完成分工,后端根据API分工,前端根据页面分工,分工具有松耦合性,开发效率较高 大家进度不错,技术上遇到问题就直接沟通,交流是提升团队效率的秘诀 后端任务总结: 后端任务总结,对建立的模型进行部分修改,增加数据验证,搭建路由 二.今明两天任务表 Member Today’s Task Tomorrow’s Ta

我关注的一周技术动态 2015.10.18

分布式系统实践 1. 从Storm和Spark 学习流式实时分布式计算的设计 http://www.csdn.net/article/2014-08-04/2821018/1 要点: 流式计算并不是什么新鲜的东西, 相信很多同学也都用过. 不过之前流式计算往往都用在业务相关的地方, 随着大规模分布式系统对trace和metric数据收集的迫切需求, 基于时间序列数据库和流式计算就可以实现复杂的数据分析和汇聚功能, 这篇文章帮助大家理解流式计算的原理, 大家可以想象一下, 如果希望实时统计性能消耗

HDU 4815 2013长春现场赛C题

C - Little Tiger vs. Deep Monkey Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 4815 Description A crowd of little animals is visiting a mysterious laboratory ? The Deep Lab of SYSU. "Are y

Java学习笔记(2015.7.27~7.31)

Java学习笔记(2015.7.27~7.31) Java 课堂 Java学习笔记(2015.7.27~7.31) 小技巧 常用方法 1.List另一个子类--LinkedList 2.数组的常用方法 3.排序 1.二分法查找 2.数组转换为List 3.可变参数Type ... param (了解) 1.容器Collection 2.自动拆装箱(了解) 3.JDK增强for循环(了解) 4.泛型(掌握) 5.iterator与for在迭代中的区别 1.概念:保存多个对象的对象. 2.JDk为什

【谜客帝国】第十二届老爱老谜会(2015.1.27)

谜客帝国第十二届老爱老谜会(2015.1.27)主持:瓷       计分:晶莹1.齐下西湖捞残月(8笔字)沸2.巴黎第二季(中药)法夏3.其中五点全用(2字手机品牌)金立4.分店遍及全中国(2字部队称谓)营长5.小人不足提(字)捈6.再三犯错,二十载来担心受怕(2字蔬菜名)茭白7.下来亲吻(中药)降香8.兄长欲断交(2字手机品牌)谷歌9.蟋蟀后来死亡(中药)虻虫10.“妇女”节前天挥毫书双令(中药二•3+3)三七草/千张纸.注:双令-四国军旗术语:一令五百张纸11.八仙半数痴(3字穴位名)四神

10.23 linux任务计划cron10.24chkconfig工具10.25 systemd管理服务10.26 unit介绍 10.27 target介绍

- 10.23 linux任务计划cron - 10.24 chkconfig工具 - 10.25 systemd管理服务 - 10.26 unit介绍 - 10.27 target介绍 - 扩展 1. anacron http://blog.csdn.net/strikers1982/article/details/4787226  2. xinetd服(默认机器没有安装这个服务,需要yum install xinetd安装) http://blog.sina.com.cn/s/blog_46

洗澡时感想(2015.10.2篇)

洗澡时感想(2015.10.2篇),以这个为题,或许是自己平时没有其他时间去思考自己吧,唯有冲凉时,身边只有一个水桶,洗发水和香皂(或者沐浴露),还有水龙头的水急冲冲的流着.这个时刻,没有网络,没有虚拟的食物来干扰,除了心里一直想着,可能会出现鬼...  所以洗头发不敢闭着眼睛,擦身子也是神速,两分钟搞点,在自己有时间戳背面的时候,会发现有一层厚厚的泥垢. 蹲着浴室里面,看着水慢慢的流着,手拉着毛巾,毛巾带着水,慢慢的往身上浇水一般,想到我自己目前后悔自己拥有的自行车和台式机,因为我觉得一个人在

我关注的一周技术动态 2015.10.25

分布式系统实践 1. ScyllaDB:用 C++ 重写后的 Cassandra ,性能提高了十倍 http://blog.jobbole.com/93027/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io 要点: 一直非常不喜欢hadoop系列对JVM的重度依赖, 可能是我不熟悉java的原因吧, 总感觉JVM背着我们做了很多不可见的工作, 心里不踏实. ScyllaDB宣称比Cassandra性能提高十倍, 肯定

我关注的一周技术动态 2015.10.04

分布式系统实践 1. Distributed Systems(电子书) http://www.printfriendly.com/print/v2?url=http://book.mixu.net/distsys/ebook.html# 要点: 免费的介绍分布式系统理论的电子书, 这本书的难度非常适合初学者, 涵盖了分布式系统的方方面面, 但是又没有深入细节而无法理解, 结合具体例子, 让分布式理论学起来也不那么枯燥了. 2. 分布式系统一致性的发展历史(一) http://www.dianro