51nod 1421 最大MOD值 & codeforces 485D Maximum Value(思维 数学)
来源:互联网 发布:淘宝买家信誉度是什么 编辑:程序博客网 时间:2024/06/06 02:00
题意:有一个a数组,里面有n个整数。现在要从中找到两个数字(可以是同一个) ,使得 最大并且
1 ≤ n ≤ 2*10^5,1 ≤ ai ≤ 10^6
思路:5 6 7 8 9这样的序列只对于5来说的话,求对5的mod最大值,会发现其实并不需要求6%5,7%5,8%5,我只需要求5和10之间最大的那一个就可以,如果还有更大的就求10到15之间最大的,以此类推下去。(点击打开链接)
找这个倍数间的最大值,也就是找下于某个倍数的最大值,可以用前缀预处理,也可以用二分查找。
前缀处理代码:
#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 2e6+5;int a[maxn], f[maxn], n;int main(void){ while(cin >> n) { memset(f, 0, sizeof(f)); for(int i = 1; i <= n; i++) scanf("%d", &a[i]), f[a[i]] = a[i]; f[1] = 1; for(int i = 1; i < maxn; i++) if(!f[i]) f[i] = f[i-1]; sort(a+1, a+1+n); int t = unique(a+1, a+1+n)-a-1; n = t; int ans = 0; for(int i = 1; i <= n; i++) { for(int j = a[i]*2; j < maxn; j+=a[i]) if(f[j-1] > a[i]) //注意别忘 ans = max(ans, f[j-1]%a[i]); } printf("%d\n", ans); } return 0;}
二分代码:
#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 2e6+5;int a[maxn], n;int main(void){ while(cin >> n) { for(int i = 1; i <= n; i++) scanf("%d", &a[i]); sort(a+1, a+1+n); int ans = 0; for(int i = 1; i <= n; i++) { if(i == 1 || a[i] != a[i-1]) { for(int j = a[i]*2; j <= a[n]; j+=a[i]) { int p = lower_bound(a+1, a+1+n, j)-a-1; if(p > 0) ans = max(ans, a[p]%a[i]); } } ans = max(ans, a[n]%a[i]); } printf("%d\n", ans); } return 0;}
阅读全文
1 0
- 51nod 1421 最大MOD值 & codeforces 485D Maximum Value(思维 数学)
- 51NOD 1421 最大MOD值&&Codeforces 484 B. Maximum Value(筛法 + 二分)
- 【数学】51Nod 1421 最大MOD值
- Codeforces 485D Maximum Value【思维+数论】
- 51 nod 1421 最大mod值 思维题
- Codeforces 485D Maximum Value【思维+技巧枚举】
- 51nod 1421:最大MOD值
- [51nod 1421]最大MOD值
- 51nod-1421 最大MOD值
- 51nod 1421 最大MOD值
- 51Nod-1421-最大MOD值
- codeforces 485D. Maximum Value
- 【Codeforces Round 276 (Div 2)D】【数论 正难则反 枚举倍数 二分 O(nlogn)】Maximum Value n个数大数mod小数找最大余数
- 51nod 1421 最大mod值 (排序+二分搜索)
- codeforces D. Maximum Value
- CodeForces-485D Maximum Value(暴力)
- 51nod 1421 最大MOD值 (暴力枚举)
- [乱搞]51 Nod 1421——最大MOD值
- Qt pro文件配置多个子工程/子模块
- CloudStack管理员文档
- 由于安全加固引起的数据库不能访问
- 并发数据结构:谈谈volatile变量
- C++:fstream类中seekg()/seekp()与tellg()/tellp()的用法详解
- 51nod 1421 最大MOD值 & codeforces 485D Maximum Value(思维 数学)
- jdk 原地分析(3)java ConcurrentHashMap结构分析
- Spring 4.0 学习日记(8) ---AOP切面注解实现五种通知
- Storm流式处理框架概述
- mot文件的单行校验与全局校验
- Spring boot 实践(日志log4J,修改端口)
- SessionFilter session的创建和销毁监听
- 规避使用 vue 的 v-html 指令的方法
- C++实现单例模式