1491: Problem C
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 243 Solved: 131
[ Submit][ Status][ Web Board]
Description
Chieh和喜欢的妹子去唱歌,然而每一首歌的歌词会有个间隔时间。。严重的问题来了。Chieh唱歌速度超快,他每次唱歌必须是连续的时间段。。比如歌词的时间为 1,2,3,4,6,7,8;他只能从1唱到4或则从6唱到8。。不间断,则时间为4 或为3。现在他想知道他最长能唱几句。。。可以从任意时间开始,但是只能唱一次。
Input
T 组数 T<=100
n 歌词数量 <=1000000
n 个整数t 时间 t<=10^9 时间递增
Output
对于每组测试数据,输出对应的答案。
Sample Input
2
10
1 2 3 4 5 7 8 9 1011
5
1 3 5 7 9
Sample Output
5
1
【解析】
刚开始被大的数据吓到了10的九次方,担心超时,所以我准备用vector做,没想到居然过了,其实这道题的话就是只要后面的比前面的多1,那么我们count就加1,如果不是了那么我们的count就变1#include<iostream> #include<string> #include<cstdio> #include<vector> using namespace std; vector<long long>a; int main() { int t,n,i,count,max; long long m; scanf("%d",&t); while(t--) { count=1; max=0; a.clear(); scanf("%d",&n); for(i=0;i<n;i++) { scanf("%lld",&m); a.push_back(m); if(i>=1) { if(a[i]-a[i-1]==1) count++; if(count>max) max=count; if(a[i]-a[i-1]!=1) count=1; } } printf("%d\n",max); } return 0; }