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. docker-主从服务部署

    欢迎访问我的博客http://www.liyblog.top 我的博客里会有更详细的信息,而且留言必回,手把手给你解释不懂的地方   1.mysql部署   mysql镜像拉取 docker pull ...

  2. 代码审计之CVE-2017-6920 Drupal远程代码执行漏洞学习

     1.背景介绍: CVE-2017-6920是Drupal Core的YAML解析器处理不当所导致的一个远程代码执行漏洞,影响8.x的Drupal Core. Drupal介绍:Drupal 是一个由 ...

  3. 前端之css的基本使用(一),行内、内部、外部样式,语法格式、注释、选择符、属性等

    一.行内.内部.外部样式 1.行内样式 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  4. [洛谷P4012] [网络流24题] 深海机器人问题

    Description 深海资源考察探险队的潜艇将到达深海的海底进行科学考察. 潜艇内有多个深海机器人.潜艇到达深海海底后,深海机器人将离开潜艇向预定目标移动. 深海机器人在移动中还必须沿途采集海底生 ...

  5. 大叔 Frameworks.Entity.Core 3 Predicate

    Frameworks.Entity.Core\Commons\Predicate\ 1LinqEntity.cs /// IQueryable扩展方法:条件过滤与排序功能    /// Modify ...

  6. Creating Form Elements --Using BeginForm and EndForm 使用内建的Form辅助器方法 精通ASP.NET MVC 5

    Using the BeginForm and EndForm Helper Methods in the CreatePerson.cshtml File

  7. 解决luajit ffi cdata引用cdata的问题

    使用luajit ffi会遇到cdata引用cdata的情况.官方说明是必须手动保存所有cdata的引用,否则会被gc掉. ffi.cdef[[ struct A { int id; }; struc ...

  8. zerotier 远程办公方案

    武汉新肺炎疫情下,搞得人心惶惶.很多公司都要求前期远程办公 我厂日常有在家远程应急支持的情况,所以公司很早就有VPN服务.只需要申请VPN服务,开通之后就可以连上公司各种公共资源. 然而对于一些非公共 ...

  9. C语言博客作业8

    本周作业头 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 作业地址 我在这个课程的目标是 熟练运用C语言来写代码 这个作业在那个具体方面帮助我实现目标 while语句的运用 参考文献 ...

  10. 含源码解析,深入Java 线程池原理

    从池化技术到底层实现,一篇文章带你贯通线程池技术. 1.池化技术简介 在系统开发过程中,我们经常会用到池化技术来减少系统消耗,提升系统性能. 在编程领域,比较典型的池化技术有: 线程池.连接池.内存池 ...