【链接】 我是链接,点我呀:)

【题意】

题意

【题解】

会发现如果a[i]=a[j]
那么b[i]~b[j]都是相同的,等于b[i]
而b[i]等于b[i-1]+1或者b[i]
有两种可能
所以对于两个相同的a[i]之间的区间。
只要在区间开始的时候乘个2就行。
如果不在任何一起相等的区间里面的话也乘个2就行,因为每个数字都有两种可能。
这道题只要记录下=a[i]的最大下标就好.
这样 在遇到一个a[i]的时候,就获取 =a[i]的最大下标j。
显然i~j是这个区间的最大范围。
只要是这个范围的b[i],显然都是相同的。
看代码可能更容易懂。

【代码】

#include <bits/stdc++.h>
#define ll long long
using namespace std; const int N = 2e5;
const ll MOD = 998244353; int n;
int a[N+10];
map<int,int> dic;
ll ans = 1; int main(){
ios::sync_with_stdio(0),cin.tie(0);
cin >> n;
for (int i = 1;i <= n;i++) {
cin >> a[i];
dic[a[i]] = max(dic[a[i]],i);
}
int ma = dic[a[1]];
for (int i = 2;i <= n;i++){
if (i>ma){//不在任何一个a[i]相等的区间(最长)里面
ans = ans*2%MOD;
}
ma = max(ma,dic[a[i]]);
}
cout<<ans<<endl;
return 0;
}

最新文章

  1. 关于提高webview里下载apk安装包成功率的研究
  2. 指针与const
  3. 2013 US Open Award Ceremoney
  4. [ExtJS5学习笔记]第22 Extjs5正在使用beforeLabelTpl添加所需的配置选项标注星号标记
  5. JS+PHP实现用户输入数字后取得最大的值并显示为第几个
  6. Android初级教程理论知识(第五章页面跳转和数据传递)
  7. Java【第七篇】面向对象之类设计
  8. Python:Day04
  9. linux 学习笔记五 查看文件篇章
  10. 用conda创建python虚拟环境
  11. Activiti 5.18启动流程到完成所有任务之间的数据库变化(转)
  12. Flash:利用Bitmapdata,ColorTransform,DrawPath,制造绚丽效果
  13. jenkins关闭和重启
  14. 推荐几个不错的h5游戏引擎
  15. docker attach 和 docker exec
  16. Farm Irrigation ZOJ 2412(DFS连通图)
  17. dataframe初始化
  18. laravel验证码
  19. springboot成神之——log4j2的使用
  20. MVC学习一:MVC简单流程

热门文章

  1. JQ 获取Table的td 值
  2. json和Jsonp 使用总结(1)
  3. 如何在Ubuntu上安装Wine 2.6
  4. kafka的server.properties配置文件参考示范(图文详解)(多种方式)
  5. NHibernate学习笔记(3)-实体反射到数据库
  6. LN : leetcode 217 Contains Duplicate
  7. CF811C Vladik and Memorable Trip
  8. Angular——自定义过滤器
  9. Java 基础入门随笔(5) JavaSE版——函数重载
  10. echarts之我用