哈尔滨理工大学第七届程序设计竞赛决赛(现场赛-高年级组)E-求最大值

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更效! 阅读详情
链接: https://www.nowcoder.com/acm/contest/50/E
来源:牛客网

题目描述

给出一个序列,你的任务是求每次操作之后序列中 (a[j]-a[i])/(j-i)【1<=i<j<=n】的最大值。
操作次数有Q次,每次操作需要将位子p处的数字变成y.

输入描述:

本题包含多组输入,每组输入第一行一个数字n,表示序列的长度。
然后接下来一行输入n个数,表示原先序列的样子。
再接下来一行一个数字Q,表示需要进行的操作的次数。
最后Q行每行两个元素p,y,表示本操作需要将位子p处的数字变成y.
数据范围:
3<=n<=200000
1<=Q<=200000
-1000000000<=a[i]<=1000000000

题解:
最大值一定是相邻的两个数相减得到的。
注:map中默认按key的值排序。
代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn=200007;
int a[maxn];
map<int,int>mp;
int main()
{
    int n,Q;
    while(~scanf("%d",&n))
    {
        int i,j;
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&a[i]);
            if(i!=1)
            {
                int t=a[i]-a[i-1];
                if(!mp[t])mp[t]=1;
                else mp[t]++;
            }
        }
        scanf("%d",&Q);
        while(Q--)
        {
            int x,y;scanf("%d%d",&x,&y);
            int t1,t2;
            if(x!=1)
            {
                t1=a[x]-a[x-1];
                mp[t1]--;
                if(mp[t1]==0)mp.erase(t1);
                t1=y-a[x-1];
                if(!mp[t1])mp[t1]=1;
                else mp[t1]++;
            }
            if(x!=n)
            {
                t2=a[x+1]-a[x];
                mp[t2]--;
                if(mp[t2]==0)mp.erase(t2);
                t2=a[x+1]-y;
                if(!mp[t2])mp[t2]=1;
                else mp[t2]++;
            }
            a[x]=y;
            map<int,int>::iterator it=mp.end();
            it--;//it指向最后一个元素
            pair<int,int>item=*it;
            printf("%d",item.first);
            printf(".00\n");
        }
        mp.clear();
    }
    return 0;
}

牛客-最大值(单点修改,区间查询) 题目直通车 给出一个序列,你的任务是每次操作之后序列中 (a[j]-a[i])/(j-i)【1<=i<j<=n】的最大值。 操作次数有Q次,每次操作需要将位子p处的数字变成y. 输入描述: 本题包含多组输入,每组输入第一行一个数字n,表示序列的长度。 然后接下来一行输入n个数,表示原先序列的样子。 再接下来一行一个数字Q,表示需要进行的操作的次数。 最后Q行每行两个元素p,y,... 阅读详情

相关推荐

最大值(贪心+差分+线段树)

/* *@Author: GuoJinlong *@Language: C++ */ //#include <bits/stdc++.h> #include<iostream> #include<cstdio> #include<string> #include<queue> #include<stack> #include<map> #include<vector> #include<list&gt.

m0_57006708的博客 219

最大值

题目描述 给出一个序列,你的任务是每次操作之后序列中 (a[j]-a[i])/(j-i)【1<=i<j<=n】的最大值。 操作次数有Q次,每次操作需要将位子p处的数字变成y. 输入描述: 本题包含多组输入,每组输入第一行一个数字n,表示序列的长度。 然后接下来一行输入n个数,表示原先序列的样子。 再接下来一行一个数字Q,表示需要进行的操作的次数。 最后Q行每行两个元素p,y,表...

青烟绕指柔的博客 756

哈尔滨理工大学第七届程序设计竞赛决赛 题解

链接:https://www.nowcoder.com/acm/contest/30#question A: 在acimo星球, tabris 是一名勇敢的屠龙勇士,在上绿岛屠龙前决定挑选N种装备武装自己,现在每种装备有两个,**但每种装备tabris必须选择拿一个**,**不能多也不能少**。 每件装备有自己的属性值,能给tabris属性加成。 对于不同种类的装备之间有叠加效

I good vegetable a! 908

牛客-数圈圈

题目链接 tabris有一个习惯,无聊的时候就会数圈圈,无论数字还是字母。 现在tabris更无聊啦,晚上睡不着觉就开始数羊,从a只数到b只。 顺便还数了a到b之间有多少个圈。 但是tabris笨啊,虽然数羊不会数错,但很可能数错圈的个数。 但是tabris很难接受自己笨这个事实,所以想问问你他一共应该数出多少个圈,这样tabris才好判断他到底笨不笨啊。 输入描述: 输入一个T,表示数据组数 每...

jahup的博客 2116

哈尔滨理工大学第七届程序设计竞赛决赛(网络-高年级组)

哈尔滨理工大学第七届程序设计竞赛决赛(网络-高年级组) A 所有情况的和 题目链接: https://www.nowcoder.com/acm/contest/30/A 思路: 可以总结出公式: \[ sum = \prod\limits_{i = 1}^n {(a_i + b_i)} \] 代码: #include <bits/stdc++.h> using na...

ddqb3235的博客 245

哈尔滨理工大学第七届程序设计竞赛决赛现场-年级组)(回顾补题)

A 我是签到题 #include<bits/stdc++.h> using namespace std; int main() { long long a, b; while (cin >> a >> b) cout << a + b << endl; } B 我也是签到题 #include&lt...

Ls_attack的博客 372

哈尔滨理工大学第七届程序设计竞赛决赛现场-年级组)(重现

地址 A. #include<iostream> #include<cstring> using namespace std; typedef long long ll; int main() { ll a,b; while(cin>>a>>b){ cout<<a+b<<endl; } return 0; } B. #include<iostream> #inclu

fusu123456789的博客 218

哈尔滨理工大学第七届程序设计竞赛决赛(网络-年级组

A:我是签到题 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 计算A+B的结果。 输入描述: 本题包含多组输入,每组输入一行两个元素,A,B 数据范围: -1e15 输出描述: 每组数据输出占一行,表示计算A+B的结果。 示例1 输入

←_← 998

哈尔滨理工大学第七届程序设计竞赛决赛现场-高年级组)A-所有情况的和

链接:https://www.nowcoder.com/acm/contest/50/A来源:牛客网题目描述在acimo星球, tabris 是一名勇敢的屠龙勇士,在上绿岛屠龙前决定挑选N种装备武装自己,现在每种装备有两个,**但每种装备tabris必须选择拿一个**,**不能多也不能少**。每件装备有自己的属性值,能给tabris属性加成。对于不同种类的装备之间有叠加效果,如果选择多件装备,最终...

albertluf的博客 263

哈尔滨理工大学第七届程序设计竞赛决赛高年级组)】E 最大值 【线段树+思维】

时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 给出一个序列,你的任务是每次操作之后序列中 (a[j]-a[i])/(j-i)【1< = i < j < = n】的最大值。 操作次数有Q次,每次操作需要将位子p处的数字变成y. 输入描述: 本题包含多组输入,每组输入第一行一个

lzs_lazy 418

哈尔滨理工大学第七届程序设计竞赛决赛现场-高年级组)B-幸运大奖

链接:https://www.nowcoder.com/acm/contest/50/B来源:牛客网题目描述 tabris实在是太穷了,为了发财,tabris去买了一张彩票,幸运地中了特别奖。 特别奖是这样的,不会直接给你发钱.会给你一串二进制数s,让你在s中选择一个不大于k的区间,这个区间表示的数就是获奖者的奖金数目. tabris中奖之后已经激动地蒙圈了,他不知道如何选择能获得最...

albertluf的博客 251

哈尔滨理工大学第七届程序设计竞赛决赛(网络-高年级组)-E:最大值(思维)

哈尔滨理工大学第七届程序设计竞赛决赛(网络-高年级组)-E:最大值(思维)给出一个序列,你的任务是每次操作之后序列中 (a[j]-a[i])/(j-i)【1<=i<j<=n】的最大值。 操作次数有Q次,每次操作需要将位子p处的数字变成y.

Mitsuha_的博客 603

哈尔滨理工大学第七届程序设计竞赛决赛(网络-高年级组)E - 最大值

题目描述 给出一个序列,你的任务是每次操作之后序列中(a[j]-a[i])/(j-i)【1<=i<j<=n】的最大值。 操作次数有Q次,每次操作需要将位子p处的数字变成y. 输入描述: 本题包含多组输入,每组输入第一行一个数字n,表示序列的长度。然后接下来一行输入n个数,表示原先序列的样子。再接下来一行一个数字Q,表示需要进行的操作的次数。最后Q行每行两个...

weixin_34015566的博客 314

哈尔滨理工大学第七届程序设计竞赛决赛(网络-高年级组)B 幸运大奖【DP】

时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 tabris实在是太穷了,为了发财,tabris去买了一张彩票,幸运地中了特别奖。 特别奖是这样的,不会直接给你发钱.会给你一串二进制数s,让你在s中选择一个不大于k的区间,这个区间表示的数就是获奖者的奖金数目. tabris中奖之

Irish_Moonshine的博客 243

哈尔滨理工大学第七届程序设计竞赛决赛(网络-高年级组)B 幸运大奖

题目描述tabris实在是太穷了,为了发财,tabris去买了一张彩票,幸运地中了特别奖。特别奖是这样的,不会直接给你发钱.会给你一串二进制数s,让你在s中选择一个不大于k的区间,这个区间表示的数就是获奖者的奖金数目.tabris中奖之后已经激动地蒙圈了,他不知道如何选择能获得最多的钱,你能帮帮他不?输入描述:输入一个整数T(T≤10),代表有T组数据. 每组数据占两行. 第一行有一个整数K(k≤...

keep coding 552

哈尔滨理工大学第七届程序设计竞赛决赛(网络-高年级组)B题幸运大奖

幸运大奖 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 tabris实在是太穷了,为了发财,tabris去买了一张彩票,幸运地中了特别奖。 特别奖是这样的,不会直接给你发钱.会给你一串二进制数s,让你在s中选择一个不大于k的区间,这个区间表示的数就是获奖者的奖金数目. tab

Yuki_fx的博客 657

哈尔滨理工大学第七届程序设计竞赛决赛(网络-高年级组)B - 幸运大奖

题目描述 tabris实在是太穷了,为了发财,tabris去买了一张彩票,幸运地中了特别奖。 特别奖是这样的,不会直接给你发钱.会给你一串二进制数s,让你在s中选择一个不大于k的区间,这个区间表示的数就是获奖者的奖金数目. tabris中奖之后已经激动地蒙圈了,他不知道如何选择能获得最多的钱,你能帮帮他不? 输入描述: 输入一个整数T(T≤10),代表有T组数据.每组数据占两...

weixin_34122548的博客 122

哈尔滨理工大学第七届程序设计竞赛决赛 B 幸运大奖

题目描述 tabris实在是太穷了,为了发财,tabris去买了一张彩票,幸运地中了特别奖。 特别奖是这样的,不会直接给你发钱.会给你一串二进制数s,让你在s中选择一个不大于k的区间,这个区间表示的数就是获奖者的奖金数目. tabris中奖之后已经激动地蒙圈了,他不知道如何选择能获得最多的钱,你能帮帮他不? 输入描述: 输入一个整数T(T≤10),代表有T组数据. 每组数据占两行. 第

知足常乐的博客 363
上一篇: 哈尔滨理工大学第七届程序设计竞赛决赛(现场赛-高年级组)B-幸运大奖
下一篇: 哈尔滨理工大学第七届程序设计竞赛决赛(现场赛-高年级组)G-幼儿园战争
还是太年轻
博客等级 码龄9年 53粉丝 552原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值