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

P9785 [ROIR 2020] 对常规的斗争 (Day1) 题解

题目传送门

思路

我们不难发现,当区间中没有重复的点很好求,但如果中间部分产生重复的点,他们所产生的贡献会减少。

正着推不好推,那就反着来。

我们可以考虑计算当区间长度确定时,每个区间内每个元素是否出现过。

我们可以发现,当我们把区间内的相同元素单独拎出来(下文称为 \(i\)),如果存在一个区间在他们中间,那这个区间的内肯定不包含 \(i\) 这个元素,所以,我们只需把这几个不包含 \(i\) 元素的区间的长度减一就可以了。

但如果所有的区间长度都去减,时间复杂度会很高,这提醒我们可以考虑差分来记录,后面再做一次后缀和即可统计当前位置会比下一个位置减少的数量

为什么会是这样?

我们可以考虑统计一遍过后,当前位置 \(k\) 仅代表第 \(k\) 位的位置会相较于第 \(k+1\) 位所统计的值大多少。
如果想要统计答案,再进行一次后缀和即可。

Code

#include <bits/stdc++.h>
#define pll pair<ll,ll>
#define pld pair<ld,ld>
typedef long long ll;
typedef long double ld;
typedef int praise_long_long;
namespace io {using namespace std;inline ll read() {char x=getchar();ll ans=0,f=1;while(x<'0'||x>'9') {if(x=='-') {f*=(-1);}x=getchar();}while(x>='0'&&x<='9') {ans*=10;ans+=(x-'0');x=getchar();}return ans*f;}inline void print(ll x) {if(x<0) {putchar('-');x=-x;}if(x>=10) {print(x/10);putchar(x%10+'0');}else {putchar(x+'0');}}
}
using namespace io;
const ll N=2e5+5,mod=1e9+7,inf=2e18;
const ld eps=1e-6;
ll n,a[N],b[N],ans[N],cnt,vis[N],lt[N],num[N];
bool bis[N];
inline void solve() {n=read();for(ll i=1;i<=n;i++) {b[i]=a[i]=read();}sort(b+1,b+1+n);ll m=unique(b+1,b+1+n)-b-1;for(ll i=1;i<=n;i++) {a[i]=lower_bound(b+1,b+1+m,a[i])-b;}for(ll i=1;i<=n;i++) {lt[i]=vis[a[i]];vis[a[i]]=i;ans[i-lt[i]-1]++;if(!bis[a[i]]) {num[++cnt]=a[i];bis[a[i]]=1;}}for(ll i=1;i<=cnt;i++) {ans[n-vis[num[i]]]++;}for(ll i=n;i>=1;i--) {ans[i]+=ans[i+1];}for(ll i=n;i>=1;i--) {ans[i]+=ans[i+1];}for(ll i=1;i<=n;i++) {print(cnt*(n-i+1)-ans[i]);putchar(' ');}
}
praise_long_long main() {
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);ll T=1;
//	T=read();while(T--) {solve();}return 0;
}
/**/
http://www.rkmt.cn/news/43273.html

相关文章:

  • 深入解析:SciPy傅里叶变换与信号处理教程:数学原理与Python实现
  • CentOS Stream 9编译安装Nginx 1.28 - Leone
  • JavaWeb03-Vue
  • 调整包含特定文本的单元格所在的行高
  • 一次十分折腾的系统迁移:BCD损坏(0xc000000f), 0xc0000255, 0xc000000e以及解决办法
  • 2025昆山/太仓/苏州/常熟/上海/农村自建房推荐榜 巨德翔建筑领衔 三家实力公司赋能乡村宜居生活
  • 深入解析:ST-Raptor:无需微调,准确率超越 GPT-4o 的半结构化表格问答新范式
  • 树上拓扑序个数小记
  • 2023最新Win10/Win11运行罪恶都市解决方案
  • 2025废气处理/废气治理/环保/污水/分子筛/除臭设备推荐榜:深城环保五星领跑,3 家企业以技术适配解锁多元异味治理场景
  • P6954 [NEERC 2017] Connections 题解
  • CF1463E Plan of Lectures
  • 2025年防水补漏企业TOP5:漏水维修、防水翻新、漏水检测
  • ansible + docker compose, RustFS MNMD 架构的一键部署之道
  • 从iPhone转移到itel手机的联系人转移指南 - 实践
  • QT正在复兴?兰亭妙微带你看懂工业软件设计的新风口
  • 英语_阅读_Predictions_待读
  • NIFI 使用HTTP 作为数据源接收数据
  • P5610 解题报告
  • Ai元人文随想:守护时光的印记
  • 第三十六篇
  • R语言实现多组样本两两t检验的完整教程
  • CSP-S2023游记
  • 2025苏州驾驶证培训推荐榜:摩托车驾驶证培训、A2驾驶证培训、大车A1驾驶证培训、大车B2驾驶证培训,省心学车选这些
  • 现代Linux网络命令简介
  • 众所周知,高中课内物理需要解微分方程
  • 让 Agentic AI 落地到“最后一公里”,GitHub Universe 25 新品解码
  • SSM面试题学习 - 详解
  • Spring容器的心脏:深度解析refresh()手段(上)
  • #深度学习基础:神经网络基础与PyTorch - 实践