HDU - 5265 pog loves szh II (二分或者贪心)
这题有两种做法,一种是二分,我很快就想到了(nlogn的复杂度,10^6的n).
第二种就是贪心了,我觉得这个不那么容易想到,好像速度要快一些.
首先,我们找答案的两个数x,y,有两种,一种是x+y>p,一种是x+y< p ,(读入时把每一个都mod p) 那么第一种如果存在,那么最大值一定是数组最大值加次大值的mod.第二种的最大值,就是我们要关心的事情了.
第一种我们直接使用二分,每一个a[i],我们都二分的搜索他的最大希望值p-a[i]-1,这个二分是我手写的,因为不知道upperbound和lowerbound怎么在这里使用了,找到小于等于希望值的第一个数,这是显然的思路.当然这题我wa了几万次,问题就出在这里了,没有考虑清楚如果搜索到的位置和i重合时要特殊处理,如果找到位置重合但不是0,那么就把找到位置左移一个,如果是0,那就不算他了(因为如果要算,他也只能是第一种情况).
第二种是一种逼近的贪心思想,每一次都要找到使a[i]+temp< p最大的temp值,也就是从数组的两头夹过来,注意处理接头时,我也wa了很多次.
代码见下
/* xzppp */
#include <iostream>
#include <vector>
#include <set>
#include <queue>
#include <map>
#include <algorithm>
#include <stdio.h>
#include <string.h>
#include <list>
#include <math.h>
#include <iomanip>
using namespace std;
#define FFF freopen("in.txt","r",stdin);freopen("out.txt","w",stdout);
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define mp make_pair
typedef long long LL;
typedef unsigned long long ULL;
const int MAXN = 100000;
const int INF = 0x7fffffff;
const int MOD = 1e9+7;
LL a[MAXN+17];
int main()
{//FFFLL n,p;while(scanf("%lld%lld",&n,&p)!=EOF){memset(a, 0, sizeof(a));LL ans = -INF;for (int i = 0; i < n; ++i){scanf("%lld",a+i);a[i] = a[i]%p;}sort(a, a+n);ans = (a[n-1]+a[n-2])%p;for (int i = 0; i < n; ++i){LL temp = p-a[i]-1;int l = 0,r = n;while(r-l>1){int mid = (l+r)/2;if(a[mid]>temp)r = mid;elsel = mid;}if(l!=i)ans = max((a[i]+a[l])%p,ans);else if(l==0)ans = max((a[i]+a[n-1])%p,ans);elseans = max((a[i]+a[l-1])%p,ans);}printf("%lld\n",ans);}return 0;
}
/* xzppp */
#include <iostream>
#include <vector>
#include <set>
#include <queue>
#include <map>
#include <algorithm>
#include <stdio.h>
#include <string.h>
#include <list>
#include <math.h>
#include <iomanip>
using namespace std;
#define FFF freopen("in.txt","r",stdin);freopen("out.txt","w",stdout);
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define mp make_pair
typedef long long LL;
typedef unsigned long long ULL;
const int MAXN = 100000;
const int INF = 0x7fffffff;
const int MOD = 1e9+7;
LL a[MAXN+17];
int main()
{//FFFLL n,p;while(scanf("%lld%lld",&n,&p)!=EOF){memset(a, 0, sizeof(a));LL ans = -INF;for (int i = 0; i < n; ++i){scanf("%lld",a+i);a[i] = a[i]%p;}sort(a, a+n);ans = (a[n-1]+a[n-2])%p;int rt = n-1;for (int i = 0; i < n&&i <rt; ++i){while(a[i]+a[rt]>=p) rt--;if(i<rt) ans = max(ans,(a[i]+a[rt])%p);}printf("%lld\n",ans);}return 0;
}
HDU - 5265 pog loves szh II (二分或者贪心)相关推荐
- 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(二分)
题意: 给出n,p,n个数,从中取两个数 a,b , 求出( a + b )% p 的最大值. 解析: 先把每个数%p , 可以发现两个数加起来,要么 < p,要么 ≥ p,然后小于 2p. 那 ...
- HDOJ 5265 pog loves szh II
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5265 题意很简单,给我们n个数,和一个p,从n个数中取两个数A和B,问我们能够得到的最大的(A+B)% ...
- 贪心/二分查找 BestCoder Round #43 1002 pog loves szh II
题目传送门 1 /* 2 贪心/二分查找:首先对ai%=p,然后sort,这样的话就有序能使用二分查找.贪心的思想是每次找到一个aj使得和为p-1(如果有的话) 3 当然有可能两个数和超过p,那么an ...
- BestCoder Round #43 第二题 pog loves szh II
pog loves szh II Accepts: 219 Submissions: 834 Time Limit: 4000/2000 MS (Java/Others) Memory Lim ...
- 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 5266 pog loves szh III【LCA RMQ】
B - pog loves szh III 题目:添加链接描述 题意:找出区域l到r的LCA->找l和r的LCA 分析: 链式前向星存树,先用dfs处理结点倍增关系. 然后从循环处理较深结点,直 ...
- HDU 5266 pog loves szh III (LAC)
问题描述 pog在与szh玩游戏,首先pog在纸上画了一棵有根树,这里我们定义1为这棵树的根,然后szh在这棵树中选了若干个点,想让pog帮忙找找这些点的最近公共祖先在哪里,一个点为S的最近公共祖先当 ...
最新文章
- WebSocket 集群解决方案
- Android studio使用心得(二)— 打包签名apk发布
- 【控制】《多智能体系统一致性协同演化控制理论与技术》纪良浩老师-第8章-二阶连续时间多智能体系统加权一致性
- Keras梯度累积优化器:用时间换取效果
- javascript 获取应用程序根路径
- AWVS/Nessus/Burpsuite的简单使用
- 超过响应缓冲区限制_Nginx如何限制并发连接数和连接请求数?
- Python使用matplotlib设置pandas绘制的饼状图扇形标签
- VBScript编程教程 [下]
- 牛顿柯特斯公式及复合形式、龙贝格求积公式,高斯勒让德求积公式
- php后端自学,【后端开发】自学php有哪些好的方法
- 基于python的证件照_不到20行实现Python代码即可制作精美证件照
- 小木工 ____农民工纪事之一
- 用计算机刻录光盘,刻录光盘,教您如何使用计算机将文件刻录到光盘上.
- [python]用flask框架搭建微信公众号的后台
- 从用AI+VR虚拟教室穿越到中国说起,看红头文件下,互联网教育公司的AI招牌
- 2014年中南大学复试-安全路径
- 中国天气网api接口
- 上海航芯|电池均衡如何提高电池寿命
- 经典乘法口诀表(C++)
热门文章
- 论坛报名 | 语音与自然语言处理的最新突破和前沿趋势。道翰天琼认知智能平台为您揭秘新一代人工智能。
- 华为服务器清除系统日志,清除服务器日志
- java 车牌号验证正则表达式_使用正则表达式验证手机号、车牌号
- 更换Dell笔记本512G SSD硬盘克隆到2T SSD步骤,不需要重做系统
- 《程序员2010精华本》
- 使用高通QXDM工具实现Android设备网络制式更改(如仅注册LTE网络)(独家!)
- 18个优秀的在线图片编辑服务网站 | 可能吧
- 【微信小程序】随手笔记
- WPS拼音指南乱用;切换域代码乱用
- 天刀开放冬至垂钓新弄法 冬季暖心五年夜运动-新浪天边明月刀专区