JZOJ 1844——数数

2024-01-30 11:32
文章标签 jzoj 数数 1844

本文主要是介绍JZOJ 1844——数数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这里写图片描述


仍然是预处理sum[i]表示前i个数的和,只枚举右端点r
问题就转换成了在sum[r-k..r-1]中找一个最小值。
那么我们维护一个元素单调递增的队列
每次处理完一个r后把队尾所有不小于sum[r]的元素删掉后把sum[r]放进队尾。那么每次只用把队头中元素在原数组中的下标

代码如下:

#include<algorithm>
#include<cstdio>
#include<cmath>
#include<iostream>
#define MAXN 110000
#define INF 100000009
using namespace std;
long long sum[MAXN];
int q[MAXN];
int n,k,head,tail;
long long ans;
int main()
{scanf("%d%d",&n,&k);ans=-INF;q[0]=0;sum[0]=0;for (int i=1;i<=n;i++){int x;scanf("%d",&x);sum[i]=sum[i-1]+x;while (q[head]<i-k) head++;while (sum[i]<=sum[q[tail]]&&tail>=head)tail--;q[++tail]=i;ans=max(ans,sum[i]-sum[q[head]]);}printf("%lld",ans);return 0;
}

这篇关于JZOJ 1844——数数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/660103

相关文章

NYOJ,198,数数

数数 时间限制:3000 ms  | 内存限制:65535 KB 难度:2 描述 我们平时数数都是喜欢从左向右数的,但是我们的小白同学最近听说德国人数数和我们有些不同,他们正好和我们相反,是从右向左数的。因此当他看到123时会说“321”。 现在有一位德国来的教授在郑州大学进行关于ACM的讲座。现在他聘请你来担任他的助理,他给你一些资料让你找到这些资料在书中的页数。现在你已经找到了对

数数问题

网上看到的一个让人想了好半天,测试了,才知道,有的大括号省略后只能读到当前行, so建议写代码过程中不要省略大括号,这不是个好习惯。 package homework; import java.util.ArrayList; import java.util.Scanner; import java.util.Vector; public class Baoshu

[USACO2003 Dec]Cow Queueing数数的梦 (基础水数位DP带注释!)

题目链接:http://acm.tju.edu.cn/toj/showp2839.html(真的找不到链接了) 题目大意: 给你一个范围A~B,求出在整数A 到B之间,0到9这十个数字,分别出现了多少次? 1≤A,B≤10^18 样例输入  129 137 样例输出  1 10 2 9 1 1 1 1 0 1 题解: 数位DP 我的第一道数位DP。。尽管是基础水题但是搞了好久

1139: 数数(语言入门)

1139: 数数(语言入门) 1.描述 我们平时数数都是喜欢从左向右数的,但是我们的小白同学最近听说德国人数数和我们有些不同,他们正好和我们相反,是从右向左数的。因此当他看到123时会说“321”。 现在有一位德国来的教授在郑州大学进行关于ACM的讲座。现在他聘请你来担任他的助理,他给你一些资料让你找到这些资料在书中的页数。现在你已经找到了对应的页码,要用英文把页码告诉他。 为了简化我们的

牛牛数数 【线性基+二分】

链接:https://ac.nowcoder.com/acm/contest/10845/E 来源:牛客网 保证答案在long long内。 解法 这题可以说是线性基的模板题。先学习一下线性基: 线性基视频 处理完线性基之后,就可以使用其性质4: 求任意子集xor最大值: 把线性基中所有元素xor起来求任意子集xor最小值: 等于最小的主元查询x是否在值域中: 如果x能插入线性基,则x

试题 算法训练 YBH数数

试题 算法训练 YBH数数 问题描述   YBH数学很差,她数数时分不清4,5和8;我们定义YBH[i]为YBH的计数法对应的i的值。   规定:YBH[4] = 5,YBH[5] = 8;YBH[i]运算规则如下:   ① YBH[i+j] = YBH[i] + YBH[j]   ② YBH[ij] = YBH[i] * YBH[j]   我们会发现,用不同方法算出的YBH[i]的值是不同的,

jzoj 5770 可爱精灵宝贝

题目 题解 –是区间dp(好像dfs加神秘玄学剪枝也能过?) 首先,我们可以发现这个人走过的位置是一个区域,而且区域内部的精灵要么被抓,要么消失了(总之就是与以后的转移没有关系) 所以,状态定义: f[l][r][t] :当这个人走过区间[l,r],且目前在l处,时间为t时的最大分值 注意,l,r的左右位置要根据大小自己判断 然后我们又发现,现在这个人只有两种方法:左走或右走

[离散化][区间DP]JZOJ 5770 可爱精灵宝贝

日常黑Pokeman Go Description Branimirko是一个对可爱精灵宝贝十分痴迷的玩家。最近,他闲得没事组织了一场捉精灵的游戏。游戏在一条街道上举行,街道上一侧有一排房子,从左到右房子标号由1到n。 刚开始玩家在k号房子前。有m个精灵,第i只精灵在第A[i]栋房子前,分值是B[i],以及它在T[i]秒内(含)存在,之后消失。Branimirko可以选择移动至相邻的房子,耗时

[权值线段树]JZOJ 3236 矮人排队

Description 在七山七海之外的一个小村庄,白雪公主与N个矮人住在一起,所有时间都花在吃和玩League of Legend游戏。白雪公主决心终结这样的生活,所以为他们举办了体育课。 在每节课开始时,矮人必须按他们的身高站队。假定矮人们有高度1,2,...,N(每个人高度互不相同)。然而,由于不健康的生活方式,矮人的智力有所恶化,所以他们没有能力依照自己的高度排序。 因此,白雪公主发

poj 1844 sum

Sample Input 12 Sample Output 7 Hint The sum 12 can be obtained from at least 7 terms in the following way: 12 = -1+2+3+4+5+6-7. 大牛们证明的: 一:sum一定要大于或等于输入的S.(等于时就已经找到了答案) 小于的话就算全做加法运算也不能达