HDU 6121 K叉树的异或值和
来源:互联网 发布:软件外包公司培训 编辑:程序博客网 时间:2024/06/01 08:50
K叉树的异或值和
题意:
给出n个节点,节点按照
思路:
画完图发现这就是一个k叉树,对于k叉树有两个性质:
http://blog.csdn.net/jaihk662/article/details/77203877#reply
性质:对于一颗满k叉树而言,如果k是偶数,那么它的异或和就是树的大小
如果k是奇数,那么它的异或和就是任意一棵子树大小的异或和再异或树的大小
当k是奇数的时候可以直接去单独算出异或值,从根节点推到要算的层数。
然后就是找有多少不满足满k叉树的结构,其实也就是一个,那么就把这个当做一个结构继续查找直到最简单的结构时,判断有几个儿子奇数个就^1然后输出答案。
#include <iostream>#include <cstdio>#include <cstring>using namespace std;typedef long long LL;int main(){ //freopen("in.txt","r",stdin); int t; scanf("%d",&t); while(t--) { LL n,k; scanf("%I64d%I64d",&n,&k); if(k==1) { if(n%4==0) printf("%I64d\n",n); else if(n%4==1) printf("1\n"); else if(n%4==2) printf("%I64d\n",n+1); else if(n%4==3) printf("0\n"); } else { LL ans = n; while(1) { if(n-1 <= k) { if(n%2==0) ans ^= 1; printf("%I64d\n",ans); break; } LL num = 1,x = 1,b = 1; while(0 <= num + x*k && num + x*k < n) { x *= k; num += x; b ^= num; } LL l = (n-num-1)/x; LL r = k-l-1; if(k%2) { if(l%2) ans ^= b; if(r%2) ans ^= (b^num); } else { if(l%2) ans ^= num; if(r%2) ans ^= (num-x); } n -= (l*num+r*(num-x)+1); ans ^= n; } } } return 0;}
阅读全文
0 0
- HDU 6121 K叉树的异或值和
- hdu 6121 Build a tree(K叉树的异或和)
- hdu 6121 Build a tree(k叉树的异或和)
- 2017多校联合第7场/hdu 6121 Build a tree(K叉树的异或和)+满K叉树的性质总结
- HDU 3949 XOR (第k小的异或值)
- hdu 3949(线性基模版) 异或和中第k小的数
- HDU 3949 XOR 线形基,异或消元,求一个数组的第k小异或和
- hdu3949 XOR(求所有的异或和的第k小,高斯消元求线性基)
- hdu 5088 高斯消元n堆石子取k堆石子使剩余异或值为0
- HDU 2852 KiKi's K-Number 主席树或树状数组
- 【HDU 5969 最大的位或】 + 异或
- HDU 5344 多个数的和异或-思维-(位运算)
- HDU 5344(MZL's xor-(ai+aj)的异或和)
- hdu 2852 (求某个序列第k大的值,可以任意删除其中的元素和添加元素)
- I2C的上拉电阻可以是1.5K,2.2K,4.7K, 电阻的大小对时序有一定影响,对信号的上升时间和下降时间也有影响,一般接1.5K或2.2K
- HDU 5884 k叉的哈夫曼 O(n)构造
- HDU 2665 求静态区间的第k小值 主席树讲解。
- hdu 5661 异或
- 2017 Multi-University Training Contest
- 经验分享 |【PDF下载】运维/DevOps峰会之企业上云安全加固最佳实践
- 关于HTTP协议,一篇就够了
- 先验概率与后验概率、贝叶斯区别与联系
- 排序算法(1)----选择排序算法
- HDU 6121 K叉树的异或值和
- 第一次使用Android Studio时你应该知道的一切配置
- Php学习之两个特性导致waf绕过注入详解
- 神交互!饿了么 imageView 放大变为详情页
- QWizard
- AI芯片怎么降功耗?从ISSCC2017说起
- PLSQL 11 注册码
- hdu6040 Hints of sd0061【nth_element使用】
- 自定义 SeekBar,进度变化由可视化气泡样式呈现