11.22模拟赛

news/2025/11/22 16:08:44/文章来源:https://www.cnblogs.com/needna/p/19257031

T1

给定一棵 \(n\) 个点的树,点有颜色,问有哪些 \(u\) 满足,对于任意的 \(v\),路径 \((u,v)\) 上不出现重复颜色。

对于所有数据,满足 \(1 \leq n \leq 2 \times 10^5, 1 \leq c_i \leq n\)

题解

考虑用样的颜色会使得那些点不能成为答案,思考之后我们可以得到这个性质,现在我们以 \(1\) 为根:

  • 对于相同颜色的点考虑,如果这个点的子树有相同颜色点,那么这个点的非子树节点无解。
  • 如果这个点的非子树节点有相同颜色点,那么这个点的子树节点无解。

但是会有一个 corner case,就是根节点的判断没有非子树的部分,所以会错。考虑再用 \(2\) 为根跑一次就行了。

为了处理上面的判断,我们可以用两个树状数组维护。

code:

#include<bits/stdc++.h>
#define pb push_back
#define int long long
#define lbt(x) (x&(-x))
#define m(a) memset(a,0,sizeof(a))
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define per(i,a,b) for(int i=(a);i>=(b);i--)
using namespace std;
const int N=5e5+10;
int n,m,k,T,a[N],t[N],t1[N],sum,dfn[N],tot,out[N],res[N];
vector<int> g[N],col[N],ans;
void upd(int i,int x){while(i<N){t[i]+=x;i+=lbt(i);}}
int sc(int i){int ans=0;while(i>0){ans+=t[i];i-=lbt(i);}return ans;}
int query(int l,int r){return sc(r)-sc(l-1);}
void upd1(int i,int x){while(i<N){t1[i]+=x;i+=lbt(i);}}
int sc1(int i){int ans=0;while(i>0){ans+=t1[i];i-=lbt(i);}return ans;}
void add1(int l,int r,int x){upd1(l,x);upd1(r+1,-x);}
void dfs(int u,int fa){dfn[u]=++tot;for(int v:g[u]){if(v==fa) continue;dfs(v,u);}out[u]=tot;
}
void solve(int x){tot=0;dfs(x,0);m(t1);m(t);rep(i,1,n){for(int u:col[i]) upd(dfn[u],1);for(int u:col[i]){int x=query(dfn[u]+1,out[u]);if(x>=1){add1(1,dfn[u],1);add1(out[u]+1,n,1);}if(col[i].size()-x>1){add1(dfn[u],out[u],1);}}for(int u:col[i]) upd(dfn[u],-1);}rep(i,1,n){if(sc1(dfn[i])>0){res[i]=1;}}
}
signed main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);freopen("problem.in","r",stdin);freopen("problem.out","w",stdout);cin>>n;rep(i,1,n){int x;cin>>x;col[x].pb(i);}rep(i,1,n-1){int u,v;cin>>u>>v;g[u].pb(v);g[v].pb(u);}solve(1);solve(2);rep(i,1,n){if(res[i]==0){ans.pb(i);sum++;}}cout<<sum<<'\n';for(int u:ans){cout<<u<<" ";}return 0;
}

T2

荷塘是一个平面直角坐标系,其中有 \(n\) 条鱼,编号为 \(1, 2, \ldots, n\),位置用一个点 \((x_i, y_i)\) 表示(可以重复)。它们听路过的米奇提到 \(\text{“}\) 平面最远点对 \(\text{”}\),于是想亲身实践一下——进行 \(m\) 次操作,每次为以下两种之一:

  • 充分发扬鱼类智慧,将编号在 \([l, r]\) 中的鱼的位置绕原点逆时针旋转 \(90^\circ\)
  • 询问编号在 \([l, r]\) 中的鱼两两之间(包括自己和自己)的最大曼哈顿距离,即:

\[\max_{l \leq i \leq j \leq r} \{ |x_i - x_j| + |y_i - y_j| \} \]

由于鱼的记忆只有七秒,难以进行大量的运算,所以它们想请你帮忙给出答案。

对于 \(100\%\) 的数据,满足 \(1 \leq n, m \leq 2 \times 10^5, 1 \leq x_i, y_i \leq 10^8, 1 \leq l \leq r \leq n\)

题解

先套路的转化为切比雪夫距离,那么我们的式子就变成了:

\[\max_{l \leq i \leq j \leq r} \{ \max(|x_i - x_j| , |y_i - y_j|) \} \]

发现只和一个值有关,所以只需要维护区间新的 \(x,y\) 的最大最小值就行了。现在考虑怎么做翻转操作。我们同时维护这些区间翻转 \(0\degree,90\degree,180\degree,270\degree\) 的值,翻转之后值轮换一下就好了,直接用线段树维护即可。

code:

#include<bits/stdc++.h>
#define fi first
#define se second
#define ls (p<<1)
#define rs (p<<1|1)
#define int long long
#define pii pair<int,int>
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define per(i,a,b) for(int i=(a);i>=(b);i--)
using namespace std;
const int N=5e5+10;
int n,m,q,T;pii a[N];
vector<int> g[N];
struct tree{int u,l,d,r,laz;friend tree operator+(tree a,tree b){tree tmp;tmp.u=max(a.u,b.u),tmp.l=min(a.l,b.l);tmp.d=min(a.d,b.d),tmp.r=max(a.r,b.r);return tmp;}
}t[N<<2];
void build(int p,int l,int r){if(l==r){int x=a[l].fi,y=a[l].se;t[p]={x+y,x-y,x+y,x-y,0};return;}int mid=l+r>>1;build(ls,l,mid);build(rs,mid+1,r);t[p]=t[ls]+t[rs];
}
void solve(int p,int x){tree tmp=t[p];t[p].laz=(t[p].laz+x)%4;while(x--){t[p].u=tmp.r;t[p].l=-tmp.u;t[p].d=tmp.l;t[p].r=-tmp.d;tmp=t[p];}
}
void pushdown(int p){if(t[p].laz==0) return;solve(ls,t[p].laz);solve(rs,t[p].laz);t[p].laz=0;
}
void upd(int p,int l,int r,int x,int y){if(x<=l&&r<=y){solve(p,1);return;}int mid=l+r>>1;pushdown(p);if(x<=mid) upd(ls,l,mid,x,y);if(y>mid) upd(rs,mid+1,r,x,y);t[p]=t[ls]+t[rs]; 
}
tree query(int p,int l,int r,int x,int y){if(x<=l&&r<=y) return t[p];int mid=l+r>>1;pushdown(p);if(y<=mid) return query(ls,l,mid,x,y);else if(x>mid) return query(rs,mid+1,r,x,y);else return query(ls,l,mid,x,y)+query(rs,mid+1,r,x,y);
}
signed main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);freopen("fish.in","r",stdin);freopen("fish.out","w",stdout);cin>>n>>q;rep(i,1,n){int x,y;cin>>x>>y;a[i]={x,y};}build(1,1,n);while(q--){int op,l,r;cin>>op>>l>>r;if(op==1) upd(1,1,n,l,r);else{tree res=query(1,1,n,l,r);cout<<max(res.u-res.d,res.r-res.l)<<'\n';} }return 0;
}

T3

T4

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/973200.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从超时到秒杀:三路快排解决数组排序的完整实战与反思

从超时到秒杀:三路快排解决数组排序的完整实战与反思在算法学习中,“数组排序”是绕不开的基础问题,但看似简单的需求,却藏着对时间复杂度、空间复杂度的深度考量。本文结合我在 LeetCode “数组升序排列” 问题中…

2025年光伏安装厂家权威推荐榜单:光伏施工/光伏/光伏发电源头厂家精选

在能源转型战略的推动下,光伏产业迎来爆发式增长,专业的光伏安装服务正成为保障系统高效稳定运行的关键环节。 根据行业统计数据,2024年中国光伏新增装机量达277.57GW,同比增长28.3%,相当于2010年到2020年11年的累…

机房夸夸乐

前言 先开坑…… 咱们来写一个机房夸夸乐吧,争取 \(noip\) 前更完。 可能会有一些外号,自己猜猜是谁吧~~ 注:按照座位顺序来的。

2025年镀锌水沟盖板订做厂家权威推荐榜单:雨水沟盖板/污水沟盖板/镀锌排水沟盖板源头厂家精选

在城市化建设和工业基础设施升级的推动下,镀锌水沟盖板凭借其优异的防腐性能和承载能力,正成为市政工程、工业园区和道路排水系统的关键部件。 根据市场调研数据显示,2024年中国钢格板市场规模达到85亿元,年均增长…

完整教程:【Deepseek OCR】重磅测试,mac环境下的体验【本人已经本地实验成功】

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

使用C# Channel实现工位流水线调度系统

在现代制造业中,流水线生产需要精确的工位协作。本文将介绍如何使用C#的Channel实现一个高效的工位流水线调度系统。 1、首先我们准备一个工位接口public interface IWorkstation{string WorkName { get; }Task Start…

福星福袋助手,抖音福袋扭蛋机,抖音抢福袋工具

抖音福星福袋助手,抖音福袋扭蛋机,抖音抢福袋工具 DY福袋工具 抖音福袋福星福袋助手 最新版本群里下载 [2025-11-20] 抖音福星福袋助手,抖音抢福袋工具,抖音无水印视频下载器,抖音直播间录制下载器,抖音批量取消…

2025年发电机制造厂权威推荐榜单:康姆勒原装发电机组/康姆勒发电机组/全自动柴油发电机组源头厂家精选

在能源安全与应急供电需求日益重要的今天,发电机组作为各行业关键电力保障设备,其性能优劣直接关系到企业运营的连续性与稳定性。 发电机组作为重要的电力供应设备,在工业备用电源、基础设施建设、应急救援等领域发…

2025百元白酒精选推荐指南:十大香型佳酿与纯粮酒挑选策略

在白酒消费市场中,百元价位带凭借 “品质与性价比平衡” 的核心优势,成为日常口粮酒、家庭聚会及轻商务宴请的主流选择。据行业统计数据显示,百元档白酒占整体白酒消费市场份额超 35%,且年均增速保持在 12% 以上,…

BLOG1-NCHU-单部电梯调度程序

题目集 1-3 单部电梯调度程序 一.前言历经三周的时间,也是完成了每周一次Java课程的大作业。在我们每次完成的大作业当中均包含着NCHU-单部电梯调度程序的相关题目,并且每周题目呈现迭代递进的特点。从题目集1的NCHU…

Hadoop生态系统怎样优化存储性能

Hadoop生态系统优化存储性能是一个复杂的过程,涉及多个方面。以下是一些关键的策略和步骤,可以帮助您提高Hadoop的存储性能: 硬件优化主节点和从节点的配置:确保主节点(运行NameNode)的内存配置足够高,因为Name…

【matlab】机器学习入门之旅

T = readtable(filename) 通过从文本文件、电子表格(包括 Microsoft Excel)文件、XML 文件、HTML 文件或 Microsoft Word 文档中读取列向数据来创建表。readtable 检测数据元素,如分隔符和数据类型,以确定如何导入…

web漏洞、waf繞過和前端加密繞過

1、安装并使用burp越权检测插件auth_analyzer测试pichachu垂直越权漏洞A.先使用普通帐号登入:B.登入管理员帐号:2、搭建ftp服务器并分别使用hydra和超级弱口令检查工具检查ftp弱口令3、安装captcha-killer-modified插件…

部署tendis 集群

部署tendis 集群1.概述 我们在部署 tendis 集群的时候,我们需要准备 6台机器,3主三从,当然 我们可以将他们部署同一台机器上,只要端口不一样就可以。 我们准备 6个文件夹 端口分别从 7001到 7006 构建过程 2.1.准备…

P4555 [国家集训队] 最长双回文串 踢姐

P4555 [国家集训队] 最长双回文串 踢姐 简要题意: 给定一个字符串 \(S\) ,我们定义字符串 \(T\) 的双回文子串为:存在两个字符串 \(X\) 与 \(Y\) 是 \(T\) 的非空子串,满足 \(X\) 与 \(Y\) 无重叠部分并且两个字符…

2025年水肥一体机制造厂权威推荐榜单:便携式水肥一体机/全自动喷淋系统/简易水肥一体源头厂家精选

随着智慧农业的快速推进,水肥一体化技术正成为现代农业生产的关键支撑。据行业数据显示,水肥一体化设备可有效提高水肥利用率30%以上,成为推动农业现代化转型的核心装备。 水肥一体化技术通过集成灌溉与施肥系统,实…

Java—抽象类 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

23207225-华辉-第一次blog作业

一. 前言 在完成三次大作业的题集后,我兴高采烈地写下写下这片博客,思考人生的意义,也想和大家分享我在这三次大作业中碰见的问题和个人所得。代码为什么错了?错在哪?该如何才能通过题目的测试点?相信很多同学和…

英语_阅读_AI models_待读

When an artificial intelligence model is created, it doesnt have any knowledge. 当一个人工智能模型被创造出来时,它本身并不具备任何知识。 AI companies like OpenAI teach it different things so that it wo…

11.22组会

11.22组会亚克隆文献讲解 使用好ai是第一重要的 gemini最新版 结合ai搭建工具链 使用可以跨平台共享数据的工具,否则已经落后