1003.Maximum Sequence

简介: Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem ...

Problem Description
Steph is extremely obsessed with “sequence problems” that are usually seen on magazines: Given the sequence 11, 23, 30, 35, what is the next number? Steph always finds them too easy for such a genius like himself until one day Klay comes up with a problem and ask him about it.

Given two integer sequences {ai} and {bi} with the same length n, you are to find the next n numbers of {ai}:an+1a2n. Just like always, there are some restrictions on an+1a2n: for each number ai, you must choose a number bk from {bi}, and it must satisfy ai≤max{ajj|bkj<i}, and any bk can’t be chosen more than once. Apparently, there are a great many possibilities, so you are required to find max{2nn+1ai} modulo 109+7 .

Now Steph finds it too hard to solve the problem, please help him.

Input
The input contains no more than 20 test cases.
For each test case, the first line consists of one integer n. The next line consists of n integers representing {ai}. And the third line consists of n integers representing {bi}.
1≤n≤250000, n≤ai≤1500000, 1≤bi≤n.

Output
For each test case, print the answer on one line: max{2nn+1ai} modulo 109+7。

Sample Input
4
8 11 8 5
3 1 4 2
Sample Output
27
Hint
For the first sample:
1. Choose 2 from {bi}, then a2a4 are available for a5, and you can let a5=a2-2=9;
2. Choose 1 from {bi}, then a1a5 are available for a6, and you can let a6=a2-2=9;

找规律的题目

//AC: 624MS 5220k
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<vector>
#include<queue>
const int mod=1e9+7;
using namespace std;
typedef long long LL;
int a[3000020];
int c[230005];
int b[250005];
int main()
{
    int n;
    int t=0;
    while(scanf("%d",&n)!=EOF){
        LL ans=0,sum=0;
        t++;
        if(t>20)
            break;
        for(int i=1;i<=n;i++)
            scanf("%d",&a[i]);
        for(int i=1;i<=n;i++)
            scanf("%d",&b[i]);
        sort(b+1,b+n+1);
        for(int i=n;i>0;i--){
            if(a[i]-i>=ans)
                ans=a[i]-i;
            c[i]=ans;
        }
        int max=-1;
        for(int i=1;i<=n;i++){
            if(c[b[i]]>max)
                a[n+i]=c[b[i]];
            else
                a[n+i]=max;
            if(a[n+i]-n-i>max)
                max=a[n+i]-n-i;
            sum+=a[n+i];
            if(sum>mod)
                sum%=mod;
        }
        printf("%lld\n",sum);
    }
    return 0;
}
AI 代码解读
目录
打赏
0
0
0
0
1
分享
相关文章
JDBC Statement:执行 SQL 语句的重要接口
在Java应用程序中,与数据库进行交互是一项常见的任务。为了执行数据库操作,我们需要使用JDBC(Java Database Connectivity)来建立与数据库的连接并执行SQL语句。Statement接口是JDBC中的一个重要接口,它用于执行SQL语句并与数据库进行交互。本文将详细介绍Statement接口的使用,包括如何创建Statement对象、执行SQL语句、处理结果等内容。
449 0
go语言中安装数据库驱动
【11月更文挑战第1天】
156 5
Web2py框架下的神秘力量:如何轻松集成第三方API,让你的应用不再孤单!
【8月更文挑战第31天】在开发现代Web应用时,常需集成第三方服务如支付网关、数据存储等。本文将指导你使用Web2py框架无缝接入第三方API。通过实例演示从注册获取API密钥、创建控制器、发送HTTP请求到处理响应的全过程。利用`requests`库与Web2py的内置功能,轻松实现API交互。文章详细介绍了如何编写RESTful控制器,处理API请求及响应,确保数据安全传输。通过本教程,你将学会如何高效整合第三方服务,拓展应用功能。欢迎留言交流心得与建议。
155 1
Mac上运行windows软件-GPTK
Mac上运行windows软件-GPTK
434 1
fastadmin编辑方法
fastadmin编辑方法
167 0
ICLR 2024:首个从互联网视频中学习通用图像匹配器的框架
【2月更文挑战第16天】ICLR 2024:首个从互联网视频中学习通用图像匹配器的框架
204 1
ICLR 2024:首个从互联网视频中学习通用图像匹配器的框架
SpringBoot与Dubbo整合的几种方式
SpringBoot与Dubbo整合的几种方式
302 2
期望最大化(EM)算法:从理论到实战全解析
期望最大化(EM)算法:从理论到实战全解析
473 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问