Codeforces Round #890 (Div. 2)

A.Tales of a Sort

题目大意

Alphen has an array of positive integers a a a of length n.

Alphen can perform the following operation:

  • For all i i i from 1 to n, replace a i a_i ai with max ⁡ ( 0 , a i − 1 ) \max(0,a_i−1) max(0,ai1) .

Alphen will perform the above operation until a a a is sorted, that is a a a satisfies a 1 ≤ a 2 ≤ … ≤ a n a_1≤a_2≤…≤a_n a1a2an. How many operations will Alphen perform? Under the constraints of the problem, it can be proven that Alphen will perform a finite number of operations.

思路

记录最大的逆序对的值即可

#include <bits/stdc++.h>
using namespace std;
const int N = 550;
int a[N];void solve()
{int n;cin >> n;for (int i = 1; i <= n; i++)cin >> a[i];int ans = 0;for (int i = 1; i <= n; i++)for (int j = i + 1; j <= n; j++){if (a[i] > a[j])ans = max(ans, a[i]);}cout << ans << endl;
}
int main()
{int t;cin >> t;while (t--)solve();return 0;
}

B.Good Arrays

题目大意

Let’s call an array of positive integers b of length n good if:

  1. a i ≠ b i a_i≠b_i ai=bi for all i from 1 t o n 1 \ to \ n 1 to n ,
  2. a 1 + a 2 + … + a n = b 1 + b 2 + … + b n a_1+a_2+…+a_n=b_1+b_2+…+b_n a1+a2++an=b1+b2++bn.

思路

这道题将非 1 1 1 的数把值累加到 1 1 1 上面,让自己等于 1 1 1, 然后 1 1 1 变成非 1 1 1

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
void solve()
{int n;cin >> n;LL cnt1 = 0, sum = 0;for (int i = 1; i <= n; i++){int x;scanf("%d", &x);if (x == 1)cnt1++;elsesum += (x - 1);}if (n == 1){puts("NO");return;}if (sum >= cnt1){puts("YES");return;}else{puts("NO");return;}
}int main()
{int t;cin >> t;while (t--)solve();return 0;
}

C.To Become Max

题目描述

You are given an array of integers a a a of length n n n .

In one operation you:

  • Choose an index i i i such that 1 ≤ i ≤ n − 1 1 \le i \le n - 1 1in1 and a i ≤ a i + 1 a_i \le a_{i + 1} aiai+1 .
  • Increase a i a_i ai by 1 1 1 .

Find the maximum possible value of max ⁡ ( a 1 , a 2 , … a n ) \max(a_1, a_2, \ldots a_n) max(a1,a2,an) that you can get after performing this operation at most k k k times.

输入格式

Each test contains multiple test cases. The first line of input contains a single integer t t t ( 1 ≤ t ≤ 100 1 \le t \le 100 1t100 ) — the number of test cases. The description of the test cases follows.

The first line of each test case contains two integers n n n and k k k ( 2 ≤ n ≤ 1000 2 \le n \le 1000 2n1000 , 1 ≤ k ≤ 1 0 8 1 \le k \le 10^{8} 1k108 ) — the length of the array a a a and the maximum number of operations that can be performed.

The second line of each test case contains n n n integers a 1 , a 2 , … , a n a_1,a_2,\ldots,a_n a1,a2,,an ( 1 ≤ a i ≤ 1 0 8 1 \le a_i \le 10^{8} 1ai108 ) — the elements of the array a a a .

It is guaranteed that the sum of n n n over all test cases does not exceed 1000 1000 1000 .

输出格式

For each test case output a single integer — the maximum possible maximum of the array after performing at most $ k $ operations.

样例 #1

样例输入 #1
6
3 4
1 3 3
5 6
1 3 4 5 1
4 13
1 1 3 179
5 3
4 3 2 2 2
5 6
6 5 4 1 5
2 17
3 5
样例输出 #1
4
7
179
5
7
6

提示

In the first test case, one possible optimal sequence of operations is: [ 1 , 3 , 3 ] → [ 2 , 3 , 3 ] → [ 2 , 4 , 3 ] → [ 3 , 4 , 3 ] → [ 4 , 4 , 3 ] [\color{red}{1}, 3, 3] \rightarrow [2, \color{red}{3}, 3] \rightarrow [\color{red}{2}, 4, 3] \rightarrow [\color{red}{3}, 4, 3] \rightarrow [4, 4, 3] [1,3,3][2,3,3][2,4,3][3,4,3][4,4,3] .

In the second test case, one possible optimal sequence of operations is:
[ 1 , 3 , 4 , 5 , 1 ] → [ 1 , 4 , 4 , 5 , 1 ] → [ 1 , 5 , 4 , 5 , 1 ] → [ 1 , 5 , 5 , 5 , 1 ] → [ 1 , 5 , 6 , 5 , 1 ] → [ 1 , 6 , 6 , 5 , 1 ] → [ 1 , 7 , 6 , 5 , 1 ] [1, \color{red}{3}, 4, 5, 1] \rightarrow [1, \color{red}{4}, 4, 5, 1] \rightarrow [1, 5, \color{red}{4}, 5, 1] \rightarrow [1, 5, \color{red}{5}, 5, 1] \rightarrow [1, \color{red}{5}, 6, 5, 1] \rightarrow [1, \color{red}{6}, 6, 5, 1] \rightarrow [1, 7, 6, 5, 1] [1,3,4,5,1][1,4,4,5,1][1,5,4,5,1][1,5,5,5,1][1,5,6,5,1][1,6,6,5,1][1,7,6,5,1]

思路

我们二分答案,下界设为 0 0 0,而 max ⁡ ( a 1 , … a n ) + k \max(a_1,…a_n)+k max(a1,an)+k 作为上界。

b b b a a a 在执行 k k k 次操作后的数组。假设对于一个数 x x x,我们想要检查是否可以在 k k k 次操作中得到 max ⁡ ( b 1 , … b n ) ≥ x \max(b_1,…b_n)≥x max(b1,bn)x。也就是说,通过 k k k 次操作使得存在某个索引 i i i 使得 b i ≥ x b_i≥x bix

因此,让我们从遍历一下 b b b 数组 ,看看是否可以在 k k k 次操作中使得 b i ≥ x b_i≥x bix

f ( i , y ) f(i,y) f(i,y) 为使得 b i ≥ y b_i≥y biy 所需的最小操作数。那么有:
f ( i , y ) = 0 , 对于所有 y ≤ a i f ( i , y ) = y − a i + f ( i + 1 , y − 1 ) ,对于所有 1 ≤ a i f ( i , y ) = + ∞ ,对于 i = n 且所有 y > a i 。 f(i,y)=0,对于所有y≤ai\\f(i,y)=y−a_i+f(i+1,y−1),对于所有1≤a_i\\f(i,y)=+∞,对于i=n且所有y>a_i。 f(i,y)=0,对于所有yaif(i,y)=yai+f(i+1,y1),对于所有1aif(i,y)=+,对于i=n且所有y>ai
显然计算 f ( i , x ) f(i,x) f(i,x) 最坏情况下需要 O ( n ) O(n) O(n) 的时间。因此,我们看看 ∑ i = 1 n f i , x ≤ k \sum _{i=1}^{n}f_{i,x}≤k i=1nfi,xk

如果操作次数 ≤ k ≤k k,那么在 k k k 次操作中可能存在某个 b i ≥ x b_i≥x bix,并在更新当前答案后让 l = m i d l=mid l=mid。否则这个 x x x 没有办法满足,让 r = m i d r=mid r=mid。复杂度: O ( n 2 log ⁡ A ) O(n^2\log A) O(n2logA),其中 A A A a i a_i ai k k k 的最大可能值。

在这里插入图片描述

我们这里再来看

一个优化空间的思路,因为我们只需要计算所有 f f f 值的和,所以 O(1) \text{O(1)} O(1) 空间复杂度就可以了。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 2005;
vector<ll> a(N);
ll n, k;
bool check(ll x)
{for (int i = 1; i <= n; i++){vector<ll> minneed(n + 1);minneed[i] = x;ll ut = 0;for (int j = i; j <= n; j++){if (minneed[j] <= a[j])break;if (j == n){ut = k + 1;break;}ut += minneed[j] - a[j];minneed[j + 1] = max(0ll, minneed[j] - 1);}if (ut <= k)return true;}return false;
}void solve()
{cin >> n >> k;ll maxnum = 0;for (int i = 1; i <= n; i++){cin >> a[i];maxnum = max(maxnum, a[i]);}// cout << *max_element(a.begin(), a.end()) + k + 1 << endl;ll l = -1, r = maxnum + k + 1, ans = 0;// cout << r << endl;while (l + 1 < r){ll mid = (l + r) >> 1;if (check(mid))ans = mid, l = mid;elser = mid;}cout << l << endl;
}int main()
{int t;cin >> t;while (t--)solve();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/55515.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++学习】STL容器——list

目录 一、list的介绍及使用 1.1 list的介绍 1.2 list的使用 1.2.1 list的构造 1.2.2 list iterator的使用 1.2.3 list capacity 1.2.4 list element access 1.2.5 list modifiers 1.2.6 list 迭代器失效 二、list的模拟实现 2.1 模拟实现list 三、list和vector的对比…

Redis数据一致性问题的三种解决方案

Redis数据一致性问题的三种解决方案 1、首先redis是什么 Redis&#xff08;Remote Dictionary Server )&#xff0c;是一个高性能的基于Key-Value结构存储的NoSQL开源数据库。大部分公司采用Redis来实现分布式缓存&#xff0c;用来提高数据查询效率。 2、为什么会选Redis 在…

浅析 C 语言的共用体、枚举和位域

前言 最近在尝试阅读一些系统库的源码&#xff0c;但是其中存在很多让我感到既熟悉又陌生的语法。经过资料查阅&#xff0c;发现是 C 语言中的共用体和位域。于是&#xff0c;趁着课本还没有扔掉&#xff0c;将一些相关的知识点记录在本文。 文章目录 前言共用体 (union)枚举…

MySQL建表和增添改查

1.创建一个名为mydb的数据库 mysql> show database mydb; 查询 mysql> show database mydb; 2.创建一个学生信息表 mysql> create table mydb.student_informtion( -> student_id int UNSIGNED NOT NULL PRIMARY KEY, //非空&#xff08;不允许为空&#xff0…

图像 检测 - DETR: End-to-End Object Detection with Transformers (arXiv 2020)

图像 检测 - DETR: End-to-End Object Detection with Transformers - 端到端目标检测的Transformers&#xff08;arXiv 2020&#xff09; 摘要1. 引言2. 相关工作2.1 集预测2.2 Transformers和并行解码2.3 目标检测 3. DETR模型References 声明&#xff1a;此翻译仅为个人学习…

【数学】3、动态规划

文章目录 一、原理1.1 如何想到dp 二、案例2.1 编辑距离2.1.1 状态转移2.1.2 状态转移方程和编程实现 2.2 钱币组合 一、原理 接着文本搜索的话题&#xff0c;来聊聊查询推荐&#xff08;Query Suggestion&#xff09;的实现过程&#xff0c;以及它所使用的数学思想&#xff0…

【Java】Springboot脚手架生成初始化项目代码

Springboot配置生成初始化项目代码可以通过mvn的mvn archetype:generate 和阿里云原生应用脚手架&#xff08;地址&#xff09;、spring官方提供的start初始化生成页面(地址&#xff09;。 1、mvn archetype:generate 通过mvn选择对应的脚手架可以快速生成初始化代码&#xf…

LangChain+ChatGLM整合LLaMa模型(二)

开源大模型语言LLaMa LLaMa模型GitHub地址添加LLaMa模型配置启用LLaMa模型 LangChainChatGLM大模型应用落地实践&#xff08;一&#xff09; LLaMa模型GitHub地址 git lfs clone https://huggingface.co/huggyllama/llama-7b添加LLaMa模型配置 在Langchain-ChatGLM/configs/m…

无涯教程-Lua - 调试语句

Lua提供了一个调试库&#xff0c;该库提供了所有原始函数供无涯教程创建自己的调试器。即使没有内置的Lua调试器&#xff0c;也有许多针对Lua的调试器&#xff0c;这些调试器由各种开发人员创建&#xff0c;其中许多开源。 下表列出了Lua调试库中可用的函数及其用法。 Sr.No.…

Gogs Git windos服务搭建指南

Gogs Git服务器搭建指南 背景&#xff1a; 近期在Linux 麒麟 v10 系统上开发&#xff1b;为了团队协同编程&#xff1b;选用了Git服务器&#xff1b;之前在windos开始时候使用的visualSVN server; visualSVN server从4.x.x.x开始收费&#xff1b;限制15个开发者用户&#xff…

【100天精通python】Day23:正则表达式,基本语法与re模块详解示例

目录 专栏导读 1 正则表达式概述 2 正则表达式语法 2.1 正则表达式语法元素 2.2 正则表达式的分组操作 3 re 模块详解与示例 4 正则表达式修饰符 专栏导读 专栏订阅地址&#xff1a;https://blog.csdn.net/qq_35831906/category_12375510.html 1 正则表达式概述 python 的…

MySQL系统数据库及常用工具指令介绍

文章目录 1.系统数据库2.常用工具2.1 -e指令2.2 mysqladmin指令2.3 mysqlbinlog指令2.4 mysqlshow指令2.5 mysqldump指令 数据备份2.6 mysqlimport/source 指令 数据导入 3.指令小结 1.系统数据库 2.常用工具 2.1 -e指令 不用登陆mysql直接执行脚本命令 mysql -h192.168.200.…