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 ...
随机推荐
- 阿里云安装filezilla
1.连接服务器 ssh 或者 远程连接 到服务器: 2.安装相应软件 安装EPEL,EPEL是yum的一个软件源,里面包含了许多基本源里没有的软件: yum -y install epel-relea ...
- 洛谷 P5239 回忆京都 题解
题面 裸的杨辉三角前缀和,但----- 在求前缀和的时候有可能得到一个负数(由于取模的原因),所以一定要加上模数后再取模!!!! #include <bits/stdc++.h> #def ...
- python3 enum模块的应用
python枚举模块的学习 ps:小编刚开始学习没多久,部分资源来源于其他网友,如有出错,麻烦联系修改哈,互帮互助,共同进步 一.枚举与字典类型 字典类型的缺点:1.值可变 2.没有防止相同标签的功能 ...
- Spring Cloud 入门概括介绍
出处: 拜托!面试请不要再问我Spring Cloud底层原理 概述 毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术.不过大多数讲解还停留在对Spring ...
- 通过SEO可以做什么?
1.做关键词排名,从而带来大量的客户卖产品和服务.很多大型机械厂家就是这么做的,显然SEO赚取了不少利润. 2.通过SEO带来大量流量,从而投放广告或者跟厂家合作买产品,比如流量站之类. ...
- 2019-2020-1 20199319《Linux内核原理与分析》第三周作业
操作系统是如何工作的 基础知识 1.计算机的三个法宝:存储程序计算机.函数调用堆栈机制.中断. 2.堆栈的具体作用:记录函数调用框架.传输函数参数.保存返回值的地址.提供函数内部局部变量的存储空间. ...
- sql 占位符及部分时间函数
Mysql 预处理占位符 %s -- 表示字段串 %d -- 表示整形数字 %f -- 表示浮点数 (UNIX_TIMESTAMP(DATE_SUB(now(), INTERVAL jp_days D ...
- Linux20期学习笔记 Day4
环境变量.常用系统变量:vim编辑器使用方法及实验:shell脚本两个层次 内置参数及相关实验
- auto_ptr为什么不能做为vector的元素
昨天看effectve c++的时候,发现了auto_ptr这个东西.由于我待过的公司都是用的老版c++,代码里智能指针什么的完全没有出现过,都是直接操作的原始指针.虽说我很少出错,但是总归还是不太安 ...
- 在Scrapy里设置Cookies 要注意一点!
1.requests里设置cookies,可以将cookies放入headers里一同提交. {'Accept': 'text/html,application/xhtml+xml,applicati ...