HDU ACM 5265 pog loves szh II
来源:互联网 发布:java方法覆盖 编辑:程序博客网 时间:2024/06/03 15:38
题意:求数组中两个不同元素使得两元素和%p最大。
分析:
1、序列中的数可能超过P,将所有数读入后进行模P操作。
2、将取模后的所有数从小到大排序,现在所有数都是小于P且排好序的。
3、假设任意选了两个数X和Y,则0≤X+Y≤2P-2。若X+Y<P,则答案就是X+Y,若X+Y≥P,答案是X+Y-P。 从小到大枚举第一个数,另一个匹配的数显然是从大到小的,可以用POS记录当前另一个匹配的数的位置,每次枚举时POS递减至符合条件。可以做到O(n)的时间复杂度。这题还可以使用二分等方法。
#include<iostream>#include<algorithm>using namespace std;__int64 a[100005];int main(){int n,i,pos;__int64 p,max;while(scanf("%d%I64d",&n,&p)==2){for(i=0;i<n;i++){scanf("%I64d",&a[i]);a[i]%=p;}sort(a,a+n);max=(a[n-1]+a[n-2])%p; //确保取到和大于p时的最大值,因为经过输入处理后两个数的和最大只能是2p-2。pos=n-1;for(i=0;i<pos;i++) //从两端逼近{max=max>(a[i]+a[pos])%p?max:(a[i]+a[pos])%p;if(a[i]+a[pos]>=p){pos--;i--;}}printf("%I64d\n",max);}return 0;}
0 0
- HDU ACM 5265 pog loves szh II
- HDU 5265 pog loves szh II
- hdu 5265 pog loves szh II
- hdu 5265 pog loves szh II
- hdu 5265 pog loves szh II
- hdu-5265pog loves szh II
- hdu 5265 pog loves szh II
- hdu 5265 pog loves szh II
- HDU 5265 pog loves szh II(二分)
- HDU 5265 pog loves szh II (二分查找)
- HDOJ 5265 pog loves szh II
- pog loves szh III HDU
- Bestcoder Round#43pog loves szh II
- HDU 5264 pog loves szh I
- HDU 5266 pog loves szh III
- hdu 5264pog loves szh I
- hdu 5266 pog loves szh III(LCA)
- HDU 5266 pog loves szh III
- 一点对C语言中跳过scanf语句的理解
- 一个优秀的程序员需要擅长数学吗
- PHP 构造方法说明
- UIButton 导航栏属性
- c++中 dialog、bitmap等资源,由一个项目完全复制到另一个项目的方法
- HDU ACM 5265 pog loves szh II
- 【Oracle篇】Navicat连接Oracle数据库
- 二叉树的建立与遍历
- QImage 与 cv::Mat 之间的相互转换
- C++经典面试题(十)
- 实战黑帽seo从网站搭建到泛站快速排名
- storyboard
- 关于程序员学英语的经验
- Java基础 System类