CF1223F. Stack Exterminable Arrays

Solution

奇怪的套路增加了。

大概就是[l,r][l,r][l,r]能匹配完可以转化为[1,l−1][1,l-1][1,l−1]匹配后的状态和[1,r][1,r][1,r]匹配后的状态相同,因此hashhashhash判断即可。

Code

#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <string>
#include <cstring>
#include <ctime>
#include <cassert>
#include <string.h>
//#include <unordered_set>
//#include <unordered_map>
//#include <bits/stdc++.h>#define MP(A,B) make_pair(A,B)
#define PB(A) push_back(A)
#define SIZE(A) ((int)A.size())
#define LEN(A) ((int)A.length())
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define fi first
#define se secondusing namespace std;template<typename T>inline bool upmin(T &x,T y) { return y<x?x=y,1:0; }
template<typename T>inline bool upmax(T &x,T y) { return x<y?x=y,1:0; }typedef long long ll;
typedef unsigned long long ull;
typedef long double lod;
typedef pair<int,int> PR;
typedef vector<int> VI;const lod eps=1e-11;
const lod pi=acos(-1);
const int oo=1<<30;
const ll loo=1ll<<62;
const int mods=1e9+9;
const int MAXN=1000005;
const int INF=0x3f3f3f3f;//1061109567
/*--------------------------------------------------------------------*/
inline int read()
{int f=1,x=0; char c=getchar();while (c<'0'||c>'9') { if (c=='-') f=-1; c=getchar(); }while (c>='0'&&c<='9') { x=(x<<3)+(x<<1)+(c^48); c=getchar(); }return x*f;
}
ull h[MAXN];
map<ull,int> Map;
int a[MAXN],f[MAXN],stk[MAXN],SZ=1e9+7;
signed main()
{int Case=read();while (Case--){ll ans=0;int n=read(),top=0;for (int i=1;i<=n;i++) a[i]=read(),f[i]=0;Map.clear(),Map[0]=n+1,f[n+1]=0;for (int i=n;i>=1;i--){if (top&&stk[top]==a[i]) top--;else stk[++top]=a[i],h[top]=h[top-1]*SZ+a[i];if (Map[h[top]]) f[i]=f[Map[h[top]]]+1;Map[h[top]]=i;ans+=f[i];}printf("%lld\n",ans);}return 0;
}

CF1223F. Stack Exterminable Arrays相关推荐

  1. JAVA 判断简单密码算法_十道简单算法题二【Java实现】

    前言 清明不小心就拖了两天没更了-- 这是十道算法题的第二篇了-上一篇回顾:十道简单算法题 最近在回顾以前使用C写过的数据结构和算法的东西,发现自己的算法和数据结构是真的薄弱,现在用Java改写一下, ...

  2. 我看过的Java方面的好文章

    本文不定期更新,最后更新于2019-5-21 Java 并行化:你的高并发大杀器 Java国王:我来告诉你什么才是真正的封装! Eclipse使用(三)-- 使用Eclipse创建简单的java程序H ...

  3. Numpy核心语法和代码整理汇总!

    点击上方"AI遇见机器学习",选择"星标"公众号重磅干货,第一时间送达 来自 | 腾讯云 云+社区 Numpy汇总 Numpy是一个用python实现的科学计算 ...

  4. java9系列(八)Multi-Release JAR Files

    为什么80%的码农都做不了架构师?>>>    序 本文主要研究下JEP 238: Multi-Release JAR Files multi-release jar (MR JAR ...

  5. sv队列和动态数组的区别_systemverilog学习(4)动态数组

    本节主要内容:动态数组,队列,联合数组,数组基本操作,结构体类型,枚举类型 一:动态数组 1:基础 在run-time才知道元素个数,在compile-time不知道 可以在仿真的时候再确定元素个数 ...

  6. 【Python】简约而不简单|值得收藏的Numpy小抄表(含主要语法、代码)

    Numpy是一个用python实现的科学计算的扩展程序库,包括: 1.一个强大的N维数组对象Array: 2.比较成熟的(广播)函数库: 3.用于整合C/C++和Fortran代码的工具包: 4.实用 ...

  7. 简约而不简单|值得收藏的Numpy小抄表(含主要语法、代码)

    Numpy是一个用python实现的科学计算的扩展程序库,包括: 1.一个强大的N维数组对象Array: 2.比较成熟的(广播)函数库: 3.用于整合C/C++和Fortran代码的工具包: 4.实用 ...

  8. 傅里叶变换表_Numpy库小抄表!主要语法和代码都在这里啦

    用户2769421 | 作者 腾讯云 云+社区 | 来源 Numpy是一个用python实现的科学计算的扩展程序库,包括: 一个强大的N维数组对象Array: 比较成熟的(广播)函数库: 用于整合C/ ...

  9. python算法和数据结构_Python中的数据结构和算法

    python算法和数据结构 To 至 Leonardo da Vinci 达芬奇(Leonardo da Vinci) 介绍 (Introduction) The purpose of this ar ...

最新文章

  1. 阿里三面让我现场改造Spring框架,明天带他去爬山!
  2. f2py支持在fortran语言中调用其他Fortran函数或C代码或Python代码
  3. bzoj2007: [Noi2010]海拔
  4. ssh(Spring+Spring mvc+hibernate)——EmpDaoImpl.java
  5. Deeplabv3+-训练自己的数据集
  6. 关于软件开发的个人体会
  7. java内存分配与回收策略、动态对象年龄判断、空间分配担保
  8. 《爱的博弈》(让婚姻持久保鲜的人际关系圣经)主要内容及大纲 免费下载
  9. 易飞erp postgre mysql_pgadmin 执行sql
  10. 利用mail 发送163 邮件
  11. 存储过程 debug
  12. 开始我的WebWork之旅
  13. mac隐藏桌面图标快捷键_如何在Mac OS X桌面上隐藏图标
  14. python-司机和售票员
  15. (PDC2008)Anders Hejlsberg: The Future of C#
  16. 求职路艰辛,深圳天瑞地安助力求职人对工作感到无忧
  17. 如何免费下载道客巴巴文档
  18. 哪家的微信三级分销系统功能比较好
  19. PC端开源的推流软件(OBS Studio)
  20. 学校计算机信息固定资产编号,学校固定资产分类和编号(仅供参考).pdf

热门文章

  1. 安卓手机运行python程序的软件-安卓手机定时运行python脚本
  2. 抽走超大桌布之后保持桌面物体不掉,需要多快的速度?
  3. 这几部经典纪录片,竟然还有人没看过?
  4. 为啥饮料瓶大都是圆的,牛奶盒却是方的?
  5. 你们要的印度布线,这是一种极端的牛X
  6. android获取自适应高度,Android中oncreate中获得控件高度或宽度的实现方法
  7. mac apache2 php,Mac OSX 之 PHP开发环境Apache2配置
  8. python +appium实现原理_python_appium使用原理
  9. mysql如何和qt连接使用_Qt5学习:连接MySQL数据库
  10. c语言整数四则运算表达式的输出格式控制,Educoder CC++基本输入输出