华中农大网络同步赛
2016-05-15 20:15
459 查看
Problem J: Arithmetic Sequence
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 1804 Solved: 308
[Submit][Status][Web
Board]
Description
Giving a number sequence A withlength n, you should choosing m numbers from A(ignore
the order) which can form an arithmetic sequence and make m as large as possible.
Input
There are multiple test cases. In each test case, the first line contains a positiveinteger n. The second line contains n integers
separated by spaces, indicating the number sequence A. All the integers are positive and not more than 2000. The input will end by EOF.
Output
For each test case, output the maximum asthe answer in one line.
Sample Input
5 1 3 5 7 10 8 4 2 7 11 3 1 9 5
Sample Output
4 6
HINT
In the first test case, you should choose 1,3,5,7 to form the arithmetic sequence and its length is 4.In the second test case, you should choose 1,3,5,7,9,11 and the length is 6.
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#include<vector>
#include<map>
#include<queue>
#include<set>
using namespace std;
const int N=5e4+9;
#define pb push_back
int a[100001];
int q[100001];
int haha[100001];
int main()
{
int n;
while(scanf("%d",&n)==1)
{
memset(q,0,sizeof(q));
memset(haha,0,sizeof(haha));
int maxa=-10;
int maxaa=-10;
for(int i=1;i<=n;i++)
{
cin>>a[i];
haha[a[i]]++;
}
sort(a+1,a+1+n);
for(int i=1;i<=n;i++)
{
if(haha[a[i]]>maxaa)
{
maxaa=haha[a[i]];
}
}
for(int i=1;i<=a
-a[1];i++)
{
int l=1,r=1;
while(l<=n&&r<=n)
{
if(a[r]-a[l]==i)
{
q[i]++;
l=r;
r++;
}
else
{
if(a[r]-a[l]>i)
{
if(maxa<q[i])
{
maxa=q[i];
}
l++;
r--;
q[i]=0;
}
r++;
}
}
if(maxa<q[i])
{
maxa=q[i];
}
}
if(maxa+1>maxaa)
cout<<maxa+1<<endl;
else
cout<<maxaa<<endl;
}
return 0;
}
/*7
1 2 3 4 6 8 10
*/
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<set>
#include<vector>
#include<string.h>
#include<map>
const int N=1e4+5;
using namespace std;
int s[3000];
int c[3000];
int d[3000];
int e[3000];
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
memset(c,0,sizeof(c));
memset(d,0,sizeof(d));
int a;
for(int i=0;i<n;i++)
{
scanf("%d",&a);
c[a]++;
}
int l=0;
int m=0;
for(int i=0;i<=2000;i++)
{
if(c[i]>m) m=c[i];
if(c[i]) s[l++]=i;
}
for(int i=0;i<l;i++)
{
for(int j=i+1;j<l;j++)
{
int x=s[j]-s[i];
if(x<0)d[-x]=1;
else d[x]=1;
}
}
l=0;
for(int i=0;i<=2000;i++)
{
if(d[i]) e[l++]=i;
}
for(int j=0;j<l;j++)
{
for(int i=1;i<=2000;i++)
{
int cnt=1;
int k=i;
if(c[k])
{
while(c[k+e[j]]&&k+e[j]<2000)
{
cnt++;
k=k+e[j];
}
if(cnt>m)
{
m=cnt;
}
}
}
}
cout<<m<<endl;
}
return 0;
}
一个个枚举最好,我是想不出来吗
相关文章推荐
- Contest1009 - 华中农业大学第四届程序设计大赛网络同步赛C,H,J
- 网络请求方式(数据为聚合上的星座信息)
- 基于node-http-proxy的脚本:功能更新,现在支持把GFW屏蔽的URL作快速404失败返回处理;支持把墙外的CDN url映射为本地host
- 如何加载网络套接字版本
- ios swift http json
- Android关于网络连通状况的系统广播
- Http1.0、Spdy和Http2.0的对比
- AngulaJS $http post 注意事项
- TCP的连接建立与连接释放
- tcpping指定网卡类型为any结果不准确问题
- 本地yum仓库和http方式的yum仓库。
- javaweb学习总结(4)------Http协议
- http review
- 华中农业大学第四届程序设计大赛网络同步赛Problem I: Catching Dogs
- linux网络传输文件
- 华中农业大学第四届程序设计大赛网络同步赛Problem J: Arithmetic Sequence
- 理解LSTM网络
- 华中农业大学第四届程序设计大赛网络同步赛 J
- 【JAVA】通过URLConnection/HttpURLConnection发送HTTP请求的方法(一)
- hzau华中农业大学第四届程序设计大赛网络同步赛F.LCS