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

AT_indeednow_2015_qualb_4 高橋くんと数列 题解报告

题目传送门

题意

给你一个长度为 \(N\) 序列 \(A\),保证每一个数 \(A_i \le C\),要求对于从 \(1\)\(C\) 中的每一个数都在序列中寻找闭区间,使得区间中至少有一个数等于它,输出从 \(1\)\(C\) 中的每一个数的满足条件的所有闭区间。

解题思路

看到这道题,不知道各位有没有跟我一样想到排列组合,因为暴搜肯定超时。

首先,当你想到排列组合时,你已经成功了三分之一。

其次,可以想到,将所有相同的数的下标放到一个数组 \(v\) 里,然后假设当前要搜索的数字为 \(X\),那么对于在数组 \(v\) 中每一个与 \(X\) 相等的数 \(Y\),让左端点 \(l\) 小于等于当前 \(Y\) 的下标 \(i\),右端点 \(r\) 大于等于当前 \(Y\) 的下标 \(i\),即保证当前的 \(A_i = X\) 且位于区间中,一共有 \(i \times (n-i)\) 个区间满足我们的条件。

哦,你问我为什么是大于等于与小于等于,因为我们选的是闭区间,也就是可以选 \([i,i]\),自然是大于等于与小于等于了。

如果看不懂文字描述,可以结合看看下面这幅图。

紧接着,你会发现,你找出的区间数大于实际区间数。这是因为有重复的区间被选择,如下图,以图片左端绿色区间为所选区间左端点,右端绿色区间为所选区间右端点的区间被重复选择。

那么如何去重就是我们要解决的下一个问题。

于是,我想到我们不能对于所有左端点 \(l \le i\) 都纳入答案,但是对于所有右端点 \(i \le r\) 是可以被都选择的。所以我们的左端点只需在当前数组位置到前一个与 \(X\) 值相等的数的数组位置的区间中寻找。

注意,左端点不与前一个与 \(X\) 值相等的数的数组位置相等,即设前一个与 \(X\) 值相等的数的数组位置为 \(i\),则 \(i < l\)

看不懂文字可以结合下图理解。

这样选择就可以避免重复选择区间。

注:以上所有图片中的不同颜色的箭头以及黑色竖线代表值相同但下标不同的数组中的数。

代码实现

如果前面思路结合图片还看不懂,可以理解一下代码。

本题代码如下:

#include<bits/stdc++.h>
using namespace std;
unsigned long long n,a[100005],c;
vector<unsigned long long>v[100005];
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n>>c;for(int i=1;i<=n;++i){cin>>a[i];v[a[i]].push_back(i);}for(int i=1;i<=c;++i){unsigned long long ans=0;for(int j=0;j<v[i].size();++j){unsigned long long u=v[i][j];if(j!=0)ans+=(unsigned long long )((n-u+1)*(u-v[i][j-1]));else ans+=(unsigned long long )((n-u+1)*u);} cout<<ans<<"\n";}return 0;
}

警钟长鸣

本题需开 long long, 当然,本人习惯开了 unsigned long long

注意特判数组中第一个与 \(X\) 值相同的数。

注意数组大小。

最后感谢您的留步与观看,希望本篇题解能够帮到您。

http://www.jsqmd.com/news/31081/

相关文章:

  • TOON 协议与 AIDotNet.Toon 实践指南
  • 杂题选做-4
  • 2025 年 11 月江阴商标注册服务商权威推荐榜:专业代理机构实力解析与高效申请指南
  • 2025 年 11 月江阴商标注册服务商权威推荐榜:专业代理机构与高效申请流程口碑之选
  • 详细介绍:安全框架 SpringSecurity 入门(超详细,IDEA2024)
  • 洛谷 P1780 染色的立方体 题解报告
  • P11.常见的transforms(一)
  • 2025年11月上海装修公司榜单:松江千州装饰真实口碑深度解析
  • 2025年11月上海装修公司排行榜:从设计到交付的完整评价指南
  • 2025年11月上海装修公司排名榜:十强对比看谁更值
  • Web开发的坑
  • 5.吴恩达机器学习—神经网络的基础使用
  • 前端三剑客——javascript内置对象与其方法
  • 2025 年 11 月 PCD 铣刀厂家推荐排行榜,金刚石铣刀,聚晶金刚石铣刀,超硬刀具,高精度 PCD 铣刀公司推荐
  • 2025 年 11 月平面铣刀厂家推荐排行榜,钨钢平面铣刀,合金平面铣刀,数控平面铣刀,高精度平面铣刀公司推荐
  • 2025 年 11 月侧铣刀厂家推荐排行榜,钨钢侧铣刀,不锈钢侧铣刀,铝合金侧铣刀,高硬度侧铣刀公司推荐
  • 2025年11月适合初中生的学习机品牌排行:市场热销榜全维度评价
  • 《算法闯关指南:优选算法--滑动窗口》--15.串联所有单词的子串,16.最小覆盖子串 - 实践
  • 2025年11月适合初中生的学习机品牌评测:五款主流机型横向对比
  • 2025年11月适合初中生的学习机品牌推荐:权威榜单对比与口碑评测
  • FT232RL FT232R国产替代芯片GP232RNL GP232RL高稳定性USB转串口桥接芯片
  • Oracle OCP认证考试题目详解082系列第1题 - 实践
  • H3C AC+AP本地转发二层组网
  • jmeter中java.net.ConnectException: Connection refused: connect - 实践
  • 疯了还是天才?(上):一门基于Vim,号称“AI无法取代”的新语言
  • 2025年11月教育资源好的学习机品牌推荐:权威榜单对比评测
  • 小记
  • 2025年11月教育资源好的学习机品牌推荐:口碑榜五强深度评测
  • 2025年11月教育资源好的学习机品牌推荐:榜单对比五强教育资源含金量
  • 【pytest】使用 marker 向 fixture 传递数据 - 指南