树形dp用一下就好了

  1. /*
  2. dp[i]表示不删节点的gcd值
  3. 每个结点开个vector用来存储删一个点之后的最大值
  4. 然后排序 去重
  5. */
  6. #include<bits/stdc++.h>
  7. #include<vector>
  8. using namespace std;
  9. #define maxn 200005
  10. struct Edeg{int to,nxt;}edge[maxn<<];
  11. int n,a[maxn],head[maxn],tot,dp[maxn];
  12. vector<int>vec[maxn];
  13. void init(){
  14. memset(head,-,sizeof head);
  15. tot=;
  16. }
  17. void addedge(int u,int v){
  18. edge[tot].to=v;edge[tot].nxt=head[u];head[u]=tot++;
  19. }
  20. void dfs(int u,int pre){
  21. for(int i=head[u];i!=-;i=edge[i].nxt){
  22. int v=edge[i].to;
  23. if(v==pre)continue;
  24. dp[v]=__gcd(a[v],dp[u]);//不删点的情况
  25. vec[v].push_back(dp[u]);//删去v结点
  26. for(int j=;j<vec[u].size();j++)//删v以上的点
  27. vec[v].push_back(__gcd(a[v],vec[u][j]));
  28. sort(vec[v].begin(),vec[v].end());//排序去重
  29. vec[v].erase(unique(vec[v].begin(),vec[v].end()),vec[v].end());
  30. dfs(v,u);
  31. }
  32. }
  33. int main(){
  34. init();
  35. int u,v;
  36. cin>>n;
  37. for(int i=;i<=n;i++)cin>>a[i];
  38. for(int i=;i<n;i++){
  39. cin>>u>>v;
  40. addedge(u,v);
  41. addedge(v,u);
  42. }
  43. dp[]=a[];vec[].push_back();
  44. dfs(,);
  45. for(int i=;i<=n;i++)
  46. printf("%d ",max(dp[i],vec[i].back()));
  47. }

cf842C 树形dp+gcd函数的更多相关文章

  1. 二叉苹果树|codevs5565|luoguP2015|树形DP|Elena

    二叉苹果树 题目描述 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点) 这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1. 我们用一根树枝两端连接的 ...

  2. CF EDU 1101D GCD Counting 树形DP + 质因子分解

    CF EDU 1101D GCD Counting 题意 有一颗树,每个节点有一个值,问树上最长链的长度,要求链上的每个节点的GCD值大于1. 思路 由于每个数的质因子很少,题目的数据200000&l ...

  3. 【BZOJ-3696】化合物 树形DP + 母函数(什么鬼)

    3696: 化合物 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 165  Solved: 85[Submit][Status][Discuss] D ...

  4. 洛谷P2014 选课 (树形dp)

    10月1日更新.题目:在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习.现在有N门功课,每门课有个学分 ...

  5. HDU-4661 Message Passing 树形DP,排列组合

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4661 题意:有n个人呈树状结构,每个人知道一个独特的消息.每次可以让一个人将他所知的所有消息告诉和他相 ...

  6. BNUOJ-26482 Juice 树形DP

    题目链接:http://www.bnuoj.com/bnuoj/problem_show.php?pid=26482 题意:给一颗树,根节点为送电站,可以无穷送电,其它节点为house,电量达到pi时 ...

  7. HDU-4679 Terrorist’s destroy 树形DP,维护

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4679 题意:给一颗树,每个边有一个权值,要你去掉一条边权值w剩下的两颗子树中分别的最长链a,b,使得w ...

  8. HDU-4616 Game 树形DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4616 比较典型的树形DP题目,f[u][j][k]表示以点u为子树,经过 j 个陷阱的最大值,其中k= ...

  9. Codeforces Round #551 (Div. 2) D. Serval and Rooted Tree (树形dp)

    题目链接 题意:给你一个有根树,假设有k个叶子节点,你可以给每个叶子节点编个号,要求编号不重复且在1-k以内.然后根据节点的max,minmax,minmax,min信息更新节点的值,要求根节点的值最 ...

随机推荐

  1. MFC工作者线程

    //************工作者线程**************1.在头文件中添加UINT ThreadFunc(LPVOID lpParam); 注意应在类的外部 2.添加protected型变量 ...

  2. fastclick.js插件使用简单说明

    为什么存在延迟? 从点击屏幕上的元素到触发元素的 click 事件,移动浏览器会有大约 300 毫秒的等待时间.为什么这么设计呢? 因为它想看看你是不是要进行双击(double tap)操作.     ...

  3. mongodb系列~ mongodb慢语句(1)

    1 简介:讲讲mongo的慢日志2 慢日志类型    query insert update delete 3 查看慢日志  1 db.system.profile.find() 慢日志总揽  2 d ...

  4. Thymeleaf--:fragment

    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" ...

  5. RabbitMQ简单应用の公平分发(fair dipatch)

    公平分发(fair dipatch)和轮询分发其实基本一致,只是每次分发的机制变了,由原来的平均分配到现在每次只处理一条消息 1.MQ连接工厂类Connection package com.mmr.r ...

  6. ActiveMQ静态网络链接(broker-to-broker)

    ActiveMQ的网络连接分为静态连接和动态连接.本章研究静态连接. 1.ActiveMQ的networkConnector是什么 在某些情况下,需要多个ActiveMQ的Broker做集群,那么就涉 ...

  7. 配置Oracle GoldenGate安全性

    本章介绍如何配置Oracle GoldenGate安全性. 本章包括以下部分: Overview of Oracle GoldenGate Security Options Encrypting Da ...

  8. Python学习笔记-转义字符

    Python转义字符同C语言的转义字符

  9. SpringCloud Config(分布式配置中心)

    ⒈是什么? Spring Cloud Config分为服务端和客户端两部分. 服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息,加密/解密信心等接口. ...

  10. inception_v2版本《Rethinking the Inception Architecture for Computer Vision》(转载)

    转载链接:https://www.jianshu.com/p/4e5b3e652639 Szegedy在2015年发表了论文Rethinking the Inception Architecture ...