Eating Plan
2019南昌G
模数为合数,所以只有约3000个数字不为0
记录一下不为0的数字位置
H[x]代表距离为x的连续段的数字和的最大值
处理出H[x]
再H[x] = max(H[x],H[x-1])记录下前缀最大,
对每个询问二分答案
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,q;
int A[];
const int mod = ;
void init()
{
A[]=;
for(int i=;i<=;i++){
A[i]=(A[i-]*i)%mod;
}
}
int x;
vector<int>v;
int B[];
int H[];
int pre[];
signed main()
{
init();
scanf("%lld%lld",&n,&q);
v.push_back();
for(int i=;i<=n;i++){
scanf("%lld",&x);
if(x<=){
B[i]=A[x];
v.push_back(i);
}else{
B[i]=;
}
} for(int j=;j<v.size();j++){
pre[j]=(B[v[j]]+pre[j-])%mod;
}
for(int i=;i<=v.size();i++){
for(int j=;j+i-<v.size();j++){
H[v[j+i-]-v[j]+]=max(H[v[j+i-]-v[j]+],(pre[j+i-]-pre[j-]+mod)%mod);
}
}
for(int i=;i<=n;i++){
H[i]=max(H[i],H[i-]);
}
for(int i=;i<=q;i++){
scanf("%lld",&x);
int l = ,r =n+;
while(l+<=r){
int mid=(l+r)/;
if(H[mid]<x){
l= mid+;
}else r=mid;
}
if(l==n+){
cout<<-<<'\n';
}else{
cout<<l<<'\n';
}
}
}
Eating Plan的更多相关文章
- 2019 ICPC Asia Nanchang Regional E Eating Plan 离散化+前缀和
题意: 给你n个盘子,这n个盘子里面分别装着1!到n!重量的食物,对于每一个询问k,找出一个最短的区间,使得区间和 mod 998857459 大于或等于k 盘子数量 n<=1e5 询问次数 m ...
- codeforces369A
Valera and Plates CodeForces - 369A Valera is a lazy student. He has m clean bowls and k clean plate ...
- Slimming Plan
问题 B: Slimming Plan 时间限制: 1 Sec 内存限制: 128 MB 题目描述 Chokudai loves eating so much. However, his docto ...
- P2985 [USACO10FEB]吃巧克力Chocolate Eating
P2985 [USACO10FEB]吃巧克力Chocolate Eating 题目描述 Bessie has received N (1 <= N <= 50,000) chocolate ...
- upc组队赛7 Slimming Plan
Slimming Plan 题目描述 Chokudai loves eating so much. However, his doctor Akensho told him that he was o ...
- NC24724 [USACO 2010 Feb S]Chocolate Eating
NC24724 [USACO 2010 Feb S]Chocolate Eating 题目 题目描述 Bessie has received \(N (1 <= N <= 50,000)\ ...
- 测试计划(Test Plan)
测试计划(Test Plan) 版权声明:本文为博主原创文章,未经博主允许不得转载. 测试计划的概念: 测试计划是一个文档,描述了进行测试的测试范围,测试策略和方法,测试资源和进度.是对整个测试活动进 ...
- SQL Tuning 基础概述02 - Explain plan的使用
1.explain plan的使用 SQL> explain plan for delete from t_jingyu; Explained. SQL> select * from ta ...
- POJ2175 Evacuation Plan
Evacuation Plan Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4617 Accepted: 1218 ...
随机推荐
- [NodeJs系列]聊一聊BOM
最近在看Node源码的时候,偶然间,看到如下函数: /** * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) * be ...
- MySQL基础入门之常用命令介绍
mysql命令介绍 mysql 是数据库管理命令 通过mysql --help来查看相关参数及使用说明 mysql --help #mysql数据库管理命令 Usage: ...
- 【网络安全】window 快速搭建 ftp 及 多种访问方式
在局域网里面使用ftp传输文件比使用qq等软件传输速度快很多,但是搭建ftp很多时候需要下载相应的支持软件,其实不必下载相关的软件,因为window自带ftp功能. 演示操作系统:windows10 ...
- $id(id)函数
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- layui ri laydate的常规使用,并且日期最大不能超过当前日期
laydate的常规使用,分为两种方式实现日期组件 一.在 layui 模块中使用 下载layui 地址 :https://www.layui.com/ 引入资源路径 js 和 css 通过下面 ...
- IDEA设置类头,方法头自定义内容~图文
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 2019-11-29-dotnet-文件读写务必注意事项
title author date CreateTime categories dotnet 文件读写务必注意事项 lindexi 2019-11-29 08:34:43 +0800 2019-10- ...
- TCP Retransmission 连接超时
TCP Retransmission 连接超时 kame 2019/3/17 33 TCP 记一次TCP 连接超时 背景 用户反馈 >> 有出现支付超时.页面问题 (部分情况会出现) 分析 ...
- VIM如何自动保存文件、自动重加载文件、自动刷新显示文件
1.手动重加载文件的命令是:e! 2.一劳永逸的方法是:vim提供了自动加载的选项 autoread,默认关闭. 在vimrc中添加 set autoread即可打开自动加载选项,相关选项: :hel ...
- lnmp 环境搭建后,pathinfo 模式支持的配制。
ThinkPHP的四种URL模式:0(普通模式);1(PATHINFO模式);2(REWRITE模式);3(兼容模式) nginx需要PATHINFO模式,但需要更改nginx配置文件让其支持PATH ...