题解

依次判断每个位置是否能有两个取值,即\(a_i = a_{i - 1}\)或\(a_i=a_{i - 1} + 1\)。判断条件:没有数与它相同,或者它不落在两个相同的数之间。

代码

int main()
{cin >> n;Rep(i, 1, n) {cin >> a[i];q[a[i]] = i;}int ma = 0;LL ans = 1, cnt = -1;Rep(i, 1, n) {ma = max(ma, q[a[i]]);if (ma == i) {cnt++;if (cnt) ans = (ans * 2) % mod;}}cout << ans << endl;return 0;
}
void pushDown(int root) {add[lson] += add[root];add[rson] += add[root];add[root] = 0;
}void Update(int l, int r, int root, int L, int R, int x) {if (l > R || r < L) return;if (L <= l && r <= R) {add[root] += x;return;}if (add[root]) pushDown(root);int mid = (l + r) >> 1;Update(l, mid, lson, L, R, x);Update(mid + 1, r, rson, L, R, x);
}int Find(int l, int r, int root, int pos) {if (l == r) return add[root];if (add[root]) pushDown(root);int mid = (l + r) >> 1;int ans = 0;if (pos <= mid) ans = Find(l, mid, lson, pos);else ans = Find(mid + 1, r, rson, pos);return ans;
}int main()
{cin >> n;Rep(i, 1, n) cin >> a[i];Rep(i, 1, n) q[a[i]] = max(q[a[i]], i);Rep(i, 1, n) if (!use[a[i]]) {use[a[i]] = 1;Update(1, n, 1, i, q[a[i]], 1);}vis[a[1]] = 1;LL ans = 1;Rep(i, 2, n) if (!vis[a[i]]) {vis[a[i]] = 1;if (Find(1, n, 1, i) == 1) ans = (ans * 2) % mod;}cout << ans << endl;return 0;
}

转载于:https://www.cnblogs.com/zgglj-com/p/10249317.html

Monotonic Renumeration- codeforce相关推荐

  1. 补题Codeforces 1102E. Monotonic Renumeration

    这个题还是不太懂,下面附上的是大佬的题解(https://zhanghuimeng.github.io/post/codeforces-1102e-monotonic-renumeration/) E ...

  2. Monotonic Renumeration

    https://codeforces.com/contest/1102/problem/E C++版本一 题解:二分 先从前往后找到每个数最先出现的位置,然后从后往前找到最后出现的位置 然后从头开始遍 ...

  3. [转][Timer学习]wall time和monotonic time

    在一些系统调用中需要指定时间是用CLOCK_MONOTONIC还是CLOCK_REALTIME,以前总是搞不太清楚它们之间的差别,现在终于有所理解了. CLOCK_MONOTONIC是monotoni ...

  4. Codeforce 水题报告(2)

    又水了一发Codeforce ,这次继续发发题解顺便给自己PKUSC攒攒人品吧 CodeForces 438C:The Child and Polygon: 描述:给出一个多边形,求三角剖分的方案数( ...

  5. 单调队列 Monotonic Queue / 单调栈 Monotonic Stack

    2018-11-16 22:45:48 一.单调队列 Monotone Queue 239. Sliding Window Maximum 问题描述: 问题求解: 本题是一个经典的可以使用双端队列或者 ...

  6. codeforce 1311 C. Perform the Combo 前缀和

    You want to perform the combo on your opponent in one popular fighting game. The combo is the string ...

  7. 2019牛客多校Monotonic Matrix

    Monotonic Matrix 题意: 问有多少个n * m的矩阵A满足一下情况:答案mod 1e9+7 矩阵A的所有元素∈{0,1,2} Ai,j<=Ai+1,jA_{i,j}<=A_ ...

  8. C#LeetCode刷题之#896-单调数列(Monotonic Array)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3760 访问. 如果数组是单调递增或单调递减的,那么它是单调的. ...

  9. 2017.5.28 codeforce h题思考记录

    并没有报codeforce  但有人想让我帮他看题,于是就做了 大概意思就是,给你200个空,让你在200个空中放字母,   再自己设计一个串,要求自己设计的这个串在这放着200个字母的串中作为子串出 ...

  10. 【CodeForce】559B Equivalent Strings 等效字符串

    [CodeForce]559B Equivalent Strings 等效字符串 B. Equivalent Strings time limit per test2 seconds memory l ...

最新文章

  1. 配置静态路由使用出站接口和下一跳IP的差别
  2. Ubuntu环境搭建系列—JavaEE篇
  3. c语言图像函数怎么用,请教 怎么才能用C输出一个函数的图像?大侠 帮帮忙啊...
  4. centos mysql无法启动 sock_linux 下mysql无法启动 mysql.sock
  5. OFCMS 项目开源 java cms 系统 内容管理系统
  6. 高通第一财季营收107亿美元 净利润超过30亿美元
  7. 转 PHP函数---$_Get()和$_Post()的用法
  8. iOS 自定义底部tabbar加号按钮实现方法
  9. 教你如何用Python轻轻松松操作Excel、Word、CSV,一文就够了,赶紧码住!!!
  10. 15 使用计算机应遵守行业道德规范,信息会考答案~没考的看下!
  11. matlab子函数中使用全局变量的使用方法
  12. SSD原理解读-从入门到精通
  13. 数字化背景下的经济社会发展的新特征 新趋势
  14. 学习“基于深度学习的故障诊断”开源
  15. java closed_有关Java中isClosed()和isConnected()的一些误解
  16. 个人NAS家庭服务器解决方案概况
  17. (纪中)2223. 母鸡下蛋(hen)
  18. PX4源码分析__传感器数据“sensor_combined”的来龙去脉
  19. kafka中topic、partition、broker、consumerGroup、consumer之间的关系、区别及存在意义
  20. 微信小程序抓包方法汇总

热门文章

  1. 修改linux文件权限命令:chmod超级详细讲解
  2. movcms能安装PHP吗,LzCMS-博客版 手动安装方法
  3. 树展示 移动端_企业快速搭建移动BI轻应用,怎么少得了这款BI工具
  4. 条带装箱问题 Strip packing problem是什么
  5. 数据库学习笔记3-隔离级别 Read Uncommitted
  6. 解决button多次重复点击
  7. java反射 javabean_Java反射之模仿JavaBean接收表单参数.
  8. oracle日期基本数据,oracle日期时间函数总结
  9. 单片机4层电梯设计c语言,详解基于单片机的四层电梯控制系统的设计与实现,Proteus仿真和程序代码...
  10. GSON简单实用及常用方法(附 .jar 地址)