题意:

给定一个序列,问你子区间中不同数字数量,在所有子区间中之和为多少。

题解:

统计每个数字在多少个区间中出现即可。对于每个数字,直接枚举左右端点。

注意去重,因此要记录每个数字上一次出现在哪里,在下一次出现时,从该数字上一次出现为止之后开始枚举左端点。

#include<iostream>
#include<vector>
#define MAXN 100005
#define LL long long
using namespace std;
vector<int> last[MAXN];
LL ans;
int main(){
int n;
scanf("%d",&n);
ans=;
for(int i=;i<=n;i++){
int tmp;
scanf("%d",&tmp);
int l,r;
if(last[tmp].empty()){
l=;r=n;
}else{
l=last[tmp].back()+;r=n;
}
last[tmp].push_back(i);
LL t;
if(i==l)t=r-l+;
else if(l==r)t=;
else t=1LL*(r-i+)*(i-l+);
ans+=t;
// printf("%lld\n",t);
}
printf("%lld\n",ans);
return ;
}

最新文章

  1. maven 本地仓库和远程仓库
  2. 网络爬虫(java)
  3. MySQL高效分页解决方案集(转)
  4. Use Windows Azure AD to create SSO projects
  5. C# WPF 显示图片和视频显示 EmuguCv、AForge.Net测试(续)
  6. 一道program test题目
  7. 将多个.a库合并为一个.a库的方法
  8. 1842-A. Broj
  9. C陷阱与缺陷代码分析之第1章词法陷阱
  10. 60s 经济学探奇
  11. Notes over compiling..
  12. struts2(一) struts2入门
  13. iOS开发之NSOperation &amp; NSOperationQueue
  14. Socket之listen() receive()
  15. [Java]求文件大小并保留两位小数(文件大小是一个长整型数单位是Byte)
  16. Codeforces812B Sagheer, the Hausmeister 2017-06-02 20:47 85人阅读 评论(0) 收藏
  17. python sys.path[0] 的解释
  18. (1)I/O流 (2)线程
  19. cstring、string、wstring、int、char*、tchar、 int、dword等相互转换代码输出测试
  20. Javascript 中正则表达式验证网址

热门文章

  1. 【leetcode】961. N-Repeated Element in Size 2N Array
  2. 【Dart学习】-- Dart之函数声明&amp;&amp;匿名函数&amp;&amp;自执行方法
  3. JavaWeb开发中遇到的错误:org.apache.catalina.core.StandardWrapperValve invoke
  4. bzoj1047题解
  5. 管理员技术(四): 配置NTP网络时间客户端、 创建一个备份包、 配置用户和组账号、配置一个cron任务
  6. Alibaba Cloud Toolkit,你确定不来尝鲜一下?
  7. word中怎样把文档里的中文以及中文字符全选?
  8. Day 22: 软件开发目录设计规范
  9. Selenium3 + Python3自动化测试系列八——警告框处理和下拉框选择
  10. &lt;思维导图&gt;思维导图