题目描述

可怜有一个长度为 n 的正整数序列 Ai,其中相同的正整数代表着相同的颜色。

现在可怜觉得这个序列太长了,于是她决定选择一些颜色把这些颜色的所有位置都删去。

删除颜色 i 可以定义为把所有满足 Aj = i 的位置 j 都从序列中删去。

然而有些时候删去之后,整个序列变成了好几段,可怜不喜欢这样,于是她想要知道有多少种删去颜色的方案使得最后剩下来的序列非空且连续。

例如颜色序列 {1, 2, 3, 4, 5},删除颜色 3 后序列变成了 {1, 2} 和 {4, 5} 两段,不满足条件。而删除颜色 1 后序列变成了 {2, 3, 4, 5},满足条件。

两个方案不同当且仅当至少存在一个颜色 i 只在其中一个方案中被删去。

输入格式

第一行输入一个整数 T 表示数据组数。每组数据第一行输入一个整数 n 表示数列长度。第二行输入 n 个整数描述颜色序列。

输出格式

对于每组数据输出一个整数表示答案。


给每个颜色rand()一个值,使得所有相同颜色之和为0

维护前缀和,用map找左边出现过的一样的值,即可以相减为0的值

#include<map>
#include<ctime>
#include<cstdlib>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define ll long long
const int N=3e5+10;
inline ll read(ll x=0){
char c=getchar();
while(c<'0'||c>'9')c=getchar();
while('0'<=c&&c<='9'){ x=(x<<3)+(x<<1)+c-'0'; c=getchar(); }
return x;
}
#define Rand() (((ll)rand())<<1)-RAND_MAX
ll n,a[N],Max[N],sum[N];
map<ll,int>vis;
signed main(){
srand(time(0));
register int i;
register ll op,qz,ans;
for(int T=read();T;T--){
n=read();
for(i=1;i<=n;i++)a[i]=read(),Max[a[i]]=i;
qz=0,ans=0; vis[qz]=1;
for(i=1;i<=n;i++){
op= (Max[a[i]]^i) ? Rand() : -sum[a[i]];
sum[a[i]]+=op; qz+=op;
ans+=vis[qz]; vis[qz]++;
}
printf("%lld\n",ans);
vis.clear();
memset(Max,0,sizeof(Max));
memset(sum,0,sizeof(sum));
}
return 0;
}
}

最新文章

  1. 08-FPGA状态机设计实例——小梅哥FPGA设计思想与验证方法视频教程配套文档
  2. Visual Studio 2010配置Opencv2.4.9
  3. Sqlserver中存储过程,触发器,自定义函数
  4. 一张思维导图说明jQuery的AJAX请求机制
  5. ArrayList的实现原理--转
  6. JQuery easyui (2)Droppable(放置)组件
  7. dotnet Core 调用HTTP接口,系统大量CLOSE_WAIT连接问题的分析,尚未解决。
  8. C#获取文件夹下的所有文件的文件名(转载)
  9. 如何使用wepy和 vant-weapp开发小程序
  10. Python3 与 C# 网络编程之~ 网络基础篇
  11. sed中支持变量的处理方法
  12. Odoo进销存(采购、销售、仓库)入门教程 - 下
  13. 利用c#+jquery+echarts生成统计报表(附源代码)
  14. Python 死循环和嵌套循环
  15. 3D游戏与计算机图形学中的数学方法-点线面
  16. 07python之字符串的常用方法
  17. pthread调度策略,优先级和竞争范围
  18. BZOJ1048:[HAOI2007]分割矩阵(记忆化搜索DP)
  19. Java技术学习路线图
  20. python&#39;s thirteenth day for me 迭代器 生成器

热门文章

  1. 「动态规划」-数位dp专题
  2. php 下载图片并打包成Zip格式压缩包
  3. 使用Samba服务实现Linux与Windows系统之间的文件共享
  4. Win7无法远程桌面
  5. 阿里云开源 image-syncer 工具,容器镜像迁移同步的终极利器
  6. git Lab ssh方式拉取代码失败
  7. java编程思想第四版第八章习题
  8. 2018年航空概论课后作业(PS:部分答案不正确, 综合得分:83.6)
  9. nyoj 62-笨小熊(以对应数组中的ASC位 + 1)
  10. 开始逆向objc基础准备(一)简单认识一下arm32,以及与x86汇编指令类比