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

相关文章:

  • 实用指南:超越CNN和Transformer!Mamba结合多模态统领图像任务!
  • Docker镜像建立【MSSQL2022】
  • 闪回咒 | NOIP 2025 游记
  • 灰度发布
  • 【刷题笔记】AT 经典 90 题
  • CF1758E Tick, Tock
  • 深入解析:SciPy傅里叶变换与信号处理教程:数学原理与Python实现
  • CentOS Stream 9编译安装Nginx 1.28 - Leone
  • SQL核心语言详解:DQL、DML、DDL、DCL从入门到实践! - 实践
  • Ubuntu安装JDK与Maven和IntelliJ IDEA - 详解
  • Ubuntu安装JDK与Maven和IntelliJ IDEA - 详解
  • JavaWeb03-Vue
  • 【完结】Weblogic中间件应用服务器
  • 调整包含特定文本的单元格所在的行高
  • javabean和pojo的区别
  • 一次十分折腾的系统迁移:BCD损坏(0xc000000f), 0xc0000255, 0xc000000e以及解决办法
  • 2025微信小店代运营/电商优质服务商推荐榜:健安道领衔,三大实力机构助力商家全域增长
  • 知识树
  • 2025昆山/太仓/苏州/常熟/上海/农村自建房推荐榜 巨德翔建筑领衔 三家实力公司赋能乡村宜居生活
  • 深入解析:ST-Raptor:无需微调,准确率超越 GPT-4o 的半结构化表格问答新范式
  • 2025苏州自建房/阳光房/封阳台/瑞纳斯/海达胶条/高端/推拉/无缝焊接/瑞纳斯五金/隔热/系统门窗品质推荐榜:昆山巨德翔门窗领衔,3 家靠谱厂家守护舒适居住空间
  • 树上拓扑序个数小记
  • 2025修护/去屑/香氛/控油蓬松/洗发水推荐榜:玛丝兰领衔,三款品牌解锁高效洗护,温和适配多发质
  • 2023最新Win10/Win11运行罪恶都市解决方案
  • Typecho Joe 使用第三方插件开启文章侧边导肮目录 - AutocJS
  • 2025废气处理/废气治理/环保/污水/分子筛/除臭设备推荐榜:深城环保五星领跑,3 家企业以技术适配解锁多元异味治理场景
  • 使用 Docker 搭建 Typecho 个人博客
  • P6954 [NEERC 2017] Connections 题解
  • 高级程序语言设计个人作业第四次
  • 什么是 Feed 流?