HDU 5265 pog loves szh II (二分查找)
【题目链接】click here~~
【题目大意】在给定 的数组里选两个数取模p的情况下和最大
【解题思路】:
思路见官方题解吧~~
弱弱献上代码:
Problem : 5265 ( pog loves szh II ) Judge Status : Accepted
RunId : 13961817 Language : G++ Author : javaherongwei
Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta #include <stdio.h>
#include <math.h>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
const int N=1e6;
__int64 num[N],n,m,p,k,ans,cnt,sum;
int my_pow(int a,int n,int mod)
{
int ans=a,tmp=1;
while(n)
{
if(n&1) tmp*=ans;
ans*=ans%mod;
n>>=1;
}
return tmp;
}
int main()
{
while(~scanf("%I64d%I64d",&n,&p))
{
for(int i=0; i<n; ++i)
{
scanf("%I64d",&num[i]);
num[i]%=p;
}
sort(num,num+n);
__int64 maxx=(num[n-1]+num[n-2])%p;///另外一种情况最大值
__int64 maxx2;
for(int i=0; i<n; ++i)
{
maxx2=upper_bound(num,num+n,p-num[i]-1)-num-1;
if((num[i]+num[maxx2])<p&&(maxx2>i))
maxx=max((num[i]+num[maxx2])%p,maxx);
}
printf("%I64d\n",maxx);
}
return 0;
}
/*
因为序列中的数可能超过P,所以将全部的数读入后进行取模操作。
之后将取模后的全部数从小到大排序。题目要求我们求不同位置的两个数的和在取模意义下的最大值。
而如今全部数都是小于P且排好序的。因此设我随意选了两个数是X和Y,显然0≤X+Y≤2P−2。
若X+Y<P,则这次选数的答案就是X+Y,若X+Y≥P。则答案是X+Y−P。
那么我们能够这样做:将当中最大的两个数字相加取模,设为一个可能的答案记录在ANS中。 这个答案是另外一种情况的最大值。再对排序好的序列进行枚举,对每一个枚举到的数,
找出最大的数,使这个数与枚举到的数相加后的和最大且小于P,将之记为可能的答案并于之前找到的最大值ANS进行比較。 这个答案是第一种情况中的可能的最大值。而普通的枚举是要超时的,可是我们发现假设从小到大枚举第一个数,
那么还有一个匹配的数显然是从大到小的,因此能够用一个NOW记录当前还有一个匹配的数的位置,
每次枚举时NOW递减至符合条件。能够做到O(n)的时间复杂度。
综上所述,时间复杂度为高速排序的O(nlogn),空间复杂度为O(n)。注意一些特殊情况如同一个位置不能多次选。 4 4
1 2 3 0
4 4
0 0 2 2
Sample Output
3
2
*/
HDU 5265 pog loves szh II (二分查找)的更多相关文章
- HDU 5265 pog loves szh II 二分
题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5265 bc(中文):http://bestcoder.hdu.edu.cn/contests ...
- hdu 5265 pog loves szh II
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5265 pog loves szh II Description Pog and Szh are pla ...
- hdu 5265 pog loves szh II STL
pog loves szh II Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php? ...
- HDU 5265 pog loves szh II (技巧)
题意:给一个数字序列,要求再其中找到两个数,其和再模p的结果是最大的,求此和. 思路:先将输入的元素模p,排序.结果可能有两种情况: (1)a+b大于p:肯定由两个最大的数之和来产生. (2)a+b小 ...
- 贪心/二分查找 BestCoder Round #43 1002 pog loves szh II
题目传送门 /* 贪心/二分查找:首先对ai%=p,然后sort,这样的话就有序能使用二分查找.贪心的思想是每次找到一个aj使得和为p-1(如果有的话) 当然有可能两个数和超过p,那么an的值最优,每 ...
- hdu 5266 pog loves szh III(lca + 线段树)
I - pog loves szh III Time Limit:6000MS Memory Limit:131072KB 64bit IO Format:%I64d & %I ...
- hdu 5264 pog loves szh I
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5264 pog loves szh I Description Pog has lots of stri ...
- hdu 5264 pog loves szh I 水题
pog loves szh I Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?p ...
- HDU 5266 pog loves szh III(区间LCA)
题目链接 pog loves szh III 题意就是 求一个区间所有点的$LCA$. 我们把$1$到$n$的$DFS$序全部求出来……然后设$i$的$DFS$序为$c[i]$,$pc[i]$为$c ...
随机推荐
- COGS.1200 ganggang的烦恼
背景 Zhang Gangrui 年纪大了,记性不好,保险箱的密码记不住了,他只记得密码是一个数的阶乘各个位的数相加的和,最后还有个T或F,代表这个数是否为素数,正好,你到他家去了,他请你帮他这个忙, ...
- 【java_设计模式】建造者模式
应用场景对生成对象进行链式配置好处:按需配置对象,灵活修改默认配置,比构造方法创建对象更直观. public static void init() {if (okHttpClient == null) ...
- QList模板类常用接口函数
插入操作:insert()函数原型:void QList::insert(int i, const T &value) 在索引后插入值 i:索引 value:插入值 Example: QLis ...
- js 给url添加时间戳 解决浏览器缓存
//解决浏览器缓存 function timestamp(url){ // var getTimestamp=Math.random(); var getTimestamp=new Dat ...
- IIS部署SSL证书后提示不可信的解决方案
IIS部署SSL证书后提示不可信的解决方案 本帖最后由 wosign-support3 于 2015-7-17 17:18 编辑 第一步:打开mmc——点击文件——添加删除管理单元——证书——计算 ...
- 【讲●解】火车进出栈类问题 & 卡特兰数应用
火车进出栈类问题详讲 & 卡特兰数应用 引题:火车进出栈问题 [题目大意] 给定 \(1\)~\(N\) 这\(N\)个整数和一个大小无限的栈,每个数都要进栈并出栈一次.如果进栈的顺序为 \( ...
- 洛谷——P3918 [国家集训队]特技飞行
P3918 [国家集训队]特技飞行 神犇航空开展了一项载客特技飞行业务.每次飞行长N个单位时间,每个单位时间可以进行一项特技动作,可选的动作有K种,每种动作有一个刺激程度Ci.如果连续进行相同的动作, ...
- 「 Luogu P2196 」 挖地雷
# 解题思路 跑 $\text{n}$ 遍 $\text{spfa}$ 并记录路径,找到比当前最长路长的就更新答案,并且将路径也更新,注意起点的处理. # 附上代码 #include <iost ...
- CentOS7安装Tomcat9并设置开机启动
1.下载 Tomcat 9 CentOS 7 下创建目录并下载文件: cd /usr/local/ mkdir tomcat cd tomcat wget http://mirrors.hust.ed ...
- db2事务日志已满解决办法
查看事务日志配置(MICRO_11为数据库名称): db2 get db cfg for MICRO_11 运行结果: 日志文件大小(4KB) (LOG ...