Codeforces 484B Maximum Value(排序+二分)
題目連結:
http://codeforces.com/problemset/problem/484/B
題意:
求a[i]%a[j] (a[i]>a[j])的餘數的最大值
分析:
要求餘數的最大值很明顯a[i]越接近a[j]的倍數則餘數越大 ,因此我們將所有的元素從大到小排序 ;
然後列舉a[j]的倍數 ,二分查詢小於a[i]倍數的最大值,然後更新餘數的最大值。
程式碼如下:
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int a[200010];
inline int mymax(int a,int b){
return a > b? a: b;
}
inline int bin_search(int l,int r,int val)//二分查詢小於val的最大值
{
int mid;
while(l<=r){
mid=(l+r)>>1;
if(a[mid]==val) return mid-1;
else if(a[mid]>val) r=mid-1;
else l=mid+1;
}
return r;
}
int main()
{
int n;
while(~scanf("%d",&n)){
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);
int mmax = 0;
for(int i=0;i<n-1;i++){
if(a[i]==0||a[i]!=a[i-1]){//剪枝。如果之前出現過了就不用查了;
int tmp=a[i]+a[i];
while(tmp<=a[n-1]){
int pos=bin_search(0,n-1,tmp);
mmax = mymax(mmax,a[pos]%a[i]);
tmp+=a[i];
}
mmax =mymax(mmax,a[n-1]%a[i]);
}
}
printf("%d\n",mmax);
}
return 0;
}
相關文章
- Map根據Value排序排序
- 排序演算法:二分插入排序排序演算法
- 排序演算法——二分插入排序排序演算法
- Map按照key和value進行排序排序
- Python dict sort排序 按照key,valuePython排序
- Codeforces Round #361 (Div. 2) C 二分
- Codeforces Round #321 (Div. 2) B 二分
- codeforces448D Multiplication Table(二分答案)
- Codeforces Round 903 (Div. 3) F. Minimum Maximum Distance
- c# 對JSON字串排序(KEY/VALUE)C#JSON字串排序
- MapReduce 按照Value值進行排序輸出排序
- java8 實現map以value值排序Java排序
- 【Algorithm】二分排序小技巧Go排序
- Codeforces Round #361 (Div. 2) D RMQ+二分MQ
- Codeforces Round #336 (Div. 2) C 二分+dp
- 排序演算法之——二分插入排序演算法排序演算法
- Codeforces 872C Maximum splitting:數學【分解成合數之和】
- CodeForces 887 E. Little Brother(計算幾何+二分)
- nyoj 2354 同時也是 codeforces Robin Hood(二分)
- CF 375B Maximum Submatrix 2[預處理 計數排序]排序
- 【二分,三分】Codeforces Round #403 The Meeting Place Cannot Be Changed
- Codeforces Round #360 (Div. 2) C DFS判斷二分圖
- 順序表實現二分排序排序
- Codeforces Round #316 (Div. 2) D DFS+vector+二分
- 【TJOI2016】【bzoj4552】排序(二分答案+線段樹01排序)排序
- 求眾數、排序演算法、二分法排序演算法
- E - Maximum Glutton
- 希爾排序使用直接插入排序、二分插入排序的C++程式碼實現演算法排序C++演算法
- 《演算法筆記一》複雜度、排序、二分、異或演算法筆記複雜度排序
- Dictionary key 根據ASCII排序並拼接key和value並HMACMD5-iOSASCII排序MacACMiOS
- oracle 9i dataguard 由MAXIMUM PERFORMANCE模式變為MAXIMUM PROTECTIONOracleORM模式
- Leetcode Maximum SubarrayLeetCode
- Algorithm for Maximum Subsequence Sum zGo
- Cat, Fox and Maximum Array Split
- 第二章 :查詢與排序-------二分查詢的遞迴解法排序遞迴
- 二分查詢和折半插入排序一塊說說-很合適~~~排序
- 前端學習資料結構1 二分排序樹(BST)前端資料結構排序
- LOW_VALUE、HIGH_VALUE、ENDPOINT_VALUE轉換--UTL_RAW、DBMS_STATS.CONVERT_RAW_VALUE