题意:有一棵如下的完全二叉树,求所有给定结点到根节点的路径的并有多少条边。

一开始联想到线段树,发现结点的排布很像线段树的标号。于是模仿线段树敲了一下,交上去发现3个点MLE了。。。

无心优化,跑去看题解。题解的思路是自底向上,先将询问的结点排序,最后从最深的节点开始往上递推,记录每层开始分叉的结点,统计答案即可

正解:

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
vector<LL>a;
queue<LL>q;
int n,ans=;
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++){
LL x;
scanf("%lld",&x);
a.push_back(x);
}
sort(a.begin(),a.end());
while(a.size()||!q.empty()){
LL maxn;
if(!a.size())maxn=q.front();
else if(q.empty())maxn=a.back();
else maxn=max(q.front(),a.back());
ans++;
if(maxn>>)q.push(maxn>>);
while(!q.empty()&&maxn==q.front())q.pop();
while(a.size()&&maxn==a.back())a.pop_back();
}
printf("%d\n",ans-);
return ;
}

76.92 points:

#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long uLL;
map<uLL,bool>vis;
unsigned int n,ans=;
uLL pw[];
void form(){
pw[]=;
for(int i=;i<=;i++)pw[i]=1ll*pw[i-]*;
for(int i=;i<=;i++)pw[i]--;
}
void query(uLL k,uLL l,uLL r,uLL x){
//printf("%d\n",k);
if(!vis[k]){
ans++;
vis[k]=;
}
if(l==r)return;
int mid=(l+r)>>;
if(x<=mid)query(k<<,l,mid,x);
else query(k<<|,mid+,r,x);
}
int main(){
form();
scanf("%d",&n);
for(int i=;i<=n;i++){
uLL x;
int t;
scanf("%llu",&x);
t=lower_bound(pw+,pw+,x)-pw;
//printf("%d\n",t);
query(,,<<(t-),x-pw[t-]);
}
printf("%d\n",ans-);
return ;
}

Cs Round#56 D Find Path Union的更多相关文章

  1. CS Round#53 C Histogram Partition

    题意:给定一个数组A,以及一个初始值全为0的空数组B,每次可以对数组B的任意一个区间内的所有数+x,问至少几次操作能把B数组变成A数组 NOIP原题(积木大赛)升级版,话说CS怎么那么多跟NOIP原题 ...

  2. Codeforces Round #517 (Div. 2, based on Technocup 2019 Elimination Round 2) D. Minimum path

    http://codeforces.com/contest/1072/problem/D bfs 走1步的最佳状态 -> 走2步的最佳状态 -> …… #include <bits/ ...

  3. Codeforces Beta Round #3 A. Shortest path of the king 水题

    A. Shortest path of the king 题目连接: http://www.codeforces.com/contest/3/problem/A Description The kin ...

  4. BestCoder Round #56 1002 Clarke and problem 1003 Clarke and puzzle (dp,二维bit或线段树)

    今天第二次做BC,不习惯hdu的oj,CE过2次... 1002 Clarke and problem 和Codeforces Round #319 (Div. 2) B Modulo Sum思路差不 ...

  5. Codefroces Educational Round 27 845G Shortest Path Problem?

    Shortest Path Problem? You are given an undirected graph with weighted edges. The length of some pat ...

  6. CH Round #56 - 国庆节欢乐赛解题报告

    最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...

  7. Codeforces Beta Round #3 A. Shortest path of the king

    标题效果: 鉴于国际棋盘两点,寻求同意的操作,是什么操作的最小数量,在操作过程中输出. 解题思路: 水题一个,见代码. 以下是代码: #include <set> #include < ...

  8. Cs Round#54 E Late Edges

    题意:给定一个无向图,你从结点1开始走,每经过一条边需要1的时间,每条边都有一个开放时间,只有当目前所用的时间大于等于开放时间时,这条边才可以被经过.每一单位时间你都必须经过一条边,问最快什么时候可以 ...

  9. Cs Round#54 D Spanning Trees

    题意:构造一张N个结点无重边.无自环的无向图.使得其最小生成树和最大生成树共享K条边. 样例一很具有启发性: 当K!=0时,我们可以先构造出一条链,链的长度为n-k的链,作为最小生成树的一部分,之后由 ...

随机推荐

  1. Windows环境下多线程编程原理与应用读书笔记(1)————基本概念

    自从学了操作系统知识后,我就对多线程比较感兴趣,总想让自己写一些有关多线程的程序代码,但一直以来,发现自己都没怎么好好的去全面学习这方面的知识,仅仅是完成了操作系统课程上的小程序,对多线程的理解也不是 ...

  2. hdu 3091 Necklace(状态压缩类似于TSP问题)

    Necklace Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 327680/327680 K (Java/Others)Total ...

  3. 软硬链接、文件删除原理、linux中的三种时间、chkconfig优化

    第1章 软硬链接 1.1 硬链接 1.1.1 含义 多个文件拥有相同的inode号码 硬链接即文件的多个入口 1.1.2 作用 防止你误删除文件 1.1.3 如何创建硬链接 ln 命令,前面是源文件  ...

  4. java中的缓冲流BufferedWriter和BufferedReader

    java中的缓冲流有BufferedWriter和BufferedReader 在java api 手册中这样说缓冲流: 从字符输入流中读取文本,缓冲各个字符,从而实现字符.数组和行的高效读取.可以指 ...

  5. HTML5 设备上的API

    一.Vibration API ,接受两种类型参数 vibrate (unsigned long time)   当参数是unsigned long的时候 此时参数表示震动时间.  NotSuppor ...

  6. shadow dom 隔离代码 封装

    Shadow DOM是指浏览器的一种能力,它允许在文档(document)渲染时插入一棵DOM元素子树,但是这棵子树不在主DOM树中.   Shadow DOM 解决了 DOM 树的封装问题.     ...

  7. Cordova使用build命令出错: Could not create the Java Virtual Machine.

    这是因为虚拟机内存不足导致的,解决方案如下: _JAVA_OPTIONS=-Xmx512M

  8. mapbox-gl象形文字字体glyph生成

    简介 mapbox-gl可以对文字显示各种字体(依赖ttf文件),内部采用的是读取protobuf文件 环境条件 硬件:mac.网络 软件:nodejs.npm 创建mapbox-gl可用的字体pro ...

  9. windows服务启动有界面的程序

    大家写windows服务守护进程的时候,肯定会遇到启动的程序看不到界面,只能在任务管理器里面看到xxx.exe问题. 发现可能有如下情况 a.无论是开机,还是程序被关掉后,守护服务启动的程序只能看到任 ...

  10. SSM 五:Spring核心概念

    第五章:Spring核心概念 一.Spring Ioc 优点: 1.低侵入式设计 2.独立于各种应用服务器 3.依赖注入特性将组建关系透明化,降低耦合度 4.面向切面编程的特性允许将通用性任务集中式处 ...