首页 > 其他分享 >非常牛 dsu on tree

非常牛 dsu on tree

时间:2024-10-22 16:20:26浏览次数:1  
标签:非常 低批 int siz dsu tree son fa flg

轩辕 4721 年,彩笔@硒六爱吃硫,在某日的西艾斯批%你赛中花了两个小时切掉了 T1 和 T2。

随后看到 T3,心想:“这不是傻逼题吗,建下克鲁斯卡尔重构树然后瞎几把低批不就做完了吗。”

发现并不会低批。

思考了一个小时发现并不是沙比低批,而是地艾斯优盎吹。

@硒六爱吃硫 打完暴力。注意到还有 \(40\) min。

what should he/she do?

遗憾的,@硒六爱吃硫 早就忘了地艾斯优盎吹怎么写。最终只拿下 36pts 的高分。

int siz[400005], son[400005];
void dfs1(int x, int fa) {
    siz[x] = 1;
    for(int i = head[x]; i; i = e[i].nxt) {
        int y = e[i].to;
        if(y == fa) continue;
        dfs1(y, x);
        if(siz[son[x]] < siz[y]) son[x] = y;
        siz[x] += siz[y];
    }
}
vector<int> st, now;
// now 表示当前重子树正在做的节点集合
// st 用于统计一个轻儿子内的节点集合
void dfs2(int x, int fa, int flg) {
    // flg == -1 表示计算以 x 为根的子树内的节点集合
    // flg == 0 表示计算以 x 为根的子树的答案,并不保留答案
    // flg == 1 表示计算以 x 为根的子树的答案,保留答案
    if(flg != -1) for(int i = head[x]; i; i = e[i].nxt) if(e[i].to != fa && e[i].to != son[x]) dfs2(e[i].to, x, 0);
    if(flg != -1 && son[x]) dfs2(son[x], x, 1);
    if(flg != -1 && x <= n) now.push_back(x), //维护数据结构等;
    for(int i = head[x]; i; i = e[i].nxt) {
        int y = e[i].to;
        if((y == son[x] && flg != -1) || y == fa) continue;
        dfs2(y, x, -1);
        if(flg != -1) {
            for(int z : st) {
                //计算答案
            }
            for(int z : st) now.push_back(z), //维护数据结构等;
            st.clear();
        }
    }
    if(flg == -1 && x <= n) st.push_back(x);
    if(flg == 0) {
        for(int z : now) //清空数据结构;
        now.clear();
    }
}

标签:非常,低批,int,siz,dsu,tree,son,fa,flg
From: https://www.cnblogs.com/QAQ-C14/p/18493211

相关文章

  • 保姆级 | MySQL的安装配置教程(非常详细)
    一、下载Mysql从官网下载MySQL,这里我选用的是Mysql8.0.34版本   二、安装Mysql下载完成后直接双击进行安装,打开后的页面如下所示:“DeveloperDefault”是开发者默认“Serveronly”仅作为服务器安装“Clientonly”仅作为客户端安装“Full”是完整安装“Custom”......
  • BehaviorTree、QP状态机与有限状态机(FSM)的比较分析
            在现代软件开发中,状态管理是确保系统行为正确性和高效性的关键。BehaviorTree、QP状态机和有限状态机(FSM)是三种常用的状态管理工具,它们各自适用于不同的场景。以下将通过具体例子和伪代码来比较这三种工具的特点和适用性。BehaviorTree:游戏AI的灵活决策Behav......
  • 面试面经|大模型面试八股含答案,非常详细收藏我这一篇就够了
    基础知识1.transformer八股文a.Self-Attention的表达式b.为什么上面那个公式要对QK进行scalingscaling后进行softmax操作可以使得输入的数据的分布变得更好,你可以想象下softmax的公式,数值会进入敏感区间,防止梯度消失,让模型能够更容易训练。c.self-attention一定要这样......
  • 描述跨站点脚本攻击(XSS)的工作原理,以及如何防御这种攻击(非常详细)
    跨站点脚本攻击(XSS)是一种常见的网络安全威胁,它允许攻击者在用户的浏览器上执行恶意脚本。这些脚本可以盗取用户数据、劫持用户会话、修改网页内容等。XSS攻击的工作原理是通过在网页中注入恶意脚本,当用户浏览这些网页时,脚本就会被执行。XSS攻击主要分为三类:1.**反射型XSS(Non......
  • [ABC337G] Tree Inversion(换根 dp + 值域线段树)
    link题目形式就很换根dp如果这种题用朴素的做法求,就是暴力以每个点都做一次根跑树,自底向上统计,时间是\(O(n^2)\)而换根dp的思想就是分两步,一般先钦定某个点(如1)为根,统计一遍以1为根时的结果,然后挖掘如果以其他点为根时,变换对结果的影响,一般就是自顶向下更新如果换根后......
  • 黑客入门教程(非常详细)从零基础入门到精通,看完这一篇就够了
       这篇文章没有什么套路。就是一套自学理论和方向,具体的需要配合网络黑白去学习。毕竟是有网络才会有黑白!有自学也有培训!1.打死也不要相信什么分分钟钟教你成为大黑阔的,各种包教包会的教程,就算打不死也不要去购买那些所谓的盗号软件之类的东西。2,我之前让你们在没有目......
  • 在K8S中,有一家拥有非常分散的系统的跨国公司,期待解决整体代码库问题。你认为公司如何
    在K8S中,公司可以通过以下方式修改其部署方法并建立一个更具可扩展性和响应性的平台,以满足客户需求:采用微服务架构:将应用程序分解为一组小型、独立的服务,每个服务都运行在自己的容器中。这种架构使得应用程序更加模块化,易于扩展和维护。同时,微服务可以独立部署和更新,从而提高了......
  • 6个黑客教程网站,小白也能成大牛!(非常详细)零基础入门到精通,收藏这一篇就够了
    黑客攻击是一项很难掌握的技能,在很大的程度上要求人们对计算机和软件架构的各种概念和网络系统有深入的了解。一般而言,黑客主要有两种:黑帽黑客、白帽黑客。黑帽黑客为了个人利益,利用自身的计算机系统知识侵入系统,这种做法是违法的,需要负法律责任;而白帽黑客则是利用相同的......
  • 三,TreeMap和HashMap,TreeSet和HashMap的区别以及方法使用上的不同
    TreeMap和HashMap的区别TreeMap:基于红黑树实现。提供了范围查询和排序功能。所有操作的时间复杂度为O(logn)。不允许键为null。键必须实现Comparable接口或提供一个Comparator。HashMap:基于哈希表实现。提供快速的查找、插入和删除操作。平均时间复杂度为O(1),......
  • 闯关leetcode——110. Balanced Binary Tree
    大纲题目地址内容解题代码地址题目地址https://leetcode.com/problems/balanced-binary-tree/description/内容Givenabinarytree,determineifitisheight-balanced.Aheight-balancedbinarytreeisabinarytreeinwhichthedepthofthetwosub......