牛客练习赛11 D-求距离
2018-01-27 14:03
246 查看
时间限制:C/C++ 1s,其他语言2s空间限制:C/C++ 32768K,其他语言65536K64bit IO Format: %lld
题目描述
给你一个1 -> n的排列,现在有一次机会可以交换两个数的位置,求交换后最小值和最大值之间的最大距离是多少?输入描述:
第一行一个数n 之后一行n个数表示这个排列
输出描述:
输出一行一个数表示答案
解题思路:用的二分法,很简单
#include<iostream> #include<cmath> #include<string> #include<algorithm> int n; int a[105], b[105]; int ma, mi; int max(int a, int b) { if (a >= b) return a; else return b; } int min(int a, int b) { if (a <= b) return a; else return b; } void search() { int l = 1; int r = n+1; int mid; int ans; while (r - l >= 1) { mid = (l + r) / 2; if (b[ma] + mid <= n || b[ma] - mid >= 1 || b[mi] + mid <= n || b[mi] - mid >= 1) { ans = mid; l = mid+1; } else { r = mid; } } printf("%d\n", ans); } int main() { while (~scanf("%d", &n)) { mi = 300; ma = -1; for (int i = 1; i <= n; i++) { scanf("%d", &a[i]); b[a[i]] = i; mi = min(mi, a[i]); ma = max(ma, a[i]); } search(); } return 0; }
有问题欢迎私聊评论,么么哒~时间比较紧,只写了这一个题
相关文章推荐
- JAVA程序练习---小车行走距离
- 牛客网NowCoder 牛客练习赛11-A.假的线段树 D. 求距离
- matlab练习程序(距离变换)
- JAVA程序练习---小车行走距离
- 17.09.24 牛客网练习总结:二维数组中的查找,替换空格
- 牛客练习赛11E(最近点对)
- 【练习7.4】使用直方图陆地移动距离EMD区分不同光线条件下的图片cvCalcEMD2
- 牛客练习赛10 C-最长回文
- JAVA程序练习---小车行走距离
- 【牛客带你学编程C++方向】项目练习第1期
- 赛码网练习——小球的距离
- 牛客练习错题总结
- JAVA程序练习---小车行走距离
- 牛客-2018年全国多校算法寒假训练营练习比赛(第四场)
- 牛客练习赛13F
- 刷题笔记:牛客字符串专项练习4
- 你与高手的距离,并非只差了一万小时练习
- 牛客练习(一)
- 刷题笔记:牛客字符串专项练习5
- 牛客网 | 牛客练习赛12B迷宫