hdu5468 Puzzled Elena

题意

求一棵子树内与它互质的点个数

解法

容斥

我们先求出与它不互质的数的个数,再用总数减去就好。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <vector>
using namespace std;namespace Input {int a; char c; bool sign;inline int geti() {sign = false;while ((c = getchar()) < '0' || c > '9') sign |= c == '-';a = c - '0';while ((c = getchar()) >= '0' && c <= '9') a = (a << 3) + (a << 1) + c - '0';return sign ? -a : a;}
}const int N = 1e5 + 5;
vector<int> edge[N], Num[N], ty[N];
int Cnt[N], Val[N], ans[N], ch[N][70];void init() {memset(Cnt, 1, sizeof Cnt);int i, j, cnt, len, t, k; cnt = 0;for (i = 0; i < N; ++i) Num[i].clear(), ty[i].clear();for (i = 2; i < N; ++i) {if (Cnt[i]) {for (j = i; j < N; j += i)Cnt[j] = 0, Num[j].push_back(i), cnt += j == 4;}}vector<int>tmp;for (i = 2; i < N; ++i) {tmp.clear();for (j = 0; j < Num[i].size(); ++j)tmp.push_back(Num[i][j]);len = tmp.size(); Num[i].clear();for (j = 1; j < (1 << len); ++j) {cnt = 0, t = 1;for (k = 0; k < len; ++k)if (j & (1 << k)) {++cnt; t *= tmp[k];}if (cnt & 1) ty[i].push_back(-1);else ty[i].push_back(1);Num[i].push_back(t);}}
}int dfs(int u, int fa) {int si = 0, va = Val[u], i, v;for (i = 0; i < Num[va].size(); ++i)ch[u][i] = Cnt[Num[va][i]];for (i = 0; i < edge[u].size(); ++i) {v = edge[u][i];if (v == fa) continue;si += dfs(v, u);}ans[u] = si;for (i = 0; i < Num[va].size(); ++i)ans[u] += Cnt[Num[va][i]] - ch[u][i];for (i = 0; i < Num[va].size(); ++i)Cnt[Num[va][i]] += ty[va][i];if (va == 1) ++ans[u];return si + 1;
}int main() {init();int Case = 0, n, u, v, i;while (scanf("%d", &n) ^ EOF) {for (i = 1; i <= n; ++i) edge[i].clear();for (i = 1; i <  n; ++i) {u = Input::geti(), v = Input::geti();edge[u].push_back(v), edge[v].push_back(u);}memset(Cnt, 0, sizeof Cnt);for (i = 1; i <= n; ++i) Val[i] = Input::geti();dfs(1, 0);printf("Case #%d:", ++Case);for (i = 1; i <= n; ++i)printf(" %d", ans[i]);puts("");}return 0;
}

莫比乌斯反演

此题其实也可以用莫比乌斯反演做,不过其实与容斥差不多,因为mu[i]其实与ty[i]是一样的。
代码就不贴了,其实比较像。

转载于:https://www.cnblogs.com/cycleke/p/5838879.html

hdu5468 Puzzled Elena相关推荐

  1. hdu5468 Puzzled Elena(容斥 莫比乌斯反演)

    hdu5468 Puzzled Elena 题意 求一棵子树内与它互质的点个数 解法 容斥 我们先求出与它不互质的数的个数,再用总数减去就好. #include <cstdio> #inc ...

  2. hdu5468 Puzzled Elena(容斥原理+dfs序)

    hdu5468 题目 给一棵树,每个结点有一个值,现在求以每个结点为根的子树中与其互质的结点的个数 思路 这位博主讲的很好http://www.cnblogs.com/program-ccc/p/58 ...

  3. Puzzled Elena

    Puzzled Elena . . 题意:给定一棵树,1为根节点,问每个节点的子树有多少个与他互质的数. . . 解法:DFS序加容斥原理(莫比乌斯),DFS时用一个全局数组记录,count[i] 表 ...

  4. hdu 5468 Puzzled Elena(前缀性质+dfs序+容斥)

    题目链接:hdu 5468 Puzzled Elena 解题思路 预处理出每个数的因子(注意只需要质因子幂数最大为1的数,例如6=21∗316=2^1 * 3^1)然后用一个数组维护,fac[i]表示 ...

  5. 【HDU】5468 Puzzled Elena

    Puzzled Elena 题目链接 Puzzled Elena 题目大意 给你一棵树,n个节点n-1条边,每个节点都有一个权值.现在让你求每个节点的子树下面有多少个节点与该节点互质. 题解 容斥原理 ...

  6. hdu5468 A Puzzled Elena (容斥原理)

    题意:给定一棵树,求这个节点的所有子树与它互质的节点(包括他本身)的个数. http://acm.hdu.edu.cn/showproblem.php?pid=5468 #include<ios ...

  7. 【HDU - 5468】Puzzled Elena(容斥原理,dfs序,数学,素因子分解,有坑)

    题干: Problem Description Since both Stefan and Damon fell in love with Elena, and it was really diffi ...

  8. HDU 5468 Puzzled Elena(2015 ACM/ICPC Asia Regional Shanghai Online)

    题目大意 这道题要求出每个节点与其子树节点中有多少个节点互质,题目是这样,但是如果你认为真的是这样那就错了,因为有可能根节点是1,那么1与本身也是互质的!!其实我真的搞不懂,说好了与子树互质为什么就把 ...

  9. hdu 5468 Puzzled Elena

    一颗大小为(n<=100000) 的树,根为1,每个节点有个权值.问:每个节点 和 以这个节点为根的子树中 有多少权值和根的权值互质. 做法,我们首先要明白一个东西,就是当你已经知道了k个数,并 ...

最新文章

  1. ffmpeg图片压缩为视频
  2. python基础代码事例-数据科学Python基础(附示例代码和练习题目)
  3. javascript OOP 面向对象编程
  4. PCB线宽与电流的关系
  5. java序列化_夯实Java基础系列22:一文读懂Java序列化和反序列化
  6. python项目画幅好画_python基础教程总结15——2 画幅好画
  7. Linux笔记-centos7配置网卡及iftop的使用
  8. c语言学生管理系统write to a text file,语言编程学生成绩管理系统.doc
  9. php和mysql实现图书管理系统_0074 实现图书管理系统的登录、员工和菜单功能
  10. 微型计算机釆用,计算机硬件选择题及答案.docx
  11. 如何进入腾讯、网易、阿里这样的互联网公司,看到第二条我就秒懂了~
  12. 于群matlab仿真,33637《MATLAB-Simulink电力系统建模与仿真》于群(实例程序)
  13. python流量分析_python 监控流量
  14. 光明乳业孤独症暖心礼包,让“星星的孩子”遇见光明未来
  15. 决战平安京选择正确的服务器,决战!平安京怎么预先选择自己的位置 匹配预选位流程攻略...
  16. 程序员合同日期不到想辞职_在职场,辞职有时是难免的,要怎样写辞职信才好呢...
  17. 鱼眼深度估计!环视近场感知系列之几何预测
  18. 2019 年科技趋势最全汇总!
  19. python二手房使用教程_python实战:基于链家网二手房数据解析任务
  20. java 内存 pdf_jvm内存模型高清版.pdf

热门文章

  1. linux下 USB动态监测 hotplug事件监测
  2. uni-app自定义tabBar;uni-app小程序自定义tabBar;uni-app小程序修改中间tabBar导航栏大小;uni-app中间导航栏凸起;uni-app修改底部导航栏
  3. [Redux/Mobx] 在redux中,什么是action?
  4. [Redux/Mobx] redux和flux的区别是什么?
  5. [react] React Fiber它的目的是解决什么问题?
  6. React开发(246):react项目理解 this打印
  7. React开发(152):注意替换路径
  8. 前端学习(2998):vue+element今日头条管理--element引入
  9. [html] input上传文件可以同时选择多张吗?怎么设置?
  10. [css] font-style的属性有Italic和oblique,两者有什么区别呢