Mex-hdu4747(DP)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=4747
题目大意:给一个含有n个数的序列 ns[1~n],定义函数 mex(l,r)为区间 [l,r] 中未出现的最小的非负整数,求序列ns所有区间的 mex 和。
Sample Input
3
0 1 3
5
1 0 2 0 1
0
Sample Output
5
24
思路详见博客:https://blog.csdn.net/qq1965610770/article/details/80041940
#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
#include<cstring>
#define ll long long
using namespace std;
int ns[]; // 序列
int pos[]; // pos[i] 表示现阶段 i 在序列 ns 中出现的最后一个位置
int full[]; // 现在遍历到了 i ,full[j] 表示已经覆盖0~j的区间[x,i] 中 x 的最大值
int main()
{
int n;
while(~scanf("%d",&n) && n)
{
int i,j;
for(i=;i<=n;i++)
scanf("%d",&ns[i]);
memset(pos,,sizeof(pos));
memset(full,,sizeof(full));
int last;
ll tt=,ans=;
for(i=;i<=n;i++)
{
if(ns[i] < n) //对长度为n的序列无影响
{
last = pos[ns[i]]; //数 ns[i] 前一次出现的最后位置
pos[ns[i]] = i; //更新 ns[i] 最后的位置
for(j=ns[i];j<n;j++) //遍历会产生影响的数字
{
if(j) full[j] = min(full[j-],pos[j]); //更新full[j] 为 full[j-1] 与 pos[i] 中较小(左)的位置
else full[j] = i; //如果是 0 ,则更新 full[0] 为现在这个 ns[i]=0 的位置i
if(full[j] > last)
tt += full[j]-last; //累加对last之前的位置无影响
else
break;
}
}
ans += tt;
}
printf("%lld\n",ans);
}
return ;
}
Mex-hdu4747(DP)的更多相关文章
- LightOJ 1033 Generating Palindromes(dp)
LightOJ 1033 Generating Palindromes(dp) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...
- lightOJ 1047 Neighbor House (DP)
lightOJ 1047 Neighbor House (DP) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87730# ...
- UVA11125 - Arrange Some Marbles(dp)
UVA11125 - Arrange Some Marbles(dp) option=com_onlinejudge&Itemid=8&category=24&page=sho ...
- 【POJ 3071】 Football(DP)
[POJ 3071] Football(DP) Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4350 Accepted ...
- 初探动态规划(DP)
学习qzz的命名,来写一篇关于动态规划(dp)的入门博客. 动态规划应该算是一个入门oier的坑,动态规划的抽象即神奇之处,让很多萌新 萌比. 写这篇博客的目标,就是想要用一些容易理解的方式,讲解入门 ...
- Tour(dp)
Tour(dp) 给定平面上n(n<=1000)个点的坐标(按照x递增的顺序),各点x坐标不同,且均为正整数.请设计一条路线,从最左边的点出发,走到最右边的点后再返回,要求除了最左点和最右点之外 ...
- 2017百度之星资格赛 1003:度度熊与邪恶大魔王(DP)
.navbar-nav > li.active > a { background-image: none; background-color: #058; } .navbar-invers ...
- Leetcode之动态规划(DP)专题-详解983. 最低票价(Minimum Cost For Tickets)
Leetcode之动态规划(DP)专题-983. 最低票价(Minimum Cost For Tickets) 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行.在接下来的一年里,你要旅行的 ...
- 最长公共子序列长度(dp)
/// 求两个字符串的最大公共子序列长度,最长公共子序列则并不要求连续,但要求前后顺序(dp) #include <bits/stdc++.h> using namespace std; ...
- Leetcode之动态规划(DP)专题-647. 回文子串(Palindromic Substrings)
Leetcode之动态规划(DP)专题-647. 回文子串(Palindromic Substrings) 给定一个字符串,你的任务是计算这个字符串中有多少个回文子串. 具有不同开始位置或结束位置的子 ...
随机推荐
- vuex——做简单的购物车功能
购物车组件 <template> <div> <h1>vuex-shopCart</h1> <div class="shop-listb ...
- js-DOM事件
var EventUtil = { addHandler:function(elm,type,handler){//添加事件 if(elm.addEventListener){ elm.addEven ...
- js-循环中判断两次点击是否是同一元素
$(elm).click(function(){ if($(this).attr('num')){ console.log("同一个元素") }else{ for(let i=0; ...
- maven install 报错 No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
1.控制台打印信息 [INFO] Scanning for projects... [INFO] [INFO] ---------------------< org.cqupt.mauger:R ...
- 《JavaWeb从入门到精通》(明日科技,清华大学出版社)
<JavaWeb从入门到精通>(明日科技,清华大学出版社)
- 【JDK】JDK模块化(1)-为什么要模块化
Java9发布已经有一年了,跟Java8相比,从目录对比就看得出来差别相当大. 实际上Java9最大的变化就是JDK模块化(Modular). 那么,模块化的目的是什么呢? 官方的说法是: 之前版本的 ...
- poj2836 状态压缩dp
自己的做法是枚举i,j作为顶点的矩形,然后再更新状态S,但是这种做法是错误的 正解是先把所有矩形对求出来,然后枚举状态S,每个处理每个状态时再枚举已经求出的矩形对,用旧状态更新新状态 #include ...
- Linux基础二:初识linux命令
一.UNIX和Linux操作系统概述 1.UNIX是什么 1)UNIX的定义: UNIX是一个计算机操作系统,一个用来协调.管理和控制计算机硬件和软件资源的控制程序. 2)UNIX操作系统的特点:多用 ...
- 浏览器URL中 encodeURIComponent()加密和decodeURIComponent()解码
encodeURIComponent()加密 定义和用法 encodeURIComponent() 函数可把字符串作为 URI 组件进行编码. 语法 encodeURIComponent(URIstr ...
- spring cloud Hystrix监控面板Hystrix Dashboard和Turbine
我们提到断路器是根据一段时间窗内的请求情况来判断并操作断路器的打开和关闭状态的.而这些请求情况的指标信息都是HystrixCommand和HystrixObservableCommand实例在执行过程 ...