codeforces#562 Div2 C---Increasing by modulo【二分】
2024-09-05 07:13:12
题目:http://codeforces.com/contest/1169/problem/C
题意:
有n个数,每次可以选择k个,将他们+1并对m取模。问最少进行多少次操作,使得序列是非递减的。
思路:
太久没刷题遭报应了。这两天能补多少是多少吧。
二分答案。然后看看这个序列是不是非递减的。
对于第i个数,如果$a[i]\leq prev\leq a[i]+mid$,说明在mid次操作内他肯定比他前一个数要大。
当然因为取模 所以实际上还应该包括$a[i]\leq prev+m\leq a[i]+mid$
但如果$prev > a[i]+mid$说明mid不够大,则l = mid +1
否则r = mid
要死了二分都不会了。
//#include<bits/stdc++>
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<stdlib.h>
#include<queue>
#include<map>
#include<stack>
#include<set> #define LL long long
#define ull unsigned long long
#define inf 0x7f7f7f7f using namespace std; int n, m;
const int maxn = 3e5 + ;
int num[maxn]; int main()
{
scanf("%d%d", &n, &m);
for(int i = ; i < n; i++){
scanf("%d", &num[i]);
}
int l = , r = m;
int ans;
while(l < r){
bool flag = false;
int mid = (l + r) / , prev = ;
for(int i = ; i < n; i++){
int x = num[i], y = num[i] + mid;
if(x <= prev && y >= prev || x <= prev + m && y >= prev + m){
continue;
}
if(prev >= x){
flag = true;
break;
}
prev = num[i];
}
if(flag){
l = mid + ;
}
else{
//ans = mid;
r = mid;
}
}
printf("%d\n", l);
return ;
}
最新文章
- CSS制作凹环特效
- 【分块打表】bzoj1662 [Usaco2006 Nov]Round Numbers 圆环数
- mysql中IFIND_IN_SET和like的区别
- Ubuntu 14.04 单机安装 CEPH
- 一些Perl例程(全部手打并执行过)
- Leetcode: Strobogrammatic Number III
- ubuntu14 eclipse luna 无法显示菜单 , 解决方案
- 1.6.4 Uploading Structured Data Store Data with the Data Import Handler
- [SharePoint 2010]关于基于声明(Claims)的用户认证模式
- Eclipse NDK 配置,无需安装Cygwin
- Android开源工具库
- USB Video Class及其实现
- React使用笔记(3)-React Event Listener
- [kuangbin带你飞]专题四 最短路练习 POJ 1797 Heavy Transportation
- BananaPi python-Mysql 操作库
- Object类型知识总结,你掌握了多少?
- [UIKit学习]05.关于plist
- HDU 2037 今年暑假不AC(贪心,区间更新,板子题)
- 模板——无旋Treap
- 【运维】在Windows上使用IIS方向代理配置Websocket
热门文章
- oauth2中org.springframework.security.core.userdetails.User无法转换为封装的AuthorizationInfoBean
- Java编程思想(二)一切都是对象
- poj2947(高斯消元法解同余方程组)
- Apache + PHP Yii框架跨域访问API
- 【计算机网络】-传输层-Internet传输协议-TCP
- Let&#39;s Code
- varchar、nvarchar
- 3037 插板法+lucas
- centos中拉取postgre
- c# redis密码验证笔记