51nod 1421 最大mod值 (排序+二分搜索)
来源:互联网 发布:淘宝义卖作文 编辑:程序博客网 时间:2024/06/05 07:21
传送门:51nod 1421
题目大意:
找出 n 个数中 a%b 的最大值,其中 a>=b 。
思路:
直接枚举会超时,我们可以选择在排序后,枚举每个模数和该模数的倍数,在数组里二分查找第一个比该倍数大的数,同时维护最大值即可。这样就可以降低时间的耗费。
PS:由于直接查找模数的倍数 a[i]*j 可能会找到一个和它相等的数,所以可以二分查找 a[i]*j-1,如果找到的数不大于当前模数则继续下次循环。
代码:
#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>using namespace std;int main(){int i,j,n,pos,ans,a[200010];while(~scanf("%d",&n)){for(i=0;i<n;i++) scanf("%d",&a[i]);sort(a,a+n); //排序 ans=0;for(i=0;i<n;i++){ //枚举模数 for(j=1;;j++){ //枚举模数的倍数pos=upper_bound(a,a+n,j*a[i]-1)-a; //二分查找 if(a[pos-1]<a[i]) continue; //如果找到的数比当前模数小则不处理 if(a[pos-1]%a[i]>ans) ans=a[pos-1]%a[i]; //更新最大值 if(pos==n) break; //如果找到最后一位则退出 }}printf("%d\n",ans);}return 0;}
阅读全文
1 0
- 51nod 1421 最大mod值 (排序+二分搜索)
- 51NOD 1421 最大MOD值&&Codeforces 484 B. Maximum Value(筛法 + 二分)
- 51nod 1421:最大MOD值
- [51nod 1421]最大MOD值
- 51nod-1421 最大MOD值
- 51nod 1421 最大MOD值
- 51Nod-1421-最大MOD值
- 【数学】51Nod 1421 最大MOD值
- 51nod 1421 最大MOD值 (暴力枚举)
- 51 nod 1421 最大mod值 思维题
- [乱搞]51 Nod 1421——最大MOD值
- 51nod 1421 最大MOD值 & codeforces 485D Maximum Value(思维 数学)
- 【51Nod1421】最大MOD值
- 51Nod-2006-飞行员配对(二分图最大匹配)
- 51nod 2006 二分图最大匹配
- HRBUST2381:MOD(二分)
- 二分排序(搜索)树
- 51 nod 1046 A^B Mod C(快速幂取余)
- Tensorflow使用记录,API使用报错处理
- STM32F4的GPIO模式
- SQLXXXXX=XX
- 13周Map
- LeetCode 136 SingleNumber
- 51nod 1421 最大mod值 (排序+二分搜索)
- Laravel 执行 php artisan route:cache 时报错 LogicException
- 浅析深究什么是中间件
- Git remote
- Shell脚本实例(一) 监控一个程序的运行情况
- matlab中plot函数画图的相关问题
- Java 模拟并发操作
- js事件全解
- 关于使用StickyDecoration分组错乱问题