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;
}
目录
相关文章
|
存储 Prometheus 监控
高可用Prometheus集群
高可用Prometheus集群
1632 0
|
分布式计算 并行计算 Java
如何选择适合的Python并行计算库
如何选择适合的Python并行计算库
253 3
【AD速成】半小时入门AltiumDesigner之绘制原理图(四)
【AD速成】半小时入门AltiumDesigner之绘制原理图(四)
5132 3
|
存储 消息中间件 前端开发
Web2py框架下的神秘力量:如何轻松集成第三方API,让你的应用不再孤单!
【8月更文挑战第31天】在开发现代Web应用时,常需集成第三方服务如支付网关、数据存储等。本文将指导你使用Web2py框架无缝接入第三方API。通过实例演示从注册获取API密钥、创建控制器、发送HTTP请求到处理响应的全过程。利用`requests`库与Web2py的内置功能,轻松实现API交互。文章详细介绍了如何编写RESTful控制器,处理API请求及响应,确保数据安全传输。通过本教程,你将学会如何高效整合第三方服务,拓展应用功能。欢迎留言交流心得与建议。
236 1
|
芯片 iOS开发 MacOS
Mac上运行windows软件-GPTK
Mac上运行windows软件-GPTK
587 1
|
人工智能 算法 C++
光学算法——Zernike拟合
光学算法——Zernike拟合
3777 0
|
计算机视觉
ICLR 2024:首个从互联网视频中学习通用图像匹配器的框架
【2月更文挑战第16天】ICLR 2024:首个从互联网视频中学习通用图像匹配器的框架
330 1
ICLR 2024:首个从互联网视频中学习通用图像匹配器的框架
|
Kubernetes 应用服务中间件 网络安全
CentOS7上二进制部署Kubernetes高可用集群(v1.18版本)
CentOS7上二进制部署Kubernetes高可用集群(v1.18版本)
794 0
|
XML Dubbo Java
SpringBoot与Dubbo整合的几种方式
SpringBoot与Dubbo整合的几种方式
581 2
|
数据安全/隐私保护 Windows
全网最新超详细的【Axure】Axure RP 10的下载、安装、中文字体、授权【2023年】
全网最新超详细的【Axure】Axure RP 10的下载、安装、中文字体、授权【2023年】
2148 0
全网最新超详细的【Axure】Axure RP 10的下载、安装、中文字体、授权【2023年】