【JZOJ A组】逛公园

2023-12-05 13:30
文章标签 jzoj 逛公园

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

Description

策策由于在noip2017考试当天去逛公园了,没能出现在考场上,转眼到了noip2018,策策的公园也悄然转变,策策能否克服诱惑,成功坐在考场上呢?
问题描述
策策同学特别喜欢逛公园,公园可以看做有n个景点的序列,每个景点会给策策带来di 的愉悦度,策策初始有x0 的愉悦度,然而愉悦度也是有上限的,他在每个景点的愉悦度上限为li ,策策想要从 l 到 r这一段景点中选择一段景点参观(从这一段的左端点逛到这一段的右端点),策策想知道他最终的愉悦度的最大值是多少,你能帮帮他吗?(区间可以为空,也就是说答案最小为x0 )

Input

第一行两个数n,q 表示景点序列长度 和 询问个数
第二行n个数 表示di
第三行n个数 表示li
接下来q行,每行3个数:
表示 l ,r ,x0
下标均从1开始

Output

共q行,每行1个数表示愉悦度的最大值

Sample Input

6 3
0 5 3 2 0 4
8 10 8 1 9 9
1 3 9
2 6 3
3 4 0

Sample Output

10
8
3

样例说明
询问1 初始愉悦度9 只逛第2个公园 9+5=14 大于l2 ans=10
询问2 初始愉悦度3 从2逛到3 3+5+3=11 大于l3 ans=8
询问3 初始愉悦度0 只逛第3个公园 ans=3

Data Constraint

在这里插入图片描述

思路

这题满分有点难,我选择85暴力

这东西很像子段最大和,加一个优化就可以拿到85的好成绩

代码

#pragma GCC optimize(3)
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,q;
struct A
{int x,y;
}a[40077];
int main()
{freopen("park.in","r",stdin); freopen("park.out","w",stdout);scanf("%d%d",&n,&q);for(int i=1; i<=n; i++) scanf("%d",&a[i].x);for(int i=1; i<=n; i++) scanf("%d",&a[i].y);while(q--){int l,r;long long s=0,ans=0,x;scanf("%d%d%lld",&l,&r,&x); ans=s=x;for(int i=l; i<=r; i++){s=max(x,min(s+1ll*a[i].x,1ll*a[i].y)); ans=max(ans,s);}printf("%lld\n",ans);}
}

这篇关于【JZOJ A组】逛公园的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Jzoj 条件循环(while,do while) 部分代码(共25题)

1020: 【入门】编程求1+3+5+...+n #include <bits/stdc++.h>using namespace std;int n, sum;int main() {scanf("%d", &n);for(int i=1; i<=n; i+=2){sum+=i;} printf("%d", sum);return 0;} 1012: 【入门】两数比大小 #i

Jzoj 二维数组部分代码(共13题)

2788: 【入门】二维数组的输入输出 边输入边输出 #include <bits/stdc++.h>using namespace std;int n, m, a[11][11];int main(){scanf("%d %d", &n, &m);//边输入边输出for(int i=1; i<=n; ++i){for(int j=1; j<=m; ++j){scanf("%d", &

Vijos 小白逛公园 线段树加DP

描述 小新经常陪小白去公园玩,也就是所谓的遛狗啦…在小新家附近有一条“公园路”,路的一边从南到北依次排着n个公园,小白早就看花了眼,自己也不清楚该去哪些公园玩了。 一开始,小白就根据公园的风景给每个公园打了分-.-。小新为了省事,每次遛狗的时候都会事先规定一个范围,小白只可以选择第a个和第b个公园之间(包括a、b两个公园)选择**连续**的一些公园玩。小白当然希望选出的公园的分数总和尽量高咯。

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(每个人高度互不相同)。然而,由于不健康的生活方式,矮人的智力有所恶化,所以他们没有能力依照自己的高度排序。 因此,白雪公主发

(CSP2019模拟)DTOJ 4617. 逛公园

题意 小凯做题做累了,他想去逛公园。 公园里有 m m m 个亲子项目,每个项目一天只能一个家庭参加。一共有 n n n 个家庭,第 i i i 个家庭希望在第 l i l_i li​ 到 r i r_i ri​ 天内参加恰好一次第 p i p_i pi​ 个项目。但是公园的工作人员很懒,他们希望上班的天数尽量少。某天要上班当且仅当至少有一个家庭参加了任意一个项目。 工作人员看到

JZOJ 1495. 宝石(附加扫描线讲解)

JZOJ 1495. 宝石 题目大意:给你N个 ( K + 1 ) × ( K + 1 ) (K+1)\times(K+1) (K+1)×(K+1)的正方形以及他们左上角的那个顶点的坐标和它的权值,求最大的覆盖的权值。 这一题可以用二维前缀和做,但是无法拿到满分。 满分做法:扫描线。 假如现在有这么两个长方形,权值都为1(不要问为什么是长方形,这里只是为了方便讲解而已),它们摆放如图: 首

【JZOJ A组】 大逃杀

Description 自从 Y 君退役之后,她就迷上了吃鸡,于是她决定出一道吃鸡的题。 Y 君将地图上的所有地点标号为 1 到 n,地图中有 n − 1 条双向道路连接这些点,通过一条 双向道路需要一定时间,保证从任意一个点可以通过道路到达地图上的所有点。 有些点上可能有资源,Y 君到达一个有资源的点后,可以选择获取资源来使自己的武力值增 加 wi,也可以选择不获取资源。如果 Y 君获取了

[数位dp][斯特林反演] Jzoj P5765 相互再归的鹅妈妈

Description Input Output Sample Input Input 13 1101Input 24 310Input 35 1001 Sample Output Output 11Output 21978Output 3598192244 Data Constraint 对于所有数据,保证