题解:
个人感觉这个题目是一个挺不错的题的。(这里就不说dsu on tree的这个过程是什么了)

我们在dsu on tree计算答案时需要有一个小小技巧去优化一下时间复杂度。
就是当我们用一个cnt数组把这颗某种颜色的个数都给统计下来后,我们如何才能在非常快的情况下找到超过次数为k的节点个数呢?

这里我们引入一个sum数组,用来储存超过次数为k的结点个数,怎么用呢?
假设当前颜色x的个数为cnt[x]。
那么如果cnt[x]+1,就代表着sum[cnt[x]+1]这个值,也会+1.
这样问题就解决了!

详情看cal函数这里面的代码

代码:

/*Keep on going Never give up*/
//#pragma GCC optimize(3,"Ofast","inline")
#include<bits/stdc++.h>
//#define int long long#define endl '\n'
#define Accepted 0
#define AK main()
#define I_can signed
using namespace std;
const int maxn =2e5+10;
const int MaxN = 0x3f3f3f3f;
const int MinN = 0xc0c0c00c;
typedef long long ll;
const int inf=0x3f3f3f3f;
const ll mod=1e9+7;vector<int> edge[maxn];
vector<pair<int,int> > Q[maxn];
bool visited[maxn];
int a[maxn],sz[maxn],son[maxn];
int ans[maxn];
int sum[maxn],cnt[maxn];
void dfs(int x,int fa){sz[x]=1;for(auto i:edge[x]){if(i==fa) continue;dfs(i,x);sz[x]+=sz[i];if(sz[son[x]]<sz[i]) son[x]=i;}
}
int flag;
void cal(int x,int fa,int val){if(val==1){sum[cnt[a[x]]+1]++;}else{sum[cnt[a[x]]]--;}cnt[a[x]]+=val;for(auto i:edge[x]){if(i==fa||i==flag) continue;cal(i,x,val);}
}
void dsu(int x,int fa,int keep){for(auto i:edge[x]){if(i==fa||i==son[x]) continue;dsu(i,x,false);}if(son[x]){dsu(son[x],x,true);flag=son[x];}cal(x,fa,1);flag=0;for(auto i:Q[x]){ans[i.second]=sum[i.first];}if(!keep) cal(x,fa,-1);}
int main(){ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);int n,m;cin>>n>>m;for(int i=1;i<=n;i++) cin>>a[i];for(int i=0;i<n-1;i++){int x,y;cin>>x>>y;edge[x].push_back(y);edge[y].push_back(x);}for(int i=1;i<=m;i++){int x,y;cin>>x>>y;Q[x].push_back({y,i});}dfs(1,0);dsu(1,0,0);for(int i=1;i<=m;i++){cout<<ans[i]<<endl;}}

CF375D Tree and Queries(dsu on tree)相关推荐

  1. B. Alyona and a tree(dsu on tree + bit)

    B. Alyona and a tree(dsu on tree + bit) 给定一颗以111号节点为根的树,每个点有点权aia_iai​,边有边权,如果vvv控制了点uuu,当且仅当uuu是vvv ...

  2. 2020 China Collegiate Programming Contest Changchun F - Strange Memory(dsu on tree + 位运算小技巧)

    题目连接: https://codeforces.com/gym/102832/problem/F 首先写这个题的时候要注意内存的问题 不要瞎几把define int long long 题解: 考虑 ...

  3. CF570D Tree Requests(dsu on tree)

    题解: dsu on tree 首先dsu on tree是一个离线的算法,所以我们需要先把他们的询问储存起来,然后进行操作. 针对于每一个结点,我们先统计出他和他子树的所有信息,然后对于这个结点来说 ...

  4. dsu on tree 模板题目(CF600E Lomsat gelral)

    题解: dsu on tree 对于结点i来说,步骤为: 递归轻儿子,不保留贡献. 递归重儿子,保留贡献. 统计当前结点及所有轻儿子的贡献. 拿个样例来解释算法的流程 比如说样例2: 如图所示,有多个 ...

  5. 【CodeForces】741 D. Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths(dsu on tree)

    [题意]给定n个点的树,每条边有一个小写字母a~v,求每棵子树内的最长回文路径,回文路径定义为路径上所有字母存在一种排列为回文串.n<=5*10^5. [算法]dsu on tree [题解]这 ...

  6. 牛客 NC201908 小睿睿的伤害(dsu on tree, 启发式合并)

    传送门 题目大意   给你一棵树,每个节点有一个权值valvalval,每一对点对(i,j)(i,j)(i,j) 可以在他们的lcalcalca处造成gcd(val[i],val[j])gcd(val ...

  7. 树上启发式合并(dsu on tree)

    dsu on tree dsu \text{dsu} dsu一般指 disjoint set union \text{disjoint set union} disjoint set union,即并 ...

  8. 小 Q 与树(dsu on tree + segment tree)牛客练习赛 81 D

    小 Q 与树 给定一棵带权的树,每条边的距离都为111,要我们求∑u=1n∑v=1nmin(au,av)dis(u,v)\sum\limits_{u = 1} ^{n} \sum\limits_{v ...

  9. Codeforces Round #383 (Div. 1): D. Arpa’s letter-marked tree…(dsu on tree+状压)

    题意: 给你一棵n个节点的树,每条边都代表着一个字母(a~v),对于每个节点u,求出以u为根的子树中有多少条路径满足:路径上的字符重新排列后可以得到一个回文字符串 思路: 前置:dsu on tree ...

最新文章

  1. Javacript Remove Elements from Array
  2. 虚拟机Linux和宿主机传输文件
  3. Job for slapd.service failed because the control process exited with error code. See systemctl stat
  4. 亲测可用小米刷旧版开发版固件,刷入华硕、潘多拉固件
  5. html如何添加竖虚线,在word中添加竖虚线的方法
  6. Chrome 浏览器小恐龙游戏变身超级马利奥
  7. 【错题】#10兰州烧饼——思考角度的转换
  8. 关于烂代码的那些事(下)
  9. Ubuntu 台式机 usb WiFi 接收器设置方法
  10. 如何在数据库mysql中储存图片
  11. 旋转卡(qia)壳 平面最远点对
  12. mysql火焰图_perf + 火焰图分析程序性能 - 刘志鹏的Blog - 博客园
  13. 2021届校招求职流程全解析(IT企业和国企)
  14. “蘑菇书”是怎样磨出来的?
  15. 入网许可证_入网许可证查询
  16. 是否可以将一个控件的outerHTML赋值?
  17. IEEE xplore免费下载论文
  18. 成都大数据语言培训:如何提高数据分析能力
  19. 王道计算机考研j机试指南,王道论坛计算机考研机试指南 三 Hash的应用
  20. win10中Mysql安装配置

热门文章

  1. TensorFlow之图结构与TensorBoard可视化
  2. 聊天机器人之需求分析和流程介绍
  3. ACMNO.13求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字。 输入 n 输出 和 样例输入 5 样例输出 153
  4. 知乎热议:985计算机视觉研究生找不到工作?
  5. Confluence 6 配置文件和key
  6. metaq的简单封装dataChange解读
  7. iOS单独集成QQ分享功能
  8. 用户列表-投资记录sql
  9. Mysql性能优化方案
  10. Windows Phone 7 开“.NET研究”发之:工具栏