duxing201606的原味鸡树
2024-09-02 02:31:19
链接
[http://murphyc.fun/problem/4011]
题意
描述
众所周知,duxing哥非常喜欢原味鸡。众所周知,原味鸡是长在原味鸡树上的。
duxing哥因为是水产巨子,所以就购买了一棵原味鸡树。原味鸡树是一颗有n个节点的完全二叉树(节点编号从1开始),每个节点会长出一个原味鸡。每当duxing哥想吃原味鸡的时候,他就会在原味鸡树上挑选一个节点,然后将这个节点的子树上的原味鸡都吃掉(包括选中的那个节点)。
因为duxing哥害怕摘下的鸡不够他吃,所以现在duxing哥想知道当他选择某个节点的时候能吃到多少原味鸡。
输入
第一行n,m,其中n代表这颗树有多少个节点,m代表duxing哥的询问次数(1<=n<=1e9,1<=m<=100000)
接下来m行,每行一个数字x,代表duxing哥询问的节点编号
输出
对于duxing哥的每次询问,输出一个数字代表他能吃到多少原味鸡
输入样例 1
10 4
5
3
6
2
输出样例 1
2
3
1
6
分析
找规律
完全二叉树,k为节点的子树节点个数
从节点序号出发,每次*2,看代码应该懂了
代码
#include<iostream>
#include<stdio.h>
#include<map>
using namespace std;
int n,k;
using namespace std;
int main(){
//freopen("in.txt","r",stdin);
scanf("%d%d",&n,&k);
while(k--){
int q;
scanf("%d",&q);
int sum=0,k=1;
while(1){
sum+=k;
q*=2;
if(q>=n) break;
k*=2;
}
if(q==n)
cout<<sum+1<<endl;
else if(q/2+k<n) cout<<sum<<endl;
else
{
sum+=n-q/2+1-k;
cout<<sum<<endl;
}
}
return 0;
}
最新文章
- Entity Framework Code First执行SQL语句、视图及存储过程
- 9.Struts2在Action中获取request-session-application对象
- C#预编译
- arcgis批量处理mxd定义服务中的路径
- virtualBox切换到无缝模式后,如何调出菜单
- linux下安装使用libuuid(uuid-generate)
- 【BZOJ】1606: [Usaco2008 Dec]Hay For Sale(背包)
- 自定义ShareDialog视图
- VS2008/MFC —常用控件使用总结 转载
- 从你的全世界切过(胡说八道支持向量机SVM小故事)
- zabbix上监控docker
- Bash 脚本进阶,经典用法及其案例
- vi编程技巧:
- error :expected initializer before
- 经验之谈:Swing的开发工作会非常的累,而且这项技术正在走向没落。避免从事有这种特征的工作。
- Learning-MySQL【6】:视图、触发器、存储过程、函数、流程控制
- python--第十三天总结(html ,css 语法)
- VBA续嘘嘘——宏技巧集绵
- MySQL之 Mysqldump导出数据库
- 在windows7中配置ant环境变量
热门文章
- C#方法重载(overload)方法重写(override)隐藏(new)
- Android内嵌PDF预览
- [Hive_add_7] Hive 实现最高气温统计
- Session变量在PHP中的使用
- java 开发注意事项
- background-image使用svg如何改变颜色
- Win10 开始运行不保存历史记录原因和解决方法
- 【汤鸿鑫 3D太极】5年目标规划(基本功、套路、实战搏击)
- c#基础知识之 Dataset 索引0没有值
- IO的详细解释:It&#39;s all about buffers: zero-copy, mmap and Java NIO