P8313 [COCI 2021/2022 #4] Izbori

news/2025/12/7 12:23:12/文章来源:https://www.cnblogs.com/zloi-hhq/p/19317925

洛谷

首先观察部分分,对于前两组部分分,可以直接暴力枚举左右端点。

对于第三组部分分,从前缀和的角度去思考,然后可以发现假设一个数字为正数,一个数字为负数,开桶进行统计,只要两种人数不打平即可。

代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[200005],tmp[200005],cnt,t[400005],ans;
void solve(){int tmp=0;for(int i=1;i<=n;i++){t[tmp+n+1]++;if(a[i]==2)tmp++;else tmp--;ans+=i-t[tmp+n+1];}cout<<ans;
}
signed main(){cin>>n;for(int i=1;i<=n;i++)scanf("%lld",&a[i]);for(int i=1;i<=n;i++)tmp[i]=a[i];sort(tmp+1,tmp+n+1);cnt=unique(tmp+1,tmp+n+1)-tmp-1;for(int i=1;i<=n;i++)a[i]=lower_bound(tmp+1,tmp+cnt+1,a[i])-tmp;if(cnt<=2){solve();return 0;}for(int i=1;i<=n;i++){for(int j=1;j<=cnt;j++)t[j]=0;int ma=0;for(int j=i;j<=n;j++){t[a[j]]++;ma=max(ma,t[a[j]]);if(ma>(j-i+1)/2)ans++;}}cout<<ans;return 0;
}

考虑怎么解决最后的问题。

观察前面的部分分做法,我们会很想枚举所有的种类进行处理,但是这样的种类实在是太多了。

我们可以考虑使用分治。

我们利用分治来解决,但是这样枚举的数字数量依然很大,但是我们还可以发现,实际上有效的数字并不多。

由于左端点位置确定在右边,左端点位置确定在左边部分,所以我们可以想到对于每一个有效点,仅在此点到中点时还满足条件,那么这个点可行。

可行的点有多少个?实际上最多只有 \(\log(n)\) 个,因为每个点要到达中点最少需要数量达到总数量一半以上,最后相当于多个二的幂次相加。

那么我们只需要在分治中预处理,预处理完以后再用前缀和进行统计即可。

代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[200005],ans,tmp[200005],cnt,t[200005],vis[200005],pre[400005];
vector<int> v;
void solve2(int x,int l,int r){int mid=l+r>>1;int tmp=n+1,mi=n+1,ma=n+1;pre[n+1]=1;for(int i=l;i<=mid-1;i++){if(a[i]==x)tmp++;else tmp--;pre[tmp]++;mi=min(mi,tmp),ma=max(ma,tmp);}if(a[mid]==x)tmp++;else tmp--;for(int i=mi+1;i<=ma;i++)pre[i]+=pre[i-1];for(int i=mid+1;i<=r;i++){if(a[i]==x)tmp++;else tmp--;if(tmp>ma)ans+=pre[ma];else if(tmp>=mi)ans+=pre[tmp-1];}for(int i=mi;i<=ma;i++)pre[i]=0;}
void solve(int l,int r){if(l==r)return void(ans++);int mid=l+r>>1;solve(l,mid),solve(mid+1,r);for(int i=l;i<=mid;i++){t[a[i]]++;if(t[a[i]]*2>mid-i+1&&!vis[a[i]])v.push_back(a[i]),vis[a[i]]=1;}for(int i=l;i<=mid;i++)t[a[i]]=0;for(int i=mid+1;i<=r;i++){t[a[i]]++;if(t[a[i]]*2>i-mid&&!vis[a[i]])v.push_back(a[i]),vis[a[i]]=1;}for(int i=mid+1;i<=r;i++)t[a[i]]=0;for(int i=l;i<=r;i++)vis[a[i]]=0;for(int i:v)solve2(i,l,r);v.clear();
}
signed main(){cin>>n;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=n;i++)tmp[i]=a[i];sort(tmp+1,tmp+n+1);cnt=unique(tmp+1,tmp+n+1)-tmp-1;for(int i=1;i<=n;i++)a[i]=lower_bound(tmp+1,tmp+cnt+1,a[i])-tmp;solve(1,n);cout<<ans;return 0;
}

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

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

相关文章

汽车智能座舱软件、技术、分类介绍

汽车智能座舱软件介绍 一、OSI模型1、(CANH = 3.5V)- (CANL = 1.5V)= 2V 低电压,逻辑零,显性信号 2、(CANH = 2.5V)- (CANL = 2.5V)= 0V 高电压,逻辑一,隐形信号二、技术架构三、关键技术汽车智能座舱软…

2025 最新智能制造服务商 / 厂家 TOP5 评测!科技赋能 + 全周期服务权威推荐榜单发布,引领智慧工厂建设新生态

随着工业4.0进程的加速,智能制造已成为推动制造业转型升级的核心引擎。市场对专业智能制造解决方案的需求日益增长,对服务商的技术实力、行业经验与全周期服务能力提出了更高要求。本榜单基于技术创新力、行业适配性…

『NAS』在群晖部署图表绘制工具-Draw.io

点赞 + 关注 + 收藏 = 学会了整理了一个NAS小专栏,有兴趣的工友可以关注一下 👉 《NAS邪修》Draw.io 是一款免费开源的在线图表绘制工具,支持创建流程图、思维导图、UML 图等多种图表,提供跨平台使用和多格式导出…

CF762E Radio stations

Codeforces 很明显是一道偏序问题,我们先列出满足条件的台之间的关系。 \[\min(r_i,r_j)\ge|x_i-x_j| \]\[|f_i-f_j|\le k \]这看起来好像是两条式子,但是不能直接使用二维偏序解决,因为其中含有取最小值操作,所以…

grep 常用功能

grep 常用功能 检索服务器文件的 panic // 查找文件中包含 panic 的行,并要同时显示上下各 20 行,-A 代表显示匹配行之后的指定行数,-B 代表显示匹配行之前的指定行数。 grep -A 20 -B 20 "panic" daemon…

2025 最新工业自动化服务商 / 厂家 TOP5 评测!科技赋能 + 全周期服务权威榜单发布,引领智慧工厂建设新生态

随着工业4.0时代的深入推进,工业自动化已成为制造企业实现高效、智能、绿色生产的核心驱动力。本榜单基于技术创新能力、行业服务深度、全周期解决方案能力三大维度(德尔智慧新增“资产健康管理”维度),结合行业实…

2025 最新智慧工厂建设服务商/厂家 TOP5 评测!科技赋能+全周期服务权威推荐榜单发布,引领智能制造新生态

随着工业4.0浪潮的深入推进,智慧工厂建设已成为制造企业实现转型升级、提升核心竞争力的关键路径。本榜单基于技术创新力、行业适配性、服务覆盖度及全生命周期管理能力四大维度,结合行业发展趋势与客户实际应用反馈…

why windows is worst

because apple is better. picograph can not see this graph, but poems are similar.

4pcs Launch LTR-05 TPMS Sensor Tool 315MHz 433MHz - Metal/Rubber for European/American Cars

Why TPMS Sensors Matter (and Why Your Current Solution Might Fall Short) Tire Pressure Monitoring Systems (TPMS) are critical for road safety, fuel efficiency, and tire longevity. Accurate, reliable TP…

Get Lifetime Free Launch X431 ADAS Calibration for PAD VII/Pro5/Pro3S+/Pro3/APEX

The ADAS Calibration Challenge: Why Mechanics and Car Owners Need a Reliable Solution ADAS (Advanced Driver Assistance Systems) has become a staple in modern vehicles, enhancing safety with features li…

儿童补钙不盲选!从钙源到配方,儿童钙剂选购全指南

钙是儿童骨骼与牙齿发育的核心营养素,对神经传导、肌肉收缩等生理功能也至关重要。但面对市面上琳琅满目的补钙产品,很多家长难免陷入选择困境。既要考虑钙源的安全性与吸收率,又要兼顾孩子的接受度,选对品牌才能让…

2025年ChatGPT优化排名公司推荐:AI驱动下的SEO新选择

随着ChatGPT等生成式AI技术的爆发,搜索引擎优化领域正经历前所未有的变革,AI语料优化、生成式引擎优化已成为提升排名的核心抓手。在这一趋势下,能够整合GEO生成引擎优化、AI关键词排名优化等技术的服务公司,逐渐成…

【拓补排序 TB_sort】P4017 最大食物链计数

P4017 最大食物链计数 链接此处 题目背景 你知道食物链吗?Delia 生物考试的时候,数食物链条数的题目全都错了,因为她总是重复数了几条或漏掉了几条。于是她来就来求助你,然而你也不会啊!写一个程序来帮帮她吧。 题…

2025年深圳GEO优化公司推荐:AI驱动时代的流量突围伙伴

2025年的深圳,生成式AI技术的爆发式增长正重塑企业流量获取逻辑,当用户在豆包、文心一言等主流AI引擎中检索需求时,品牌能否成为优先推荐的信源,直接决定了市场竞争力。在此背景下,GEO生成式引擎优化(生成式引擎…

2025年11月儿童营养品牌测评指南——选对不踩坑

孩子挑食偏食、身高体重不达标、换季容易生病,这些问题总能牵动家长的心弦。据《中国居民膳食指南》数据显示,我国3-12岁儿童钙缺乏率达58.3%,锌缺乏率34.2%,科学补充营养成为家庭育儿的重要课题。但面对琳琅满目的…

2025年深圳AI搜索排名优化公司推荐

2025年的深圳,AI搜索浪潮已从技术探索迈向商业落地的深水区,GEO优化(生成式引擎优化)与AI搜索排名优化共同构建起品牌流量竞争的新赛道。中国信通院数据显示,今年国内GEO市场规模已突破148亿元,年复合增速达53%,…

【AI大模型技术】2.神经网络 - 教程

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

P3120 [USACO15FEB] Cow Hopscotch G

洛谷 由于需要考虑颜色的问题,所以可以考虑将总方法减去相同颜色的方案数,以此得到本次的结果。 使用前缀和,得到此处的方案总数。 然后就需要考虑如何处理颜色的问题了,由于需要进行区间修改与查询,很容易想到使…

Easysearch 2.0.0 性能测试

Easysearch 2.0.0 正式版性能全面提升:索引、查询及内存管理(GC)等核心性能均获显著优化。概述 Easysearch 2.0.0 正式版带来了显著的性能提升和优化改进。通过与上一个稳定版本 1.15.6 的全面对比测试,我们使用 e…

ABC435

过了三个题之后代码都不想写了,然后直接摆烂到比赛结束,掉大分。 C 竞选最乱搞做法。 对于第 \(i\) 个多米诺骨牌,可以影响到的区间的右端点是 \(a_i=\min\left\{a_i+i-1,n\right\}\)。定义一个 \(p\) 表示目前倒下…