codeforces1169C 二分答案+思维

2023-05-16

1169C

1700的题,然而比赛的时候没有做出来。。
题意:给你一个n表示序列长度为n,还有一个m表示这个序列的最大值小于m
然后对这个数组进行多次操作,一次操作为 对ai,aj,ap,等k个数进行+1且对m取模,最后让这个序列变成一个不递减的序列,可以证明通过x次操作你是一定可以使这个数组符合条件,现在的问题是求得最少的操作次数x。
思路:从题意可以看出这个题目的答案一定是在0~m之间,因为对于任何一个数组操作至多m次之后都可以变成0000的数组,所以对答案进行二分,然后对每个操作次数x进行分析,可以得出以下结论:
mx表示前i个数的最大值
1、如果这个数小于前面数组的最大值,那么只需要a[i]+x>=mx就行
2、如果这个数大于前面数组的最大值,那么如果这个数
a[i]+x>m :表示取模之后变小了,这里又分两种情况:
1、如果a[i]+x-m<mx, 意味着如果不进行更新,a[i]就不能等于mx,所以要进行更新,即mx=a[i].
2、如果a[i]+x-m>=mx,就意味着,我可以不加那么多x,即mx不进行更新
a[i]+x<m:如果加上x之后没有变小,那么需要更性mx的值,即mx=a[i]。
这种情况综上可以得出,如果a[i]+x-m<mx,那么mx需要进行更新,反之这不要,代码就出来了。

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <cmath>
#include <queue>
#include <set>
#include <map>
#include <stack>
#include <unordered_map>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
#define rep(i, a, n) for(int i = a; i < n; i++)
#define per(i, a, n) for(int i = n-1; i >= a; i--)
#define IOS std::ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
#define INF 1ll<<60
#define fopen freopen("file.in","r",stdin);freopen("file.out","w",stdout);
#define fclose fclose(stdin);fclose(stdout);
#define PI 3.14159265358979323846
const int maxn = 3e5+10;
inline int read(){
	int x=0,f=1;char ch=getchar();
	while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();}
	while (isdigit(ch)){x=x*10+ch-48;ch=getchar();}
	return x*f;
}
int a[maxn];
int n, m;
bool check(int x){
	int mx=0;
	for(int i = 0; i < n; i++){
		if(a[i]<=mx){
			if(mx-a[i]>x){
				return 0;
			}
		}else {
			if(a[i]+x-m<mx) mx=a[i];
		}
	}
	return 1;
}
int main(){
	// fopen;
	n=read(), m=read();
	for(int i = 0; i < n; i++) a[i]=read();
	int l = 0, r=m;
	int ans = 0;
	while(l<=r){
		int mid = (l+r)/2;
		if(check(mid)){
			ans = mid;
			r = mid-1;
		}else l = mid+1;
	}
	printf("%d\n", ans);
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

codeforces1169C 二分答案+思维 的相关文章

随机推荐

  • 基于STM32CubeIDE实现外部中断按钮控制LED灯亮

    小白入门 xff0c 记录一下学习体验及过程 原文可能图片不清晰 xff0c 如需下载原WORD文档 xff0c 请右转 xff1a 链接 xff1a https pan baidu com s 17X8iB865ZgHgGYnUJ1bSR
  • 【python+pytorh自然语言处理】AttributeError: 'Example' object has no attribute 'label'错误提示

    基于nlp自然语言预测模型 在建模训练过程中遇到如下问题 xff0c 供大家学习 xff0c 借鉴如下问题1 数据集字符编码问题 xff0c 96 39 utf 8 39 codec can 39 t decode byte 0xb1 in
  • 自适应 sprintf源码

    span class comment include 34 stdafx h 34 span span class preprocessor define INCLUDE STRING span span class preprocesso
  • CCF CSP认证2016年9月,NO.3 炉石传说

    炉石传说 不知道现在题目公开了没有 xff0c 最近考完试比较闲 xff0c 所以开通了博客 xff0c 写写自己考试时候这道题的思路吧 根据真实 魔兽世界 炉石传说 的游戏建模改编 xff0c 以下是题目的回忆 xff08 若有不准 xf
  • 数据库表设计-第三方登录用户表结构设计

    说起用户表 xff0c 大概是每个应用 网站立项动工 xff08 码农们 xff09 考虑的第一件事情 用户表结构的设计 xff0c 算是整个后台架构的基石 如果基石不稳 xff0c 待到后面需求跟进了发现不能应付 xff0c 回过头来反复
  • MacBook Air 怎么访问局域网内的共享文件夹

    方案一 xff1a 1 打开浏览器 xff0c 输入 smb 对方主机IP地址 xff0c 例如 xff1a smb 192 166 1 100 2 允许打开访达 3 加载一会后会出现下图 xff0c 选择对方共享的文件夹 xff0c 点击
  • C#语法小知识(三)枚举类型enum

    枚举类型声明一系列常数 xff0c 用于表示这个类型的变量可能会在这些常数里变化 我们在这篇文章里讲一下枚举类型的几个用法 一个简单的枚举类型的定义 xff1a enum TestEnum x y z 而使用也很简单 xff1a TestE
  • 微信开放平台之第三方平台代公众号发起网页授权

    正式讲解之前我想问一个问题 xff1a 微信开放平台第三方平台为什么会出现 xff1f 或者说微信的开发人员为什么弄出个开放平台的第三方平台出来 xff1f 我的理解是 xff1a 原本公众号开发时只能给一家公司开发 xff0c 因为配置的
  • Undefined symbol RTC_DateStruct (referred from main.o).

    被自己蠢哭了 我是两个工程文件合在一起用的 一个工程中的 c文件变量定义之后是在另一个 c文件中共用的所以用了 extern RTC TimeTypeDef RTC TimeStruct extern RTC DateTypeDef RTC
  • 关于Win10下安装Linux ubuntu子系统遇到的几个问题

    1 首先是ubuntu下载 xff0c 在Win10自带的应用商店Microsoft Store搜索 ubuntu 即可找到 2 安装完成后启动 ubuntu 后 Installing this may take a few minutes
  • 嵌入式学习-STM32F103ZE中断配置

    目录 一 中断概念 二 中断类型 三 NVIC 四 中断优先级 五 中断编程顺序 1 使能中断请求 2 中断优先级配置 3 初始化NVIC InitTypeDef结构体 4 中断服务函数 六 总结 一 中断概念 中断是指计算机运行过程中 x
  • haproxy的统计报告功能

    HAProxy的统计报告 简介 HAProxy有统计报告功能 可以让使用者通过web页面概览后端服务器的概况 甚至更改它们的状态 配置 vim etc haproxy haproxy cfg listen statistics bind 9
  • win10 Remote Host 调试 ubuntu18.04 中有libXXX.so库,报/usr/lib/ld 找不到-lxxx

    按照下图操作 xff0c 找到自己的交叉编译环境中的g 43 43 和gcc工具可以解决
  • CDN和Akamai

    最近在看分布式相关的东西 xff0c 在看到HTTP Caching的时候 xff0c 提到CDN和Akamai 以前对这些东西都是一无所知啊 记录一下吧 http zh wikipedia org wiki E5 85 A7 E5 AE
  • 在Centos7环境安装GitLab

    https about gitlab com install centos 7 1 Install and configure the necessary dependencies On CentOS 7 and RedHat Oracle
  • 免费的天气api

    这是最近网上查询到关于天气的api xff0c 大部分的接口都是收费 xff0c 有部分接口虽然免费 xff0c 但查询到的信息量特别不全 但好在有几个免费接口倒是不错 xff0c 倒是可以使用 免费的天气api 高德地图 天气查询免费ap
  • Enlightenment官网介绍

    Enlightenment和EFL的官方网站 xff1a http www enlightenment org Enlightenment xff1a Enlightenment 是一个旗舰项目 它曾经是一个不起眼的 X11 窗口管理器 W
  • Enlightenment 是窗口管理器,Enlightenment 是桌面外壳,Enlightenment是创建漂亮应用程序的材料

    Enlightenment 是窗口管理器 xff0c Enlightenment 是桌面外壳 xff0c Enlightenment是创建漂亮应用程序的材料 xff0c Enlightenment xff0c 或者简单的一个 e xff0c
  • ubuntu安装nvidia显卡驱动报错:”The CC version check failed”

    参考过不少博主回答的问题 xff0c 但都存在很多问题 xff0c 或者比较麻烦 xff0c 给大家推荐一下我自己尝试解决后比较好的一个方案 xff1a 出现这个问题的原因是因为驱动可能比较新 xff0c 系统内核的gcc版本和编译器的默认
  • codeforces1169C 二分答案+思维

    1169C 1700的题 xff0c 然而比赛的时候没有做出来 题意 xff1a 给你一个n表示序列长度为n xff0c 还有一个m表示这个序列的最大值小于m 然后对这个数组进行多次操作 xff0c 一次操作为 对ai xff0c aj x