Problem A. 最近公共祖先 ———2019.10.12
我亲爱的学姐冒险跑去为我们送正解
但是,,,,
阿龙粗现了!
cao,,
考场期望得分:20 实际得分:20
Problem A. 最近公共祖先 (commonants.c/cpp/pas)
最近公共祖先(Lowest Common Ancestor,LCA)是指在一个树中同时拥有给定的两个点作为后
代的最深的节点。
为了学习最近公共祖先,你得到了一个层数为 n + 1 的满二叉树,其中根节点的深度为 0,其他
节点的深度为父节点的深度 +1 。你需要求出二叉树上所有点对 (i,j),(i,j 可以相等,也可以 i > j)
的最近公共祖先的深度之和对 10 9 + 7 取模后的结果。
Input
一行一个整数 n 。
Output
一行一个整数表示所有点对 (i,j),(i,j 可以相等,也可以 i > j)的最近公共祖先的深度之和对
10 9 + 7 取模后的结果。
Notes
样例 1 解释:
树一共有 7 个节点(一个根节点和两个子节点) ,其中 (4,4),(5,5),(6,6),(7,7) 共 4 对的最近公共
祖先深度为 2,(4,2),(2,4),(5,2),(2,5),(5,4),(4,5),(2,2),(6,3),(3,6),(3,7),(7,3),(6,7),(7,6),(3,3) 共 14 对最
近公共祖先深度是 1 ,其他的点对最近公共祖先深度为 0 ,所以答案为 22 。
思路呢,,大概就是这样的:
算法1:
N<=10
直接暴力求树上两点的LCA
期望得分:20
(大概就是我的那20分吧)
代码~:
#include<cmath>
#include<cstdio>
#include<iostream>
using namespace std;
int n;
const int mod=1e9+;
int deep[];
long long ans;
void dfs(int i,long long t) {
if(i>n) return;
deep[t]=i;
dfs(i+,t*),dfs(i+,t*+);
}
long long lca(long long i,long long j) {
while() {
if(i==j)break;
if(i<j)swap(i,j);
i/=;
}
return deep[i];
}
long long tot;
int main() {
freopen("commonants.in","r",stdin);
freopen("commonants.out","w",stdout);
cin>>n;
tot=pow(,n+)-;
dfs(,);
for(int i=; i<=tot; i++)
for(int j=; j<=tot; j++) {
int k=lca(i,j);
ans+=k;
ans%=mod;
}
cout<<ans;
fclose stdin;
fclose stdout;
return ;
}
算法2:
代码:没得~
算法三:
借土蛋 的代码一用
#include <bits/stdc++.h> using namespace std;
typedef long long ll;
const ll mod = 1e9 + ;
ll qpow(ll a, ll b){
ll ret = ;
for(; b; b >>= , a = a * a % mod){
if(b & ) ret = ret * a % mod;
}
return ret;
}
ll n;
ll f[];
int main(){
freopen("commonants.in", "r", stdin);
freopen("commonants.out", "w", stdout); cin >> n;
printf("%lld\n", (qpow(, * n + ) - ( * n % mod + ) * qpow(, n) % mod + mod - + mod) % mod);
return ;
}
Problem A. 最近公共祖先 ———2019.10.12的更多相关文章
- Problem C. 欧皇 ————2019.10.12
题目: 再次感激土蛋 #include <bits/stdc++.h> using namespace std; typedef long long ll; ; ll C[][]; voi ...
- Problem B. 即时战略 ———2019.10.12
题目: 代码~:感谢土蛋 #include <iostream> #include <cstring> #include <cmath> #include &l ...
- jQuery进阶第三天(2019 10.12)
一.原生JS快捷的尺寸(属性)(注意这些属性的结果 不带PX单位) clientWidth/clientHeight =====> 获得元素content+padding的宽/高: offse ...
- 题解:T103342 Problem A. 最近公共祖先
题目链接 题目大意 求每个点对的lca深度的和 以每一层分析,得出通式 由于1e9的数据范围要化简表达式得到O(能过) 瞎搞后就是2^(2n+2)-(4n+2)*2^n-2 code: #includ ...
- 【CSP-S膜你考】最近公共祖先 (数学)
Problem A. 最近公共祖先 (commonants.c/cpp/pas) 注意 Input file: commonants.in Output file: commonants.out Ti ...
- 北邮OJ-257- 最近公共祖先-软件14 java
思路分析:思路应该比较简单也很容易想的来,就是比较两个节点的最近的祖先节点,要对每个节点依次记录下他的所有祖先节点,包括其自己,因为自己也算自己的祖先节点,这一点题目中没有明确指出 所以比较坑. 我们 ...
- 清北学堂2019.8.10 & 清北学堂2019.8.11 & 清北学堂2019.8.12
Day 5 杨思祺(YOUSIKI) 今天的难度逐渐上升,我也没做什么笔记 开始口胡正解 今天的主要内容是最小生成树,树上倍增和树链剖分 最小生成树 Prim 将所有点分为两个集合,已经和点 1 连通 ...
- 【JZOJ4888】【NOIP2016提高A组集训第14场11.12】最近公共祖先
题目描述 YJC最近在学习树的有关知识.今天,他遇到了这么一个概念:最近公共祖先.对于有根树T的两个结点u.v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u.v的祖先且x的深度尽可能大. ...
- 「10.19」最长不下降子序列(DP)·完全背包问题(spfa优化DP)·最近公共祖先(线段树+DFS序)
我又被虐了... A. 最长不下降子序列 考场打的错解,成功调了两个半小时还是没A, 事实上和正解的思路很近了,只是没有想到直接将前$D$个及后$D$个直接提出来 确实当时思路有些紊乱,打的时候只是将 ...
随机推荐
- SQL Server ---------- 分离数据库 生成 .mdf文件
1.首先查看你要分离的数据库存储的位置 选中需要分离的数据数据库右击鼠标点击属性 要是记不住建议 复制一下 2.分离数据库 生成 .mdf 文件 右击 -----> 任务 -- ...
- 我自己整理的 Linux 常用命令
1.查看文件安装路径: 由于软件安装的地方不止一个地方,所有先说查看文件安装的所有路径(地址). 这里以 xsp 为例.比如说我安装了xsp,但是不知道文件都安装在哪些地方.放在哪些文件夹里,可以用下 ...
- Docker安装及简单使用
1.docker安装 #1.检查内核版本,必须是3.10及以上 uname -r #2.安装 yum -y install docker 2.docker简单使用 #1.启动docker system ...
- 【spring boot】加载同名Bean解决方法
原文地址:https://blog.csdn.net/liuyueyi25/article/details/83280239 @SpringBootApplication @ComponentScan ...
- c#专业的UVC摄像头深控类库-SharpCamera介绍
SharpCamera是专业的UVC摄像头深控类库.允许您在C#代码内修改摄像头的高级参数,比如亮度.对比度.清晰度.色调.饱和度.伽玛值.白平衡.逆光对比.增益.缩放.焦点.曝光.光圈.全景.倾斜. ...
- 记WinForm中WebBrowser相关的俩个问题
问题一:如何不让WebBrowser中弹出“安全警告” 当链接https网址时,IE会自动弹出上图中的窗口. 关闭窗口的具体思路如下: 使用WebBrowser加载中/加载完毕后触发的事件处理程序,在 ...
- laravel 框架配置404等异常页面的方法详解(代码示例)
本篇文章给大家带来的内容是关于laravel 框架配置404等异常页面的方法详解(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 在Laravel中所有的异常都由Handl ...
- Winform中实现根据配置文件重新加载ZedGraph属性的实现思路
场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...
- web的应用模式
在开发web应用中,有两种模式: 1.前后端分离. 2.前后端不分离. 一.前后端不分离 在前后端不分离的应用模式中,前端页面看到的效果是有后端控制的,由后端渲染页面或重定向,也就是后端需要控制前端的 ...
- XSS靶场练习
0x00:前言 一个XSS练习平台,闯关形式,一共20关 0x01:开始 第一行都是代码插入点,下面几行是payloads(插入点和payloads中间空一行) LV1 <script>a ...