题目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 ;
}

最新文章

  1. CSS制作凹环特效
  2. 【分块打表】bzoj1662 [Usaco2006 Nov]Round Numbers 圆环数
  3. mysql中IFIND_IN_SET和like的区别
  4. Ubuntu 14.04 单机安装 CEPH
  5. 一些Perl例程(全部手打并执行过)
  6. Leetcode: Strobogrammatic Number III
  7. ubuntu14 eclipse luna 无法显示菜单 , 解决方案
  8. 1.6.4 Uploading Structured Data Store Data with the Data Import Handler
  9. [SharePoint 2010]关于基于声明(Claims)的用户认证模式
  10. Eclipse NDK 配置,无需安装Cygwin
  11. Android开源工具库
  12. USB Video Class及其实现
  13. React使用笔记(3)-React Event Listener
  14. [kuangbin带你飞]专题四 最短路练习 POJ 1797 Heavy Transportation
  15. BananaPi python-Mysql 操作库
  16. Object类型知识总结,你掌握了多少?
  17. [UIKit学习]05.关于plist
  18. HDU 2037 今年暑假不AC(贪心,区间更新,板子题)
  19. 模板——无旋Treap
  20. 【运维】在Windows上使用IIS方向代理配置Websocket

热门文章

  1. oauth2中org.springframework.security.core.userdetails.User无法转换为封装的AuthorizationInfoBean
  2. Java编程思想(二)一切都是对象
  3. poj2947(高斯消元法解同余方程组)
  4. Apache + PHP Yii框架跨域访问API
  5. 【计算机网络】-传输层-Internet传输协议-TCP
  6. Let&#39;s Code
  7. varchar、nvarchar
  8. 3037 插板法+lucas
  9. centos中拉取postgre
  10. c# redis密码验证笔记