Maximum Sequence

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total
Submission(s): 1887    Accepted Submission(s): 671

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+1…a2n

. Just like always, there are some restrictions on an+1…a2n

: for each number ai

, you must choose a number bk

from {bi}, and it must satisfy ai

≤max{aj

-j│bk

≤j<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≤a_i≤1500000, 1≤b_i≤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 a_2…a_4 are available for a_5, and you can let a_5=a_2-2=9; 2. Choose 1 from {bi}, then a_1…a_5 are available for a_6, and you can let a_6=a_2-2=9;

 
 
题意:在a数组后面添加n个数, 其中每个数需要满足它是从bk的位置到a数组最后中小于等于
aj-j的值,求所添加的数的和的最大值。
 
分析:样例分析:

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

那么从模拟的这个过程可以发现,只要记录当前位置到n中间的最大值 和更新出来的数中的最大值

进行比较取最大的那个,就是答案啦~

代码:

#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<iostream>
#include<algorithm>

using namespace std;
#define N 300009
#define mod 1000000007
long long a[N], b[N], maxa[N];
int main()
{

int n;

while(scanf("%d", & n) != EOF)
{
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
memset(maxa, 0, sizeof(maxa));

for(int i = 1; i <= n; i++)
{
scanf("%lld", &a[i]);
a[i] = a[i] - i;
}

for(int i = 1; i <= n; i++)
scanf("%lld", &b[i]);

sort(b, b+n+1);

for(int i = n ; i >= 1; i--)
{
maxa[i] = max(maxa[i+1], a[i]);
}

long long ans = 0;

ans += maxa[b[1]];
ans %= mod;

long long t = maxa[b[1]] - n - 1;

for(int i = 2; i <= n; i++)
{
maxa[b[i]] = max(maxa[b[i]], t);

ans += maxa[b[i]];
ans %= mod;

t = max(t, maxa[b[i]] - n - i);

}
printf("%lld\n", ans);
}
}

多校二 1003Maximum Sequence 模拟的更多相关文章

  1. 2017 多校4 Wavel Sequence

    2017 多校4 Wavel Sequence 题意: Formally, he defines a sequence \(a_1,a_2,...,a_n\) as ''wavel'' if and ...

  2. PHP操作 二维数组模拟mysql函数

    PHP操作 二维数组模拟mysql函数<pre>public function monimysqltest(){ $testarray=array( array('ss'=>'1', ...

  3. 2016年 实验二、C2C模拟实验

    实验二.C2C模拟实验 [实验目的] 掌握网上购物的基本流程和C2C平台的运营 [实验条件] ⑴.个人计算机一台 ⑵.计算机通过局域网形式接入互联网. (3).奥派电子商务应用软件 [知识准备] 本实 ...

  4. 【Nowcoder 上海五校赛】二数(模拟)

    题目描述: 我们把十进制下每一位都是偶数的数字叫做“二数”. 小埃表示自己很聪明,最近他不仅能够从小数到大:2,3,4,5....,也学会了从大数到小:100,99,98...,他想知道从一个数开始数 ...

  5. Codeforces 626A Robot Sequence(模拟)

    A. Robot Sequence time limit per test:2 seconds memory limit per test:256 megabytes input:standard i ...

  6. 【NOIP模拟赛】Drink 二维链表+模拟

    我觉得这道题的主旨应该是模拟,但是如果说他是二维链表的話也不為過.這道題的主體思路就是把原來旋轉點的O(n^2)變成了旋轉邊界的O(n).怎麼旋轉邊界呢,就好像是把原來的那些點都於上下左右四個點連線, ...

  7. SDUT OJ 图练习-BFS-从起点到目标点的最短步数 (vector二维数组模拟邻接表+bfs , *【模板】 )

    图练习-BFS-从起点到目标点的最短步数 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 在古老的魔兽传说中,有两个军团,一个叫天 ...

  8. 二、jmeter模拟请求头及监听器之结果树

    一.模拟请求头 利用jmeter发送http请求时,被接收的服务端会对发送的该请求进行初步判断,如果不是web端发送的请求就会被打回导致请求不通,这时候需要模拟请求头,模拟正常的用户行为进行发送请求 ...

  9. 2016暑假多校联合---Death Sequence(递推、前向星)

    原题链接 Problem Description You may heard of the Joseph Problem, the story comes from a Jewish historia ...

随机推荐

  1. 简单的 FFT 变形 - BZOJ 2194

    「BZOJ2194」快速傅立叶之二 2015年4月29日3,8300 Description 请计算C[k]=sigma(a[i]*b[i-k]) 其中 k < = i < n ,并且有 ...

  2. CDH安装详细测试正确

    1. CDH简介 简单来说,Cloudera Manager是一个拥有集群自动化安装.中心化管理.集群监控.报警功能的一个工具(软件),使得安装集群从几天的时间缩短在几个小时内,运维人员从数十人降低到 ...

  3. numpy 索引和切片

    一.取行 1.单行 数组[index, :] # 取第index+1行 例子 import numpy as np arr1 = np.arange(0, 24).reshape(4, 6) # 取第 ...

  4. [3.0] 一个人开发一个App,小程序从0到1,删减添加

    在这个黄道吉日,咱们将要干一件,惊天地泣鬼神,妇孺皆知的大事,那就是删掉微信开发工具自动生成的源代码. 删掉pages下的index.logs目录,啥都不留: 删掉utils下的util.js,只流空 ...

  5. 个人任务day4

    今日任务: 完成注册和登录界面的绘制,并创建用户数据库. 昨日成果: 完成博客数据库的录入和界面跳转.

  6. jmeter连接数据库操作

    JDBC Connection Configuration 数据库连接配置 数据库连接配置器,用来连接数据库,是一个连接池. 界面介绍 1.右键线程组->添加->配置元件->JDBC ...

  7. Nginx-负载均衡实现解读

    负载均衡在服务端开发中算是一个比较重要的特性.因为Nginx除了作为常规的Web服务器外,还会被大规模的用于反向代理前端,因为Nginx的异步框架可以处理很大的并发请求,把这些并发请求hold住之后就 ...

  8. Docker底层架构之简介

    简介 Docker 底层的核心技术包括 Linux 上的命名空间(Namespaces) 控制组(Control groups) Union 文件系统(Union file systems) 容器格式 ...

  9. 获取PHP类的所有属性和所有方法,可通过反射机制

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <?php   class Class1{     public $var1 = 'v ...

  10. 理解和运用Java中的Lambda

    前提 回想一下,JDK8是2014年发布正式版的,到现在为(2020-02-08)止已经过去了5年多.JDK8引入的两个比较强大的新特性是Lambda表达式(下文的Lambda特指JDK提供的Lamb ...