首页 > 其他分享 >2023.8.7

2023.8.7

时间:2023-08-07 15:46:14浏览次数:41  
标签:int cin -- 序列 大于 2023.8 单调

Codeforces Round 890 (Div. 2)

A. Tales of a Sort

题意给定一段数字序列,每次操作将每个大于 \(0\) 的数 \(-1\) ,求最少几次操作后整个序列单调上升。我们可以转化成将序列中的每个数都减去某个数 \(x\) , 使得序列大于等于 \(0\) 的部分单调上升,这个 \(x\) 就是操作的次数。也就是说 \(x\) 满足:序列中大于等于 \(x\) 的数单调上升,且 \(x\) 最小。并且容易发现序列最大值一定在这个区间中。到这里我们已经有了一个 \(O(nlongA)\) 的做法:二分 \(x\) 的值再遍历检查。不过还可以优化。我们可以把这段序列在平面上表示出来: x轴代表第几个数,y轴代表数的大小,描点后连线起来,于是整个序列的大小变化就成了波谷和波峰。然后只看大于 \(x\) 的部分,会发现这个部分的形状是从 \(f(x) = x\) 的直线然后从某个点开始向上至第 \(n\) 个数结束。因此我们的做法就是从 \(n\) 开始从后往前遍历数组,若 \(a_i > a_{i - 1}\) , 那么在从 \(a_1 - a_i\) 找出最大值就是 \(x\) 。 \(O(n)\) 复杂度。

code:

点击查看代码
#include<bits/stdc++.h>
using namespace std;

#define N 60

int a[N];

signed main(){
//  freopen("shuju.in", "r", stdin);
//  freopen("shuju.out", "w", stdout);
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  int T;
  cin >> T;
  while(T--){
    int n;
    cin >> n;
    for(int i = 1; i <= n; i ++){
      cin >> a[i];
    }
    int flag = 1;
    for(int i = n - 1; i >= 1; i --){
      if(a[i] > a[i + 1]){
        int ans = 0;
        for(int j = 1; j <= i; j ++){
          ans = max(ans, a[j]);
        }
        cout << ans << endl;
        flag = 0;
        break;
      }
    }
    if(flag) cout << 0 << endl;
  }
}

B. Good Arrays

标签:int,cin,--,序列,大于,2023.8,单调
From: https://www.cnblogs.com/yduck/p/17611443.html

相关文章

  • 2023.8.7
    学习java中的类面向对象与面向过程面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做。面向对象:强调具备了功能的对象,以类/对象为最小单位类与对象的关系类:对一类事物的描述,是抽象的、概念上的定义对象:是实际存在的该类事物的每个个体,因而也称为实例(instance)面向对象......
  • 2023.8.6
    学习java中的类面向对象与面向过程面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做。面向对象:强调具备了功能的对象,以类/对象为最小单位类与对象的关系类:对一类事物的描述,是抽象的、概念上的定义对象:是实际存在的该类事物的每个个体,因而也称为实例(instance)面向对象......
  • 2023.8.6 练习
    ARC058D首先有一个\(n\timesm\)的矩阵,从左上走到右下的方案数是\(C_{n+m-2}^{n-1}\).考虑把原图切分成两个矩阵。(左上和右整边)计算出走到左上角的矩阵边上每个点的方案数,再乘上这个点走到右下的方案数,求和即可。ARC058E发现题目条件中有“存在”字眼,非常容易重复计数,所以......
  • 2023.8.3
    A01矩阵,每次可以对一个子矩阵取反,问最少多少次操作后,存在一条只向下或右走,只经过0,从左上角到右下角的路径。\(n,m\le1000\).这个dp还是非常trival的。#include<bits/stdc++.h>#defineN1010#defineinf(1<<25)usingnamespacestd;intread(){ intx=0,w=1;char......
  • 2023.8.6 周日:数据类型
     1#对于int数据类型2ageint;34#对于double数据类型,并且保留n位小数5scoredouble(总长度=整数位数+小数位数,小数点后要保留的位数);67#对于生日等日期类8birthdaydata;910#对于字符类型11namevarchar(字符最大长度); ......
  • 2023.8.6
    日常做题1.P4198楼房重建非常离谱的线段树题,反正我当时看了标签是想不出来怎么线段树的。题意就是求斜率单调上升的序列长度(以下简称该序列为答案序列)。好,我们尽力地去想一下线段树怎么做。同样记左区间、右区间节点为\(p1,p2\),我们考虑维护区间的答案长度,记为\(len\)。......
  • 【比赛·总结】2023.8 学而思Z6模拟赛
    2023.8学而思Z6模拟赛考试界面:(隐藏)题解反思在本次考试中,作者惨遭爆零。警钟长鸣\(3\)分钟。作者认为,爆零的主要原因在于作者并没有遵从“遇到难题则跳过”的原则,疯狂卡在第一题上,从第\(0\)分钟一直到最后\(1\)秒,除了其中写了一个第二题的暴力,还因为读错题没得分以外,其......
  • 2023.8.4
    P4513小白逛公园求区间的最大子段和。一眼线段树题。那么我们考虑对于线段树的每个节点应该怎么维护:对于每个节点,额外设几个变量:sum,ml,mr,ms,分别表示区间和、包含左端点的最大子段和,包含右端点的最大子段和,最大子段和。我们用p1,p2来表示左儿子和右儿子。ms的维护:......
  • 2023.8.5 周六:DDL--操作表
    1#查询当前数据库的所有表2showtables;34#查询表的结构5descfunc(表的名称);67#创建表注:最后一行不加逗号8creattable表名9(10字段名1,数据类型1,11字段名2,数据类型2,12...13...14字段名n,数据类型n15);1617例,要创......
  • 2023.7.31-2023.8.6暑假第四周博客
     2023.7.31一键启动脚本启动:$HADOOP_HOME/sbin/start-yarn.sh• 从 yarn-site.xml 中读取配置,确定 ResourceManager 所在机器,并启动它• 读取 workers 文件,确定机器,启动全部的 NodeManager• 在当前机器启动 ProxyServer (代理服务器)关闭$HADOOP_HOME/sbin/stop-yar......