当前位置: 首页 > news >正文

20260528 紫题训练

P3180 [HAOI2016] 地图

对原仙人掌建出圆方树,从市中心到 \(x\) 的路全被堵死意味着圆方树上 \(x\) 到它父亲的边断开。

这说明每次询问中能到达的点是 \(x\) 的子树中的圆点,通过 dfs 序将子树转为区间查询。

可以将询问离线下来,使用莫队解决:

按出现次数的奇偶分别维护值域分块,块内维护一个块中出现次数的为奇/偶的数的个数。

移动指针时可以 \(\mathcal O(1)\) 维护,查询时需要 \(\mathcal O(\sqrt V)\) 扫一遍。

总时间复杂度 \(\mathcal O(n(\sqrt n+\sqrt V))\)

#include<bits/stdc++.h>
#define N 200005
#define V 1000005
using namespace std;
constexpr int B=2000;
vector<int>stk,G[N],s[N];
int tot,dfn[N],low[N],siz[N];
int n,m,q,idx,a[N],v[N],ord[N],ans[N];
struct Query{int op,x,l,r,id;}b[N];
void tarjan(int x){dfn[x]=low[x]=++tot;stk.emplace_back(x);for(auto p:G[x]) if(!dfn[p]){tarjan(p),low[x]=min(low[x],low[p]);if(low[p]>=dfn[x]){a[++idx]=1e6+1;s[x].emplace_back(idx);s[idx].emplace_back(x);for(int v=0;v^p;)v=stk.back(),stk.pop_back(),s[v].emplace_back(idx),s[idx].emplace_back(v);}}else low[x]=min(low[x],dfn[p]);
}
int dfs(int x,int fa){dfn[x]=++idx,ord[idx]=x;for(auto p:s[x])if(p^fa) siz[x]+=dfs(p,x);return ++siz[x];
}
class Blocks{private:int c[V],sum[V/B+5][2];public:void add(int x){sum[x/B][c[x]&1]-=!!c[x];sum[x/B][++c[x]&1]++;}void del(int x){sum[x/B][c[x]--&1]--;sum[x/B][c[x]&1]+=!!c[x];}int query(int x,bool op){int res=0,bx=x/B;for(int i=0;i<bx;i++) res+=sum[i][op];for(int i=bx*B;i<=x;i++) res+=c[i]&&c[i]&1^op^1;return res;}
}T;
int main(){scanf("%d%d",&n,&m),idx=n;for(int i=1;i<=n;i++) scanf("%d",a+i);for(int i=1,u,v;i<=m;i++)scanf("%d%d",&u,&v),G[u].emplace_back(v),G[v].emplace_back(u);tarjan(1),idx=0;dfs(1,0),scanf("%d",&q);for(int i=1,x;i<=q;i++)scanf("%d%d%d",&b[i].op,&x,&b[i].x),b[i].id=i,b[i].l=dfn[x],b[i].r=dfn[x]+siz[x]-1;sort(b+1,b+q+1,[&](Query x,Query y){if(x.l/B^y.l/B) return x.l/B<y.l/B;return x.l/B&1?x.r>y.r:x.r<y.r;});for(int i=1;i<=idx;i++) v[i]=a[ord[i]];for(int i=1,l=1,r=0;i<=q;i++){auto t=b[i];for(;l>t.l;T.add(v[--l]));for(;r<t.r;T.add(v[++r]));for(;l<t.l;T.del(v[l++]));for(;r>t.r;T.del(v[r--]));ans[t.id]=T.query(t.x,t.op);}for(int i=1;i<=q;i++) printf("%d\n",ans[i]);return 0;
}
http://www.zskr.cn/news/1416301.html

相关文章:

  • 老酒收藏变现难?京城亚南酒业上门收酒,打通收藏变现“最后一公里” - 深鉴新闻
  • 【跨平台】跨平台开发实战:从原生到多端
  • 【重大革新】Claude Code v2.1.152:代码评审引入自动修复,新增动态技能重载与消息脱敏 Hook
  • 6款实用降AI率平台 改写实力出众 - 降AI小能手
  • 【功能演进】Claude Code v2.1.153:交互逻辑重大反转,后台 Agent 体验大修
  • 基于单片机自行车里程表设计(有完整资料)
  • 2026应届生降AIGC网站盘点: 学术打磨+逻辑优化哪家强? - 降AI小能手
  • 昌吉外贸网站定制开发,WaiMaoYa 外贸鸭全程托管式服务,建站、运营无需费心 - 外贸营销驿站
  • 足球训练器材源头工厂怎么选?15年赛事级厂家茵速体育深度解析 - 中媒介
  • SakuraLLM推理引擎深度解析:技术选型与部署实战指南
  • 基于ESP32与Blynk的智能温室监控系统:从传感器到云端自动化
  • 更新完 OpenClaw , web UI 打不开了。报错: 协议不匹配提供的 Control UI 与正在运行的 Gateway 对支持的连接协议不一致。
  • 从零打造蓝牙控制板:基于Atmega328P的无线开关系统全流程设计
  • 阿克苏外贸网站开发找哪家?WaiMaoYa 外贸鸭一对一专属运维,售后全程保驾护航 - 外贸营销驿站
  • 告别手动切换!用ControlMyMonitor+WinHotKey,一键搞定双电脑共享显示器
  • 深入探索LeagueAkari:基于LCU API的英雄联盟客户端工具包全面解析
  • 当你为一段 5 秒 AI 视频支付 39 元时,是否想过背后的商业逻辑?
  • 佛山外贸建站哪家专业?WaiMaoYa 外贸鸭谷歌SEO原生架构,自然流量稳步上涨 - 外贸营销驿站
  • 市面上有哪些是真正性价比高的降AIGC网站(轻松压低AI生成疑似率)
  • Java协同Python与C++在TVA中的实践
  • 日照外贸网站定制开发,WaiMaoYa 外贸鸭实景展示产能与实力,精准打动海外大客户 - 外贸营销驿站
  • Ets1:巨噬细胞Mek-Erk通路的“信号分选器”——介导抗炎极化并改善胰岛素抵抗
  • 河池外贸网站建设公司,WaiMaoYa 外贸鸭一对一专属运维,售后全程保驾护航 - 外贸营销驿站
  • WarcraftHelper:让经典魔兽争霸3在现代电脑上重获新生的终极解决方案
  • 别再让远处贴图糊成马赛克了!Unity/UE4中Mipmap的保姆级设置与性能调优指南
  • 终极指南:如何用YOLOv8构建高性能实时视觉辅助系统
  • 2026年4月市场上比较好的绕线机公司推荐,嵌线扩张一体机/线嵌一体机/下线机/大型最终整型机,绕线机品牌哪家好 - 品牌推荐师
  • 通过 curl 命令直接测试 Taotoken 接口连通性与模型响应
  • 告别繁琐账务,金蝶AI星辰助力中小企业轻松实现业财税一体化
  • 2026年5月淮安黄金回收哪家好?5家实测+避坑全攻略 - 生活测评君