Gym 101142G Gangsters in Central City【思维+Lca】

PCIe调试进阶:除了测眼图,如何用IP配置调优Gen4链路均衡(以Xilinx/Intel IP为例) 本文深入探讨了PCIe Gen4链路调优的进阶方法,重点介绍了如何通过IP配置优化解决稳定性问题。文章详细解析了Xilinx和Intel IP的寄存器配置技巧、均衡策略选择及动态监控体系,帮助工程师在不依赖昂贵测试设备的情况下提升链路性能。特别适合已通过基础眼图测试但仍有间歇性错误的场景。 阅读详情

题意:

  • 给一棵树,叶子节点为房子,q次操作,节点1为根节点(蓄水池)向房子供水
  • 每次操作有两种类型,+ x 强盗占领了编号为x的房子,- x强盗离开了编号为x的房子。
  • 对每次操作,ans1计算出最少卡住几个节点使得强盗占领的房子都没水喝,ans2卡住这些点后没有被强盗占领的房子通不了水的数量最小,每次输出这两个数

思路:

  • 对根节点,如果有k个直接连接的点,拆成k棵子树。每棵有强盗占领的子树肯定最多只需要卡住一个点,那ans1就是k个子树中有强盗的的子树数量。
  • 对每棵子树求出被强盗占领的点dfs序最大的和最小的两个点的lca就是这棵子树中被强盗占领的所有的点的lca。处理出每个节点下有多少个房子(sz[i]),那么求出lca后,先减去没进行这次操作前这个子树的贡献,然后再加上这个操作,求出这颗子树上的点的lca,再加上这棵子树的贡献。ans2=sz[lca]-强盗占领的点。

代码:

#include<bits/stdc++.h>
using namespace std;
#define rep(i,s,t) for(int i=(s);i<(t);++i)
#define per(i,s,t) for(int i=((t)-1);i>=(s);--i)
#define pb push_back
#define dd(x) cout<<#x<<'='<<x<<' '
#define de(x) cout<<#x<<'='<<x<<'\n'
#define fi first
#define se second
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
typedef vector<int> vi;
const int N=1e6+5;
int dp[N][20],n;
vi G[N];
set<int>st[N]; //维护第i棵子树中的dfs序
int tot,ver[N*2],R[N*2],First[N*2],bel[N],sz[N],cut[N];
 //cut[i] 第i棵子树中强盗占领的房子数量 
//bel[i],节点i属于那棵子数
// First[u] u节点的在ver中第一次出现的下标,即dfs序
bool vis[N];
void dfs(int u,int dep){
    vis[u]=true;ver[++tot]=u;First[u]=tot;R[tot]=dep;
    rep(i,0,G[u].size()){
        int v=G[u][i];
        if(!vis[v]){
            dfs(v,dep+1);
            ver[++tot]=u;
            R[tot]=dep;
        }
    }
}
void ST(){
    rep(i,1,tot+1){
        dp[i][0]=i;
    }
    for(int j=1;(1<<j)<=tot;++j){
        for(int i=1;i+(1<<j)-1<=tot;++i){
            int a=dp[i][j-1];http://codeforces.com/group/aUVPeyEnI2/contest/229510/attachments
            int b=dp[i+(1<<(j-1))][j-1];
            if(R[a]<R[b])dp[i][j]=a;
            else dp[i][j]=b;
        }
    }
}
int RMQ(int l,int r){
    int k=0;
    while(1<<(k+1)<=r-l+1){
        k++;
    }
    int a=dp[l][k],b=dp[r-(1<<k)+1][k];
    return R[a]<R[b]?a:b;
}
int LCA(int u,int v){
    int res=RMQ(u,v);
    return ver[res];
}
void Dfs(int u,int rt){
    bel[u]=rt;
    vis[u]=true;
    if(G[u].size())sz[u]=0;
    else sz[u]=1;
    rep(i,0,G[u].size()){
        int v=G[u][i];
        if(!vis[v]){
            Dfs(v,rt);
            sz[u]+=sz[v];
        }
    }
}
int main()
{
    tot=0;
    memset(vis,0,sizeof(vis));
    memset(sz,0,sizeof(sz));
    int q,p;
    scanf("%d%d",&n,&q);
    rep(i,2,n+1){
        scanf("%d",&p);
        G[p].pb(i);
    }
    dfs(1,1);
    ST();
    memset(vis,0,sizeof(vis));
    rep(i,0,G[1].size()){
        Dfs(G[1][i],i+1);
    }
    int ans1=0,ans2=0;
    char op[10];
    int x,fa,mi,ma,lca;
    while(q--){
          scanf("%s%d",op,&x);
          if(op[0]=='+'){
                fa=bel[x];
                if(cut[fa]){
                    mi=*st[fa].begin(),ma=*st[fa].rbegin();
                    lca=LCA(mi,ma);
                    ans2-=sz[lca]-cut[fa];
                }
                if(cut[fa]==0)ans1++;
                cut[fa]++;
                st[fa].insert(First[x]);
                mi=*st[fa].begin(),ma=*st[fa].rbegin();
                lca=LCA(mi,ma);
                ans2+=sz[lca]-cut[fa];
          }
          else{
                fa=bel[x];
                mi=*st[fa].begin(),ma=*st[fa].rbegin();
                lca=LCA(mi,ma);
                ans2-=sz[lca]-cut[fa];
                if(cut[fa]==1)ans1--;
                cut[fa]--;
                st[fa].erase(First[x]);
                if(cut[fa]){
                    mi=*st[fa].begin(),ma=*st[fa].rbegin();
                    lca=LCA(mi,ma);
                    ans2+=sz[lca]-cut[fa];
                }
          }
          printf("%d %d\n",ans1,ans2);
    }
    return 0;
}
通俗解析:霍尔编码器、光电编码器、电位计、磁编码器和旋转变压器的实战选型指南 本文深入解析了霍尔编码器、光电编码器、电位计、磁编码器和旋转变压器五大主流编码器的工作原理与核心特性。通过对比精度、环境耐受性、成本及寿命等关键维度,并结合消费电子、工业自动化、汽车电子及极端环境等典型应用场景,提供了一份清晰的实战选型指南,旨在帮助工程师根据具体需求,在性能、可靠性与成本间做出最优决策。 阅读详情

相关推荐

低功耗模式下的看门狗使用

最近用国产芯片AT32在做一个低功耗的项目,为了实现低功耗模式下的定时唤醒,我选择的是使用相对比较简单的看门狗来做,下面就分享一下使用过程~ 为了最大限度的降低功耗,我用的是待机模式,先看看几种低功耗模式以及唤醒的区别: 而看门狗AT32提供了两种,分别是独立看门狗(IWDG)和窗口看门狗(WWDG),其区别大概有以下几点: 1、独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效;窗口看门狗由从 APB1 时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常

dc18883988396的博客 3028

GYM 101142 G.Gangsters in Central City(树链剖分LCA)

Description 给出一棵nn个节点的树,根节点为11表示水源,叶子节点表示住户,水沿着树边流向住户,两种操作 1.+ v+\ v,表示vv住户有小偷进入,保证之前vv住户没有小偷 2.− v-\ v表示vv住户里的小偷离开,保证之前vv住户有小偷 每次操作结束后,问至少需要断几条树边可以使得所有有小偷的住户没有水喝,在断边数最少的前提下,使得没有进小偷但被断水的住户数最少 I

ZSQ 460

05-SA8155 QNX Display框架及代码分析(1)

显示是非常重要的一个模块,人机交互的桥梁。那么SA8155 Hypervisor显示是如何处理的呢。对处理流程非常的好奇O(∩_∩)O哈哈~。TODO。

静虚待令,有物混成 1万+

codeforces gym 101142G Gangsters in Central City

简略题意:一棵树,每个节点有一个局面,根是水源,边是水管。初始每个居民都有水喝。 操作有两种: ‘+ v’, v处的居民楼被强盗占领。 ‘- v’, v处的强盗走了。 对于每个询问,你需要切断一些水管,使得所有强盗没水喝,没水喝的居民尽量少。因为必须有边切才行,所以需要切除的边数最多就是与原来的根相连的边的数目。 原来的树拆成了若干个子树,每个子树的根也有一个边可以切除。单独考虑每个子树的

即使摸爬滚打,满身泥泞,我也要前进 447

【云原生进阶之容器】第六章容器网络6.6.2--Cilium部署

部署Cilium非常简单,可以通过单独的yaml文件部署全部组件(目前我使用了这个方式部署了1.7.1版本),也可以通过Helm Chart一键完成。重要的是部署环境和时机:官方建议所有部署节点都使用Linux最新稳定内核版本,这样所有的功能都能启用。作为一个Kubernetes网络组件,它应该在部署Kubernetes其他基础组件之后,才进行部署。

junbaozi的专栏 792

数学建模算法案例精讲500篇-【深度强化学习】深度确定性策略梯度(DDPG)(附MATLAB和python代码实现)

它是一种学习连续动作的无模型策略算法。它结合了DPG(确定性策略梯度)和DQN(深度Q网络)的思想。它利用DQN中的经验重放和延迟更新的目标网络,并基于DPG,可以在连续的动作空间上运行。# 用于生成带有噪声的动作def __init__(self, action_space, mu=0.0, theta = 0.15, max_sigma = 0.3, min_sigma = 0.3, decay_period = 100000):#decay_period要根据迭代次数合理设置# 均值 mu。

qq_36130719的博客 325

G. Gangsters in Central City

给出一棵$1$为根节点的含$n$个节点的树,叶子节点都是房屋,在一个集合里面添加房屋和移除房屋。 每一次添加和移除后,回答下面两个问题。 1. 使得已选房屋都不能从根节点到达,最少需要砍多少条边。 2. 在第$1$问最少砍去边的条件下,如何砍边使得从节点点开始走不能到达的非已选房屋数目最小,输出最小值。 对于100%的数据 , $2 ≤ n ≤ 10^5 , 1 ≤ q ...

weixin_30460489的博客 224

手把手教你学simulink(43.2)--光伏发电场景示例:基于Simulink开发一个光伏发电系统仿真模型:采用神经网络控制策略进行优化

需求分析光伏发电系统(Photovoltaic System, PV)是将太阳能转换为电能的重要手段,广泛应用于分布式发电、并网发电和离网供电等领域。随着光伏技术的发展,如何提高光伏发电系统的效率和稳定性成为研究的重点。传统的控制策略(如PID控制器)虽然简单易实现,但在复杂工况下(如光照强度变化、温度波动等)难以达到最优性能。因此,引入先进的控制策略,如神经网络控制(Neural Network Control, NNC),可以显著提升系统的响应速度和鲁棒性。

MHD0815的博客 438

2016-2017 ACM-ICPC, NEERC, Northern Subregional Contest G - Gangsters in Central City

题目大意现有一颗有根树,叶子节点可被染成黑色(最开始都是白色),也可以被染回白色,现在问给出每次染色信息后(即带修改),最少需要切断几条边保证黑色叶子不在树上,且在此条件下最少有多少白色叶子不在树上。解题思路大体算法:DFS序+倍增 很容易发现,被切断的边数最多只需要与根节点相连的边数,因为根节点连出去的每颗子树最多只需要一条边就可以切断,所以每颗子树都是独立的。 这样问题就转化为了找出每课子树

Cabinfever的专栏 1243

用 CORRESPONDING #( ) 优雅复制同名字段:从 MOVE-CORRESPONDING 到现代 ABAP 结构映射的关键差异与最佳实践

摘要:本文深入探讨了SAP ABAP中结构数据复制的两种主要方式——传统MOVE-CORRESPONDING与现代CORRESPONDING #()的核心差异。重点分析了现代构造表达式会初始化目标结构的关键特性,通过SAP_GWFND开发中的实际案例展示了这一差异可能引发的线上问题。同时介绍了使用BASE保留目标字段值的技巧,以及通过MAPPING处理字段名不一致的场景。文章为ABAP开发者提供了在S/4HANA、BTP及RAP等现代架构下的数据映射最佳实践,帮助规避常见的维护陷阱。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2262

COSMO-RS理论:流体相热力学预测的核心模型与技术突破

摘要:COSMO-RS模型通过量子化学计算分子表面电荷分布,实现了从微观量子尺度到宏观化工过程的热力学预测。该模型基于介电连续介质理论,将分子表面片段化处理,通过σ-剖面描述电荷分布,并计算片段间的静电失配能和氢键能。其核心算法通过自洽化学势方程求解活度系数,克服了传统模型依赖实验参数的局限。随着技术进步,模型引入了高阶描述符和色散力修正,提升了预测精度。在药物研发、化工分离等领域广泛应用,但仍存在对长程有序结构预测不足等局限性。该模型为复杂体系的热力学性质预测提供了重要理论工具。

ASKCOS博客 974

Gym101142G Gangsters in Central City

题目链接:https://cn.vjudge.net/problem/Gym-101142G 知识点:  DFS序、LCA 题目大意:   给定一棵有根树(根为 \(1\))。每次修改叶子节点会被染成黑色(最开始都是白色的),也可以被染回白色。给出 \(q\) 次修改,对每次修改问最少需要切断几条边就能保证黑色叶子不在树上,和保证用最少的切断数使得黑色叶子不在树上的前提下最少会有多...

dielie6462的博客 199

【txt文本加密】使用 cryptography 库实现加密和解密

cryptography 库是一个强大的 Python 库,用于实现加密和解密功能。它提供了各种加密算法,包括对称加密、非对称加密、哈希函数等。

📷 图像处理践行者 | 传统算法 · 深度学习 · 多模态 | 分享实战经验与技术洞见,探索从像素到智能的无限可能。 2667

Gangsters in Central City Gym - 101142G

https://vjudge.net/problem/Gym-101142G #include <iostream> #include <cstring> #include <queue> #include <vector> #include <algorithm> #include <cstdio> #include ...

newhonor 195

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Gym 101142G Gangsters in Central City (动态倍增LCA+DFS序性质)

#include<bits/stdc++.h> using namespace std; #define debug cout<<"YES\n"; #define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++) #define ll long long #define lrt int l,int r,int rt #define ...

满月照亮的路 258

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

GYM/101142 Problem G. Gangsters in Central City (dfs序+lca+set)

题意:给你一棵树 1为根节点(水源),叶子节点为村民 现在有一些小偷入侵了村庄 我们现在想切断水源 使得小偷渴死 每个小偷有一个入侵和离开的时间 求 我们最少需要切断多少次以及被断水影响到的村民个数 思路:学习了付队的博客 我们以水源连的边作为子树的根(暂记做k),求得每个子树的叶子节点个数 我们用set记录 以k为根节点的子树的小偷 的dfs序 因为我们要尽量少删边 直接求d...

diangan7073的博客 310

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Codeforces Gym 101142 G. Gangsters in Central City (最近公共祖先)

题意树的根节点为水源,编号为 1 。给定编号为 2, 3, 4, …, n 的点的父节点。已知所有叶节点都是房子。有 q 个操作,每个操作可以是下列两者之一: + v ,表示编号为 v 的房子被歹徒占领。 - v ,表示歹徒退出编号为 v 的房子。 初始所有房子都没有歹徒。对于每次变化后,要求删除最少的边,使得所有有歹徒的房子均无法与水源连通;同时,在此基础上要求受影响的普通房子数量最少。解题思路令

DorMOUSENone的博客 897

鸿蒙Flutter原生视图同层渲染:从烤皮纹理到真身合成的混合开发实践

混合开发中,将原生视图嵌入Flutter页面一直面临渲染层级隔离的难题。Flutter通过自绘UI与GPU直渲构建独立绘制体系,而系统原生控件活在另一套视图层级里,传统方案只能采用离屏渲染或纹理贴图,将原生内容“烤”成图片再合成,由此带来了触摸延迟、掉帧和画质损失。鸿蒙Flutter引擎基于统一渲染合成框架,实现了PlatformView的同层混合合成,让原生组件与Flutter UI共享同一渲染树,视频播放、相机预览、地图等高频实时场景无需经过纹理拷贝即可直接输出,交互与性能显著提升。本文从渲染架构原理出

weixin_34127717的博客 213

Codeforces Gym 101142 G Gangsters in Central City (lca+dfs序+树状数组+set)

题意: 树的根节点为水源,编号为 1 。给定编号为 2, 3, 4, …, n 的点的父节点。已知只有叶子节点都是房子。 有 q 个操作,每个操作可以是下列两者之一: + v,表示编号为 v 的房子被歹徒占领。 - v,表示歹徒退出编号为 v 的房子。 初始所有房子都没有歹徒。对于每次变化后,要求删除最少的边,使得所有有歹徒的房子均无法与水源连通;同时,在此基础上要求受影响的...

weixin_34204722的博客 135

Codeforces Gym 101142G

#include #include #include #include using namespace std; const int N=1e6+10; int n,q; int to[N],nx[N],h[N],sz; int dep[N][25]; int L[N],R[N],b[N],c[N]; int g[N],f[N],t[N]; set s[N]; set::iterator it;

Occult 679

KV Cache技术解析:如何优化Transformer推理显存与计算效率

在Transformer架构中,自注意力机制是核心组件,但其计算过程会产生巨大的临时显存开销,尤其是在自回归生成任务中。其原理涉及查询、键、值向量的计算与交互,导致序列长度的平方级复杂度。这一技术挑战催生了针对推理效率的优化需求,旨在减少重复计算和内存占用。KV Cache作为一种关键技术,通过缓存已生成token的键值对,将重复计算转化为静态存储,显著降低了计算复杂度和显存峰值需求。结合多头注意力及其变体如分组查询注意力,KV Cache在长文本生成、对话系统等场景中实现了高效的推理加速,成为大模型部署中

weixin_34411563的博客 423

Gym - 101142A

团队赛的第一次比赛,这次用的是国外的题,也是我第一次的总结的题,这是这次比赛的第一个比赛的题很水,也是很考验脑子的思路的, 因为是输出任意情况中的一种那么就非常简单了,只要寻找每个点所对应的边界上的点就可以了,看下代码就很容易懂了。 #include #include #include #include #include #include #include #include #include

qq_38069256的博客 478

Gym - 100781G- Goblin Garden Guards

/* 对于每个喷洒点,遍历这个圆的外切正方形内的所有点 */ #include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;cmath&gt; using namespace std; const int maxn = 1e5+10; const int N = 1e4 + 10; struct Point { int...

刘二狗的博客 346

[codeforces][gym101059C]Gangsters

time limit per test:5.0 s memory limit per test:64 MB You live in a graph G, with N vertices and M edges. P of these vertices have gangsters living on them. You owe each gangster some money, given b...

dxyinme-Zz 335

Gym - 101142F Folding

思路: 因为只能沿与边平行的线折,所以每次折叠相当于缩小两条边中的一条边,而如果当前一条边长为x则折叠后最小为(x+1)/2。所以只要目标长度在[(x+1)/2,x)范围内都能通过一次折叠得到。按照这个思路就很容易求得把长为A的边折成B所需要的次数了。 需要注意的是最后结果并不一定是长边折长边;短边折短边最少。 代码: #include &lt;bits/stdc++.h&gt; ...

vocaloid01的博客 250

Codeforces Gym 101142 J. Java2016 (构造)

题意John likes to learn esoteric programming languages. Recently he discovered the probabilistic programming language Java2K. Built-in functions of Java2K have only a certain probability to do whatever y

DorMOUSENone的博客 988
上一篇: F - Foreign Postcards (dp)
下一篇: 机器学习资料
PinappleMi
博客等级 码龄9年 10粉丝 48原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值