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. async-await 线程分析

    这里没有线程 原文地址:https://blog.stephencleary.com/2013/11/there-is-no-thread.html 前言 我是在看 C#8.0 新特性异步流时在评论里 ...

  2. JSON的学习与使用

    .katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...

  3. msi通过powershell安装、卸载

    function install_msi($url) { $telemetry = @{ DisplayName = "Telemetry Service"; filename = ...

  4. 异数OS 2017 DPDK 峰会观后感

    1.DPDK in Container 使用虚拟网卡设备技术为每一个容器分配一个IP 网卡适配器(queue).容器技术可以解决虚拟机技术中虚拟机过于臃肿,难于热迁移的问题,可能可以代替美团OVS方案 ...

  5. context:component-scan标签的诠释

    XML中配置context:component-scan时,spring会自动的扫描这个包下被这些注解标识的类@Component,@Service,@Controller,@Repository,同 ...

  6. 去除空白字符串trim

    let str = ' foo ' //去除开头空格 console.log(str.trimLeft()) console.log(str.trimStart()) //去除尾部空格 console ...

  7. Egret学习-初次创建项目

    最近无聊,好久没有写游戏了,决定学习下egret,主要原因:egret是h5框架,相比android和iPhone或cocos2dx来说不需要安装可以直接运行. 下面进入正题,开始学习egret 简单 ...

  8. pikachu漏洞练习之sql注入

    这里因为实验的时候只记录了一部分所以就展示一部分 1.1.1数字型注入 (1)看到界面发现是查询id功能,没有在url里看到有传参所以应该是post方法提交数据. (2)进行sql注入之前我们最好是先 ...

  9. 重写ThreadFactory方法和拒绝策略

    最近项目中要用到多线程处理任务,自然就用到了ThreadPoolTaskExecutor这个对象,这个是spring对于Java的concurrent包下的ThreadPoolExecutor类的封装 ...

  10. Catch That Cow (简单BFS+剪枝)

    Problem Description Farmer John has been informed of the location of a fugitive cow and wants to cat ...