当前位置: 首页 > 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.jsqmd.com/news/905009/

相关文章:

  • ResNet-50与其他主流CNN模型对比分析:何时选择哪个模型?终极选择指南
  • 自定义Advisor 20260528
  • 5个关键功能解析:猫抓Cat-Catch如何成为浏览器资源嗅探的终极解决方案
  • Sora 2已悄然上线360°视频API灰度通道——仅开放给Top 0.3%开发者,附申请密钥绕过技巧(限时72小时)
  • 使用Python配合Taotoken快速构建一个多轮对话应用原型
  • 【跨平台】跨平台开发实战:从原生到多端
  • 老酒收藏变现难?京城亚南酒业上门收酒,打通收藏变现“最后一公里” - 深鉴新闻
  • 【重大革新】Claude Code v2.1.152:代码评审引入自动修复,新增动态技能重载与消息脱敏 Hook
  • Qwen3.6-35B-A3B-FP8与Qwen-Agent集成:构建智能代理的完整方案
  • 从银行密集任命首席合规官,看企业合规管理新时代的必修课
  • Hello,world Hello,Git!
  • 基于Arduino与Unity的NFC实体交互游戏系统开发实战
  • 6款实用降AI率平台 改写实力出众 - 降AI小能手
  • SystemVerilog bind用法详解:不止是断言,还能这么玩?
  • 气体涡轮流量计采购必看:国内优质厂家推荐与常见工况选型误区 - 品牌推荐大师
  • 【功能演进】Claude Code v2.1.153:交互逻辑重大反转,后台 Agent 体验大修
  • 为什么你的Gemini MFA仍被绕过?揭秘攻击者利用会话劫持绕过第二因子的2种新型手法
  • 【CGLIB】如何通过 `NamingPolicy` 自定义 CGLIB 生成的代理类的类名?
  • 省心、放心、舒心——京城亚南酒业上门收酒,用服务赢得认可 - 深鉴新闻
  • 8086汇编程序设计_从基础到实战
  • 基于单片机自行车里程表设计(有完整资料)
  • 海口外贸独立站哪家经验足?WaiMaoYa 外贸鸭贸易企业定制站点,深耕全球经销商渠道 - 外贸营销驿站
  • 别再只盯着复现了:从Log4j2漏洞(CVE-2021-44228)看企业级应急响应与修复清单
  • 从Mate桌面到QT应用:深度解析麒麟系统高分辨率适配的‘坑’与‘桥’
  • 2026年5月最新|浙江GEO优化公司推荐,本土优质服务商盘点,帮企业高效选靠谱伙伴 - GEO排行榜
  • 2026应届生降AIGC网站盘点: 学术打磨+逻辑优化哪家强? - 降AI小能手
  • Go语言跨平台网络编程:构建跨平台网络应用
  • 昌吉外贸网站定制开发,WaiMaoYa 外贸鸭全程托管式服务,建站、运营无需费心 - 外贸营销驿站
  • 足球训练器材源头工厂怎么选?15年赛事级厂家茵速体育深度解析 - 中媒介
  • 超越基础网格:A* Pathfinding Project插件中NavMesh与Recast Graph实战对比与选型指南