20260117 省选模拟赛

news/2026/1/17 21:50:45/文章来源:https://www.cnblogs.com/XP3301Pipi/p/19497233

20260117 省选模拟赛

https://htoj.com.cn/cpp/oj/contest/detail?cid=22635323962240

Problem A. 染色

神秘性质。

从小的向大的染色需要考虑后面很多东西,不好做。所以反过来,从大向小做。

假设要将 \(S\) 染为红色,那么 枚举子集 \(T\) 作为蓝色子集的并集。此时 \(T\) 一定是蓝色,\(Z\subseteq S\land Z\not\subseteq T\)\(Z\) 都是红色。\(T\) 构成子问题\(O(3^n)\) dp 即可。

枚举子集太费时间,考虑怎么一次缩一个点\(S\) 内一定有一个 \(x\),使得 \(x\in Z\subseteq S\)\(Z\) 都是红色,否则所有蓝色集合的并就是 \(S\) 了。枚举这个 \(x\),即可 \(O(2^nn)\)

Problem B. 信号过滤

如果只有一个滤波器,考虑维护被屏蔽的集合 \(S\),每次通带扩展时暴力删除,查询时在树状数组上查即可。

有多个滤波器,总势能达到 \(O(nq)\),不能直接做。

根号分治,设阈值 \(B\)。若这个滤波器有 \(>B\) 个操作,那么沿用上面的做法。维护集合时改为 ODT 维护通带,插入新通带时找出新增的位置。此时有 \(O(\frac{nq}{B})\) 次插入,\(O(q)\) 次查询,需要用 \(O(1)-O(\sqrt{n})\) 的分块平衡。

若这个滤波器有 \(\le B\) 次操作,那么 通带连续段不超过 \(B\)。维护通带连续段,每次查询时枚举每个连续段,是个二维偏序的形式。有 \(O(n)\) 次修改,\(O(qB)\) 次查询,需要 \(O(\sqrt{n})-O(1)\) 分块平衡。直接离线所有询问空间炸了,但 不同的连续段总共只有 \(O(q)\),所以扫值域维,维护序列维,只离线这些区间即可。

总复杂度 \(O(n\sqrt{n})\)

int n,Q,m,a[N];
int c[N],K;
int ans[N];namespace Subtask1{set<int> s;int tr[N];vector<int> vec[N];		void Update(int x,int v){for(;x<=n;x+=x&-x) tr[x]+=v;}int Ask(int x){int res=0;for(;x;x-=x&-x) res+=tr[x];return res;}void Solve(){for(int i=1;i<=K;i++) s.emplace_hint(end(s),i);for(int i=1;i<=n;i++) vec[a[i]].push_back(i);while(Q--){int op; read(op);if(op==1){int l,r,k;read(l),read(r),read(k);l=lower_bound(c+1,c+K+1,l)-c;r=upper_bound(c+1,c+K+1,r)-c-1;if(l>r) continue;auto it=s.lower_bound(l);while(it!=s.end()&&*it<=r){for(int p:vec[*it]) Update(p,1);it=s.erase(it);}}else{int l,r,k;read(l),read(r),read(k);printf("%d\n",Ask(r)-Ask(l-1));}}}
}const int B=550,D=M/B;namespace Subtask2{bool out[M];vector<int> vec[M];struct Query{int op,l,r,k,id;bool operator < (const Query& tmp)const{return k<tmp.k||(k==tmp.k&&id<tmp.id);}}qy[M];namespace Small{int L[D+5],R[D+5],bl[M],C,s1[M],s2[D+5];void Update(int x,int v){for(int i=x;i<=R[bl[x]];i++) s1[i]+=v;for(int i=bl[x];i<=C;i++) s2[i]+=v;	}int Ask(int x){return s1[x]+s2[bl[x]-1];}int Ask(int l,int r){return Ask(r)-Ask(l-1);}struct Node{int l,r,v;};vector<Node> q[M];struct Line{int l,r;bool operator < (const Line& tmp)const{return l<tmp.l||(l==tmp.l&&r<tmp.r);}};set<Line> s;map<Line,int> mp;void Add(int l,int r,int t){q[l-1].push_back(Node{mp[{l,r}],t,-1});q[r].push_back(Node{mp[{l,r}],t,1});}void Insert(int l,int r,int t){auto it=s.lower_bound({l,-IINF});if(it!=s.begin()&&prev(it)->r>=l-1){if(prev(it)->r>=r) return;Add(prev(it)->l,prev(it)->r,t-1);l=prev(it)->l;it=s.erase(prev(it));} while(it!=s.end()&&it->r<=r){Add(it->l,it->r,t-1);it=s.erase(it);}if(it!=s.end()&&it->l<=r+1){Add(it->l,it->r,t-1);r=it->r,s.erase(it);}s.insert({l,r}); mp[{l,r}]=t;}void Solve(int ql,int qr){s.clear(),mp.clear();for(int i=ql;i<=qr;i++){if(qy[i].op==2) continue;qy[i].l=lower_bound(c+1,c+K+1,qy[i].l)-c;qy[i].r=upper_bound(c+1,c+K+1,qy[i].r)-c-1;if(qy[i].l>qy[i].r) continue;Insert(qy[i].l,qy[i].r,i);}for(Line i:s) Add(i.l,i.r,qr);}void SolveAll(){for(int i=1;i<=n;i+=B){++C; L[C]=i,R[C]=min(i+B-1,n);for(int j=L[C];j<=R[C];j++) bl[j]=C;}for(int i=1;i<=K;i++){for(int j:vec[i]) Update(j,1);for(Node j:q[i]){for(int k=j.l;k<=j.r;k++)if(qy[k].op==2){ans[qy[k].id]+=j.v*Ask(qy[k].l,qy[k].r);}}}}}namespace Big{struct Line{int l,r;bool operator < (const Line& tmp)const{return l<tmp.l||(l==tmp.l&&r<tmp.r);}};set<Line> s;int L[D+5],R[D+5],bl[M],C,s1[M],s2[M];void Clear(){for(int i=1;i<=n;i++) s1[i]=s2[i]=0;s.clear();}void Build(){for(int i=1;i<=n;i+=B){++C; L[C]=i,R[C]=min(n,i+B-1);for(int j=L[C];j<=R[C];j++) bl[j]=C;}}void Update(int x,int v){s1[x]+=v;s2[bl[x]]+=v;}int Ask(int l,int r){int p=bl[l],q=bl[r],res=0;if(p==q){for(int i=l;i<=r;i++) res+=s1[i];return res;}for(int i=l;i<=R[p];i++) res+=s1[i];for(int i=L[q];i<=r;i++) res+=s1[i];for(int i=p+1;i<=q-1;i++) res+=s2[i];return res;}void Perform(int l,int r){for(int i=l;i<=r;i++){for(int j:vec[i])Update(j,1);}}void Insert(int l,int r){auto it=s.lower_bound({l,-IINF});int lst=l;if(it!=s.begin()&&prev(it)->r>=l-1){if(prev(it)->r>=r) return;l=prev(it)->l;lst=prev(it)->r+1;it=s.erase(prev(it));}while(it!=s.end()&&it->r<=r){Perform(lst,it->l-1);lst=it->r+1; it=s.erase(it);}if(it!=s.end()&&it->l<=r+1){Perform(lst,it->l-1);r=it->r; s.erase(it);}else Perform(lst,r);s.insert({l,r});}void Solve(int ql,int qr){Clear();for(int i=ql;i<=qr;i++){if(qy[i].op==1){qy[i].l=lower_bound(c+1,c+K+1,qy[i].l)-c;qy[i].r=upper_bound(c+1,c+K+1,qy[i].r)-c-1;if(qy[i].l<=qy[i].r) Insert(qy[i].l,qy[i].r);}else ans[qy[i].id]=Ask(qy[i].l,qy[i].r);}}}void Solve(){for(int i=1;i<=n;i++) vec[a[i]].push_back(i);for(int i=1;i<=Q;i++){read(qy[i].op),read(qy[i].l),read(qy[i].r),read(qy[i].k);qy[i].id=i;if(qy[i].op==2) out[i]=1;}sort(qy+1,qy+Q+1);Big::Build();for(int i=1;i<=Q;){int j=i;while(j<Q&&qy[i].k==qy[j+1].k) ++j;if(j-i+1<=B) Small::Solve(i,j);else Big::Solve(i,j);i=j+1;}Small::SolveAll();for(int i=1;i<=Q;i++)if(out[i]) printf("%d\n",ans[i]);}
}signed main(){FileIO();read(n),read(Q),read(m);for(int i=1;i<=n;i++) read(a[i]);for(int i=1;i<=n;i++) c[i]=a[i];sort(c+1,c+n+1);K=unique(c+1,c+n+1)-c-1;for(int i=1;i<=n;i++){a[i]=lower_bound(c+1,c+K+1,a[i])-c;}if(m==1) Subtask1::Solve();else Subtask2::Solve();return 0;
}

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

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

相关文章

dbVisitor 用 6 万行测试代码守护的可靠性!

在软件领域&#xff0c;大家选择一个框架或者工具时&#xff0c;除了关注功能特性的丰富程度&#xff0c;最核心的考量往往是&#xff1a;它够不够稳&#xff1f; dbVisitor 作为一个独立、纯 Java 编写的数据库访问工具&#xff0c;深知 “信任源于可靠” 的道理。为了向用户提…

知网AIGC检测率太高?这5款降AI工具亲测有效

知网AIGC检测率太高&#xff1f;这5款降AI工具亲测有效 TL;DR&#xff1a;知网AIGC检测系统2025年12月升级后&#xff0c;检测逻辑从文本重合度转向语义连贯性分析&#xff0c;传统同义词替换彻底失效。亲测5款降AI工具后&#xff0c;推荐嘎嘎降AI&#xff08;达标率99.26%&…

详细介绍:基于STM32的智慧物联网系统板

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

贵金属精密合金是什么?性能特点、行业应用及优质供应商推荐 - 非研科技

贵金属精密合金是由金、银、铂、钯等贵金属为基体,搭配其他金属元素调配而成的特种合金材料,凭借超高导电性、耐腐蚀性、耐高温性以及精准的物理化学性能,成为航空航天、电子信息、医疗器械、精密仪器等高端制造领域…

研究生论文降AI率,导师推荐的3款工具

研究生论文降AI率&#xff0c;导师推荐的3款工具 TL;DR&#xff1a;研究生论文AI率太高会影响评审和答辩。导师推荐嘎嘎降AI&#xff08;达标率99.26%&#xff0c;4.8元/千字&#xff09;、比话降AI&#xff08;知网专精&#xff0c;8元/千字&#xff09;处理。硬改效果差&…

课程论文被查出AI率太高?这几款工具能救急

课程论文被查出AI率太高&#xff1f;这几款工具能救急 TL;DR&#xff1a;课程论文AI率要求通常比毕业论文宽松&#xff08;30%以下&#xff09;&#xff0c;用嘎嘎降AI&#xff08;4.8元/千字&#xff09;或率零&#xff08;3.2元/千字&#xff09;处理即可。预算有限选率零&am…

豆包、Kimi生成的内容如何通过AIGC检测?工具推荐

豆包、Kimi生成的内容如何通过AIGC检测&#xff1f;工具推荐 TL;DR&#xff1a;用豆包、Kimi等通用AI自己降AI率是行不通的&#xff08;测试显示AI率反而会越改越高&#xff09;。想让这些AI生成的内容通过AIGC检测&#xff0c;需要用专业降AI工具&#xff1a;嘎嘎降AI性价比高…

【 Java八股文面试 | RabbitMQ篇 】

什么是消息队列&#xff1f;消息队列&#xff08;MQ&#xff09;是实现系统间异步通信的核心中间件&#xff0c;核心逻辑为&#xff1a;数据以「消息」形式存入队列&#xff0c;遵循先进先出原则&#xff0c;由消息生产者发送、消费者异步拉取处理&#xff0c;核心达成系统解耦…

论文AI率从90%降到5%,我用了这个方法

论文AI率从90%降到5%&#xff0c;我用了这个方法 TL;DR&#xff1a;AI率90%是极高的情况&#xff0c;但专业工具可以处理。我用嘎嘎降AI把90%的AI率降到了5%以下&#xff0c;花了不到50块钱&#xff0c;全程20分钟。手动改根本不可能&#xff0c;直接用工具是唯一出路。 90%的A…

2026必备!9个AI论文网站,助本科生轻松搞定毕业论文!

2026必备&#xff01;9个AI论文网站&#xff0c;助本科生轻松搞定毕业论文&#xff01; AI 工具如何助力论文写作&#xff1f; 在当前的学术环境中&#xff0c;越来越多的本科生开始借助 AI 工具来提升论文写作效率。尤其是在面对论文查重、内容优化和结构搭建等挑战时&#xf…

救命神器2026 AI论文工具TOP9:本科生毕业论文写作全攻略

救命神器2026 AI论文工具TOP9&#xff1a;本科生毕业论文写作全攻略 2026年AI论文工具测评&#xff1a;为何要关注这些工具&#xff1f; 随着人工智能技术的不断进步&#xff0c;越来越多的本科生开始依赖AI写作工具来提升毕业论文的撰写效率与质量。然而&#xff0c;面对市场上…

使用 SSE 单向推送实现 实用的系统通知功能

使用 SSE 单向推送实现 实用的系统通知功能2026-01-17 21:36 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: blo…

安全工具2025

一、逆向IDA 二、WEB jsfind

我的算法修炼之路--7—— 手撕多重背包、贪心+差分,DFS,从数学建模到路径DP

&#x1f497;博主介绍&#xff1a;计算机专业的一枚大学生 来自重庆 燃于AC之乐✌专注于C技术栈&#xff0c;算法&#xff0c;竞赛领域&#xff0c;技术学习和项目实战✌&#x1f497; &#x1f497;根据博主的学习进度更新&#xff08;可能不及时&#xff09; &#x1f497;后…

VBench-2.0: Advancing Video Generation Benchmark Suite for Intrinsic Faithfulness

一、 核心问题&#xff1a;从“看起来真”到“本质上真” https://arxiv.org/pdf/2503.21755 当前视频生成模型&#xff08;如 Sora, Kling&#xff09;在 “表层保真度” 上已取得惊人进步&#xff1a; 画面美观&#xff1a;单帧图像质量高。 运动平滑&#xff1a;帧间过渡…

计及调度经济性的光热电站储热容量配置方法Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#…

2026 年 1 月权威 GEO 培训公司 TOP5

2026年1月权威GEO培训公司TOP5一、引言在当今数字化营销的大环境下&#xff0c;GEO优化的重要性日益凸显。企业都希望通过有效的GEO优化来提升在生成式引擎中的可见性&#xff0c;从而获取更多的流量和转化。然而&#xff0c;面对市场上众多的GEO培训机构&#xff0c;企业如何选…

基于混合整数规划的微网储能电池容量规划Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#…

GESP认证C++编程真题解析 | 202506 五级

​欢迎大家订阅我的专栏:算法题解:C++与Python实现! 本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战! 专栏特色 1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的…