hdu-6047-Maximum Sequence
来源:互联网 发布:apache php 7.1 配置 编辑:程序博客网 时间:2024/06/10 06:19
题目链接在这里
题意分析:题目给了两行数 a[ ],和 b[ ],a[ i ]=max{ a[j]-j | b[k ]<=j<i } 根据b数组限定的范围来选出一个最大的 a 最为a 序列的下一个数。 要求 求出 a[ n+1 ]~~a[ 2*n ] 之间的所有数的和 对 1e9+7 取 模 。
解题分析:
用样例来分析
a: 8 11 8 5
a[i]-i: 7 9 5 1
b:3 1 4 2
先将b排序得到 b: 1 2 3 4
那么取第一个b[0]=1 那么取到9
a:8 11 8 5 9
a[i]-i: 7 9 5 1 4
b[1]=2 还是取到 9
a: 8 11 8 5 9 9
a[i]-i: 7 9 5 1 4 3
后面继续这样取最终得到的是
a: 8 11 8 5 9 9 5 4 多出来的就是 27
很明显可以看出 b序列要从小往大取才能达到最优。
如果每次都用 双重for循环来找max的话,肯定会超时的 , 这里我用了一个 maxa数组来将 最后一个值到 a[ i ] d的最大值存在 maxa[ i ] 中,这样每次去最大 的a时 就是 a[ b [ k ] ];
代码:
#include<cstdio>#include<algorithm>#include<cstring>#define mod 1000000007using namespace std;long long int a[300005],b[250005];long long int maxa[300005];int main(){ int n; while(~scanf("%d",&n)){ memset(maxa,0,sizeof(maxa)); for(int i=1;i<=n;i++){ scanf("%lld",&a[i]); a[i]=a[i]-i; } for(int i=n;i>0;i--) maxa[i]=max(maxa[i+1],a[i]); for(int i=1;i<=n;i++) scanf("%lld",&b[i]); sort(b+1,b+n+1); long long ans=0; ans+=maxa[b[1]]; ans%=mod; long long aa=maxa[b[1]]-n-1; for(int i=2;i<=n;i++){ maxa[b[i]]=max(maxa[b[i]],aa); ans+=maxa[b[i]]; ans%=mod; aa=max(aa,maxa[b[i]]-n-i); } printf("%lld\n",ans); } return 0;}
阅读全文
2 0
- [HDU]-6047 Maximum Sequence
- hdu 6047 Maximum Sequence
- [HDU 6047]Maximum Sequence
- HDU 6047 Maximum Sequence
- hdu 6047 Maximum Sequence
- HDU 6047 Maximum Sequence
- hdu 6047 Maximum Sequence
- HDU 6047 Maximum Sequence
- hdu--6047--Maximum Sequence
- hdu 6047 Maximum Sequence
- HDU 6047 Maximum Sequence
- hdu 6047 Maximum Sequence
- HDU 6047 Maximum Sequence
- hdu-6047-Maximum Sequence
- HDU 6047 Maximum Sequence
- hdu 6047 Maximum Sequence
- HDU 6047 Maximum Sequence
- Maximum Sequence HDU 6047
- the first one.
- Java集合框架之_HashSet特性
- uva12627 Erratic Expansion
- 配置Hadoop中的HDFS 问题:java.net.BindException: Problem binding to [bi java.net.BindException: Cannot assi
- CSU 1972: 大梵天的恩赐 <递推,找规律>
- hdu-6047-Maximum Sequence
- 交换排序--冒泡
- 最近在写一款斗地主游戏,写了个癞子匹配顺子的算法
- 服务器端程序员应该必备技能
- iOS 打包ipa如何瘦身
- POJ 3984 迷宫问题
- 【Linux深入】Linux开机过程详解
- e温热温热
- Dishonest Sellers