2017多校第7场 HDU 6121 Build a tree K叉树,思维
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6121
题意:一个n个点的完全k叉树,求每个节点的size的异或和。
解法:容易发现,考虑根的所有孩子,最多只有一个不是满k叉树,我们只要把这个子节点作为临界点,其左边的就是满k叉树,其右边的便是比左边层数小一的满k叉树,那么我们每次只要算出中间这个非满k叉树的节点个数即可,然后对这个孩子进行递归处理。而其他子树由于是满k叉树,其数量可以提前预处理出来。这样处理在k>2的时候复杂度是logk(n)的,但是当k等于1时速度很慢会T,所以直接特判k=1的情况。
//HDU 6121
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
LL n, k, ans, num[105];
LL qsm(LL a, LL n){
LL ret=1;
while(n){
if(n&1) ret=ret*a;
a=a*a;
n>>=1;
}
return ret;
}
void init(LL k, LL dep)
{
for(int i=1; i<=dep; i++){
num[i] = (qsm(k,i)-1)/(k-1);
}
}
int main()
{
int T;
scanf("%d", &T);
//freopen("1.in","r",stdin);
while(T--)
{
scanf("%lld%lld", &n,&k);
if(k == 1){
LL temp=n%4;
if(temp==0) printf("%lld\n", n);
else if(temp==1) printf("%lld\n",1LL);
else if(temp==2) printf("%lld\n", n+1);
else printf("%lld\n", 0LL);
continue;
}
int dep = 1;//树高
LL res=n-1;
while(res){
res=(res-1)/k;
dep++;
}
init(k,dep);
ans = n; //根节点为0的子树
ans ^= (n-num[dep-1])&1;//最后一层有多少个节点
dep--;
LL pos=(n-1-1)/k;//临界点在当前层标号为pos的子树上
int now = 2;//从下往上第几层,最后一层已经处理了
while(dep>1){
LL left=num[dep-1];//当前层最左边节点的编号
LL right=num[dep]-1;//当前层最右边的节点的编号
LL temp1=num[now];//当前层满k叉树的子节点个数
LL temp2=num[now-1];//当前层满k叉数层数减1后的子节点个数
if((pos-left)&1){
ans^=temp1;
}
if((right-pos)&1){
ans^=temp2;
}
LL cnt=pos;
while(cnt<=(n-1-1)/k){//cnt*k+1<=n-1会爆long long
cnt=cnt*k+1;
}
ans ^= num[now-1]+n-cnt;//当前点的子树特殊处理
now++;
dep--;
pos=(pos-1)/k;
}
printf("%lld\n", ans);
}
return 0;
}
2017多校第7场 HDU 6121 Build a tree K叉树,思维的更多相关文章
- 2017多校第9场 HDU 6161 Big binary tree 思维,类似字典树
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6161 题意: 题目是给一棵完全二叉树,从上到下从左到右给每个节点标号,每个点有权值,初始权值为其标号, ...
- 2017多校第8场 HDU 6138 Fleet of the Eternal Throne 思维,暴力
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6138 题意:给了初始区间[-1,1],然后有一些操作,可以r加上一个数,l减掉一个数,或者同时操作,问 ...
- 2017ACM暑期多校联合训练 - Team 7 1002 HDU 6121 Build a tree (深搜+思维)
题目链接 Problem Description HazelFan wants to build a rooted tree. The tree has n nodes labeled 0 to n− ...
- HDU 6121 Build a tree(完全K叉树)
http://acm.hdu.edu.cn/showproblem.php?pid=6121 题意:给你一颗完全K叉树,求出每棵子树的节点个数的异或和. 思路: 首先需要了解一些关于完全K叉树或满K叉 ...
- HDU 6121 Build a tree(k叉树的子树大小相异)
http://acm.hdu.edu.cn/showproblem.php?pid=6121 题目大意: 给你一颗 n 个节点的完全 k 叉树,问你这棵树中所有子树结点个数的总异或值. 分析: 我们很 ...
- HDU 6121 Build a tree(找规律+模拟)
Build a tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others)To ...
- 2017多校第9场 HDU 6170 Two strings DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6170 题意:给了2个字符串,其中第2个字符串包含.和*两种特别字符,问第二个字符串能否和第一个匹配. ...
- 2017多校第9场 HDU 6169 Senior PanⅡ 数论,DP,爆搜
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6169 题意:给了区间L,R,求[L,R]区间所有满足其最小质数因子为k的数的和. 解法: 我看了这篇b ...
- 2017多校第10场 HDU 6181 Two Paths 次短路
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6181 题意:给一个图,求出次短路. 解法:我之前的模板不能解决这种图,就是最短路和次短路相等的情况,证 ...
随机推荐
- 【以前的空间】vijos 1720 阿狸的打字机
https://www.vijos.org/p/1720 作为一个一个蒟蒻,跪了三个星期,终于在蔡大神的帮助下a了.这题网上的题解很多,不过大都把题解写的太简单了(对因为大神的题解只有三个字:傻叉题) ...
- BZOJ5157 & 洛谷3970:[TJOI2014]上升子序列——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=5157 https://www.luogu.org/problemnew/show/P3970 给定 ...
- BZOJ4889 & 洛谷3759:[TJOI2017]不勤劳的图书管理员——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4889 https://www.luogu.org/problemnew/show/P3759 加里 ...
- UVA.725 Division (暴力)
UVA.725 Division (暴力) 题意分析 找出abcdefghij分别是0-9(不得有重复),使得式子abcde/fghij = n. 如果分别枚举每个数字,就会有10^10,肯定爆炸,由 ...
- AOJ.综合训练.2016-11-24
AOJ.综合训练 友情提示:不要复制粘贴,看完解析先自己尝试写一下.不行再看题解.这样才会有提高! A题 金字塔 题意分析 分别读入10个数,按照他给出的格式输出就行了.注意每有7个字符(包括空格). ...
- bzoj4518: [Sdoi2016]征途(DP+决策单调性分治优化)
题目要求... 化简得... 显然m和sum^2是已知的,那么只要让sigma(si^2)最小,那就变成了求最小平方和的最小值,经典的决策单调性,用分治优化即可. 斜率优化忘得差不多就不写了 #inc ...
- zabbix监控ipmi
@1.假设idrac已经启用,并且使用ipmitool能正确读取数据(本文后面详细描述如何配置) @2.第一节只涉及web配置 1.创建主机 configuration-->hosts--> ...
- 【题解】互不侵犯 SCOI 2005 BZOJ 1087 插头dp
以前没学插头dp的时候觉得这题贼难,根本不会做,学了才发现原来是一裸题. 用二进制表示以前的格子的状态,0表示没放国王,1表示放了国王. 假设当前位置为(x,y),需要记录的是(x-1,y-1)至(x ...
- Jenkins自动化构建系列:01敏捷开发、自动化构建与持续集成
<SVN与TortoiseSVN实战系列>已写完,今天新开一个<Jenkins自动化构建系列>,上周听了Bob Jiang老师的Agile1001公开课,一直想写个总结,这篇关 ...
- jquery动画切换引擎插件 Velocity.js 学习02
案例实践: 第一页会以动画形式进入页面: 点击进入按钮时,第一页以动画消失,第二页以动画形式进入,同时四张图片也定义从小到大的动画形式: 第二页关闭按钮点击时,先是四张图片以缩小动画消失,然后第二页以 ...