CodeForces - 484BMaximum Value(hash优化)

个人心得:周测题目,一题没出,难受得一批。这个题目做了一个半小时还是无限WR,虽然考虑到了二分答案这个点上面了,

奈何二分比较差就想用自己的优化,虽然卡在了a=k*b+c,这里但是后面结束了这样解决还是超时了,看了一下网上的hash,思想一样

但是却优化了很多,服气

题目:

You are given a sequence a consisting of n integers. Find the maximum possible value of  (integer remainder of ai divided by aj), where 1?≤?i,?j?≤?n and ai?≥?aj.

Input

The first line contains integer n — the length of the sequence (1?≤?n?≤?2·105).

The second line contains n space-separated integers ai (1?≤?ai?≤?106).

Output

Print the answer to the problem.

Example

Input

33 4 5

Output

2

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<cstring>
 5 #include<iomanip>
 6 #include<algorithm>
 7 using namespace std;
 8 #define inf 1<<29
 9 #define infa 2000000+10
10 #define nu 50005
11 int n,m;
12 int book[infa];
13 int main()
14 {
15     scanf("%d",&n);
16     memset(book,-1,sizeof(book));
17     int maxnum;
18     for(int i=0;i<n;i++){
19        scanf("%d",&m);
20         book[m]=m;
21     }
22     for(int i=1;i<infa; i++)
23         if(book[i]!=i)
24         {
25             book[i]=book[i-1];
26         }
27         int sum=0;
28         for(int i=1;i<infa;i++)
29         {
30             if(book[i]==i)
31                 {
32                     for(int j=i*2-1;j<infa;j+=i)
33                         sum=max(sum,book[j]%i);
34                 }
35         }
36            cout<<sum<<endl;
37     return 0;
38 }

				
时间: 2024-08-10 09:42:11

CodeForces - 484BMaximum Value(hash优化)的相关文章

Codeforces 833B 线段树优化 dp

Codeforces  833B  The Bakery 题意: n 个数要分成 k 块,每块的价值是其不同数的个数,问价值和最大是多少. tags: dp[i][j]表示前 j 个数分成 i 块的最大权值和,转移: dp[i][j] = max( dp[i-1][k] + val[k+1][j] ) , k是 1~j . 但这个过程其实并不好转移,要利用累加的特点,用线段树进行优化 (感觉我不看题解是想不到的,2333) 大概就是,对于第 i 层,我们假定已经知道了第 i-1 层,也就是求出了

HashMap实现 Hash优化与高效散列

OverView Hash table based implementation of the Map interface. This implementation provides all of the optional map operations, and permits null values and the null key. (The HashMap class is roughly equivalent to Hashtable, except that it is unsynch

Palindrome Degree(CodeForces 7D)—— hash求回文

学了kmp之后又学了hash来搞字符串.这东西很巧妙,且听娓娓道来. 这题的题意是:一个字符串如果是回文的,那么k值加1,如果前一半的串也是回文,k值再加1,以此类推,算出其k值.打个比方abaaba,k值为3,abaxxaba,k值为1.现在,给出一个串,让你求这个串的所有前缀(包括本身)的k值的和. 如果考虑马拉车,那么先预处理出每个地方的最长回文长度,然后不断的截断,如果子串的回文长度大于其回文长度,那么k值加1,这样即可.但是马拉车写起来比较繁琐,没有模板我也没法手写. 这里提供hash

Codeforces 898F 字符串hash

F. Restoring the Expression 题意:给出一个字符串,要把它折分成三部分 a.b.c , 使得 a+b=c .输出任何一种可行情况. tags:字符串 hash 因为 a+b=c ,所以 lena.lenb 至少要有一个等于 lenc 或 lenc-1  .所以枚举 lenc,每次检验一下可不可行. 但每次都暴力检验肯定超时,这里把字符串hash 一下,根据 hash值 快速检验. 记一下模板: const int mod = 1e9+7; ll Hash[N], p[N

Memcached哈希性能优化(八)——总结报告

转自:http://m.blog.csdn.net/blog/hzwfz1989/39120005 Memcached哈希性能优化报告 一. Memcached分析 这两个月一直在memcached优化和找工作之间忙着,一边复习一边优化改代码还真是个让人觉得难以忘记的夏天.做这个项目确实收获了很多,不管是对Linux的系统的认识,还是对memcached的认识都比以前更近一步,另外后面由于添加分块hash,替换LRU算法和更改hash算法对源代码进行修改,一不小心就把原来的代码的测试改跪了,用g

redis的内存优化【转】

Redis所有的数据都在内存中,而内存又是非常宝贵的资源.对于如何优化内存使用一直是Redis用户非常关注的问题.本文让我们深入到Redis细节中,学习内存优化的技巧.分为如下几个部分: 一.redisObject对象 二.缩减键值对象 三.共享对象池 四.字符串优化 五.编码优化 六.控制key的数量 一. redisObject对象 Redis存储的所有值对象在内部定义为redisObject结构体,内部结构如下图所示. Redis存储的数据都使用redisObject来封装,包括strin

codeforces 786B Legacy

题目链接:codeforces 786B 线段树优化建边的模板题 注意到暴力建边是\(O(qlen)\),显然会超时 这种区间的问题一般把它放到线段树上有奇效,那我们就放到线段树上,线段树上的一个节点表示它所代表区间的连边情况 发现放在一棵线段树上效果好像也不明显,那就放在两棵线段树上 我们用一棵线段树来起到进入某个点的作用,另一棵起到走出某个点的作用 初始化时,第一棵线段树的父亲节点向儿子节点连边权为\(0\)的边,叶子结点向其代表的图上节点连边 具体的,对于一个节点\([l,r]\),将其连

redis 如何做内存优化?

edis所有的数据都在内存中,而内存又是非常宝贵的资源.对于如何优化内存使用一直是Redis用户非常关注的问题.本文让我们深入到Redis细节中,学习内存优化的技巧.分为如下几个部分: 一.redisObject对象 二.缩减键值对象 三.共享对象池 四.字符串优化 五.编码优化 六.控制key的数量 一. redisObject对象 Redis存储的所有值对象在内部定义为redisObject结构体,内部结构如下图所示. Redis存储的数据都使用redisObject来封装,包括string

东北育才10天大总结

老师们 Scanf的嗓门照例是最大的.恩. “我是山里的孩子……小的时候背书,整个山头都听得见……” 有一个哈师大附中的竞赛教练很……怎么说呢?接地气好了. Scanf说东北人很耿直,似乎确实是这样的.衡水的教练早就被遣返了…… “他啊,监考去了!” 虽然他不在,但还是不还手机.让衡水的人天天在电脑上颓废…… Scanf不在,你看我们就很老实.他到处“乱”玩,甚至跑到了国境线边,连火车票都忘了买,坐高铁去,乘绿皮火车回,路过长白山就去玩了一趟,结果暴风雪逼得他去吃“暴辣”的烤鱿鱼. “我看<三八