题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=4747
题目大意:
给n个数,求所有区间内没有出现的最小非负整数和。
解题思路:
首先感谢大神博客:http://www.cnblogs.com/xin-hua/p/3325154.html可以解释的太少了。
我再解释一遍。
首先要明白,以i结束的所有区间的值的和记为f[i]肯定不超过以i+1结束的所有区间的值的和记为f[i+1]。
所以可以根据f[i]间接推出f[i+1],记第i个数为sa[i],显然只用考虑大于等于sa[i]的数j对f[i]=f[i-1]+?的影响,。如果j出现在1~i-1区间中,比较j最晚出现的位置与覆盖完全的1~j-1的最小位置的较小位置k,那么区间j的前一次出现的位置到k位置这个区间内所有点到i位置的值都+1.
这样逐次累加,直到不影响为止。
代码:
#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#inc