Codeforces Round #531 (Div. 3) E. Monotonic Renumeration(思维+差分数组)
时间:2022-06-17
本文章向大家介绍Codeforces Round #531 (Div. 3) E. Monotonic Renumeration(思维+差分数组),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目链接:http://codeforces.com/contest/1102/problem/E
题意是给了n个数的a数组,要构造b数组,b数组需要满足以下三个要求,b[1] = 0,如果a[i] = a[j],那么b[i] = b[j](a中相等的数,在b中对应的位置的数也相等),b[i] = b[i+1]或者b[i] + 1 = b[i+1],求出可以构造出多少种b数组。
首先我们要知道假如a[1] = 15,a[20] = 15,因为b[1] = 0,所以b[20] = 0,又因为b数组是一个递增的数列,所以在b数组中从1到20就一定都是0,所以我们就只需要去找区间,因为b[i+1]要么等于b[i]要么等于b[i]+1,所以如果我们找到了一个区间的左端点与之前的所有区间都没有交集,那么此时的方案数是乘以2的,所以这道题就是找有多少个独立的区间,每一个独立的区间的方案数就是2。我的方法是用差分数组来实现区间覆盖,对于每一个数用map来做标记。
AC代码:
#include <bits/stdc++.h>
#define maxn 200005
#define ll long long
const int mod = 998244353;
using namespace std;
int n;
ll pre[maxn];
int main()
{
map<ll,int> ma;
scanf("%d",&n);
for(int i=1;i<=n;i++){
ll xx;
scanf("%lld",&xx);
if(ma[xx] == 0) ma[xx] = i;
else pre[ma[xx] + 1] ++, pre[i + 1] --;
}
ll ans = 1;
for(int i=2;i<=n;i++){
pre[i] += pre[i-1];
if(pre[i] == 0) ans = (ans * 2 + mod) % mod;
}
printf("%lldn", ans);
return 0;
}
- Hadoop: MapReduce2多个job串行处理
- UE4新手引导之下载和安装虚幻4游戏引擎
- mac 下卸载mysql的方法
- ZooKeeper 笔记(1) 安装部署及hello world
- mybatis 使用经验小结
- ZooKeeper 笔记(2) 监听数据变化
- 使用C# 和Consul进行分布式系统协调
- 设置 java -jar 的进程显示名称
- 爱浪携手豆瓣内容、腾讯共同发布AI语音耳机
- Win.ini和注册表的读取写入
- ZooKeeper 笔记(4) 实战应用之【消除单点故障】
- 64位centos 下编译 hadoop 2.6.0 源码
- Python基础原理:FP-growth算法的构建
- MFC中如何画带实心箭头的直线
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Spring 中的依赖注入(DI),你都知道多少?
- Docker配置1台Nginx+3台Tomcat做负载均衡
- Centos7.x+Docker部署RabbitMQ
- LeetCode(1)-找出数组中重复的数字
- LeetCode(面试题:二维数组中的查找)
- 面试题05-替换空格(LeeCode)
- 解决Mybatis当实体类中的属性名和表中的字段名不一致的问题
- 图书管理系统(一)项目框架结构搭建
- Mybatis中模糊查询like语句的使用方法
- win10暴力查看wifi密码
- 再也不怕面试官问java中的goto关键字了?
- 死磕Java之分析short类型
- 死磕Java之Java数据类型的来龙去脉
- 请不要再使用判断进行参数校验了
- 检测假新闻:比较不同的分类方法的准确率