题目:https://lpoj.cn/problemdetail?problemID=5576

输入一棵树,求树上所有两点之间路径或之和。

权神设计出来是用并查集做的。

然而第一反应就是向上合并维护二进制位。写了一发维护1的个数愉快的wa了,之后就忘了有这题了。最近这题被大师兄秒掉了,被教育了一手可以先当成整棵树全是1来做,然后再合并0的个数,减掉0的情况。

瞬间好写了很多。。。。

我们把子树0的个数向上合并的时候,检查一下父节点这一位是否是0,如果是0才合并,因为父节点是所以子节点的必经之路,如果父节点是1,那么子节点经过父节点往上或出来这一位就是1了。

ac代码:

#include<bits/stdc++.h>using namespace std;const int maxn = 1e5 + 5;
typedef long long ll;ll ans;
int n, val[maxn];
int p[20], sz[maxn][20];
vector<int> G[maxn];void crack(int x) {for (int i = 0; i < 20; ++i) {sz[x][i] = !(val[x] >> i & 1);}
}void dfs(int x, int fa) {crack(x);for (auto v:G[x]) {if (v == fa) {continue;}dfs(v, x);for (int i = 0; i < 20; ++i) {ans -= 1LL * p[i] * sz[x][i] * sz[v][i];if (!(val[x] >> i & 1)) {sz[x][i] += sz[v][i];}}}
}int main() {ios::sync_with_stdio(0);cin >> n;for (int i = 1; i <= n; ++i) {cin >> val[i];}int u, v;for (int i = 1; i < n; ++i) {cin >> u >> v;G[u].push_back(v);G[v].push_back(u);}p[0] = 1;for (int i = 1; i < 20; ++i) {p[i] = p[i - 1] << 1;}for (int i = 0; i < 20; ++i) {ans += 1LL * p[i] * n * (n - 1) / 2;}dfs(1, 0);cout << ans;return 0;
}

lpoj5576 hongrock的柠檬树相关推荐

  1. [BZOJ1502]月下柠檬树(自适应辛普森积分)

    1502: [NOI2005]月下柠檬树 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1387  Solved: 739 [Submit][Statu ...

  2. 1502: [NOI2005]月下柠檬树 - BZOJ

    Description Input 文件的第1行包含一个整数n和一个实数alpha,表示柠檬树的层数和月亮的光线与地面夹角(单位为弧度).第2行包含n+1个实数h0,h1,h2,-,hn,表示树离地的 ...

  3. BZOJ 1502:月下柠檬树

    BZOJ 1502:月下柠檬树 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1502 题目大意:给出一棵由圆台构成的树以及一个平行光源,问 ...

  4. 【BZOJ-1502】月下柠檬树 计算几何 + 自适应Simpson积分

    1502: [NOI2005]月下柠檬树 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1017  Solved: 562 [Submit][Statu ...

  5. 广东外语外贸大学第15届程序设计竞赛 - G LZL的柠檬树 - 二分 + 最小生成树

    Problem G: LZL的柠檬树 Time Limit: 1 Sec  Memory Limit: 128 MB Description LZL的柠檬树长出的柠檬可酸了!如果你也想要这棵酸酸的柠檬 ...

  6. Lemon tree 柠檬树

    lemon tree的中文对照歌词 MP3: http://dict.cn/kuaile/83/n-4083.html MV: http://www.uctube.cn/ealk32aksjl.htm ...

  7. 一首好听的英文歌lemon tree(柠檬树)的中文歌词

    一首好听的英文歌lemon tree(柠檬树)的中文歌词 lemon tree的中文 i'm sitting here in a boring room.我坐在这--一间空屋子里  it's just ...

  8. BZOJ 1502 NOI2005 月下柠檬树 Simpson自适应公式

    题目大意:给定一棵由圆台和圆锥构成的柠檬树,月光以α的夹角平行射向地面,求阴影部分面积 补充题目大意:看到这题我产生了心理阴影,求阴影部分面积 题目不好分析,但其实就是求一堆圆和一堆梯形的面积交 样例 ...

  9. [BZOJ1502] [NOI2005]月下柠檬树

    Description 李哲非常非常喜欢柠檬树,特别是在静静的夜晚,当天空中有一弯明月温柔地照亮地面上的景物时,他必会悠闲地 坐在他亲手植下的那棵柠檬树旁,独自思索着人生的哲理.李哲是一个喜爱思考的孩 ...

最新文章

  1. ashx是什么文件,如何创建
  2. 无法远程访问Mysql的解决方案
  3. python学习之老男孩python全栈第九期_day004知识点总结
  4. 【机器学习基础】回归相关指标优化​
  5. Windows 中进程的相关操作
  6. 关于Adapter的The content of the adapter has changed but ListView did not receive a notification.问题分析
  7. linux php运行用户名和密码,Linux实例(一)使用用户名密码验证连接Linux
  8. hdu4825 字典树 XOR
  9. hdu6107 倍增法st表
  10. C++异常处理:try,catch,throw,finally的用法
  11. Springmvc Get请求Tomcat、WebLogic中文乱码问题
  12. 每日英语:Why Food Companies Are Fascinated by the Way We Eat
  13. WebPager For ASP.NET (基于ASP.NET的数据分页控件)
  14. 用简单的语句讲解浏览器输入地址进入servlet原理
  15. s912机顶盒改linux服务器,技术宅 篇一:挑战10倍价格的竞品,S912机顶盒coreelec串流打游戏...
  16. Luzj's ZTE Win版 终于开发完成
  17. 现实的复杂性与系统的复杂性
  18. “裸婚时代”-得妻如此,夫复何求?
  19. python打印列表元素_Python打印输出数组中全部元素
  20. 阿里云天池龙珠计划 sql篇---stack06

热门文章

  1. 情人节快乐 ! 亲爱的猪猪
  2. 开发技术经理应该做什么
  3. instagram的手机验证码乱码解决方法(中国)
  4. 【题解】牛客 114514⭐⭐ 【水题】
  5. RecyclerView实现收缩分组悬浮列表
  6. 考完计算机网络的一些小牢骚以及心得
  7. 浅析英语修饰语的适当位置及其顺序
  8. Lua基础之垃圾回收
  9. CAD二次开发 插件初始化接口IExtensionApplication
  10. Linux修改虚拟内存