hdu 5400 Arithmetic Sequence(水题一道)
来源:互联网 发布:java虚拟机怎么安装 编辑:程序博客网 时间:2024/05/29 11:19
题目链接
http://acm.hdu.edu.cn/showproblem.php?pid=5400
Arithmetic Sequence
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 312 Accepted Submission(s): 163
Problem Description
A sequence b1,b2,⋯,bn are called (d1,d2) -arithmetic sequence if and only if there exist i(1≤i≤n) such that for every j(1≤j<i),bj+1=bj+d1 and for every j(i≤j<n),bj+1=bj+d2 .
Teacher Mai has a sequencea1,a2,⋯,an . He wants to know how many intervals [l,r](1≤l≤r≤n) there are that al,al+1,⋯,ar are (d1,d2) -arithmetic sequence.
Teacher Mai has a sequence
Input
There are multiple test cases.
For each test case, the first line contains three numbersn,d1,d2(1≤n≤105,|d1|,|d2|≤1000) , the next line contains n integers a1,a2,⋯,an(|ai|≤109) .
For each test case, the first line contains three numbers
Output
For each test case, print the answer.
Sample Output
125
题意就是给你一个输入n,d1,d2 和一个个数为n的数列。问你这个数列中成等差为d1或d2或者前一部分等差为d1,后一部分等差为d2的子序列有多少个。
需要注意的是有的变量题目中给的是10的五次方,要用int64,我因为这个WA了。
#include<stdio.h>int main(){ __int64 last,temp,d; __int64 n,b[2]; while(~scanf("%I64d",&n)) { __int64 flag=0,len=1; __int64 sum=n; scanf("%I64d%I64d",&b[0],&b[1]); scanf("%I64d",&last); for(int i=1;i<n;i++){ scanf("%I64d",&temp); d=temp-last; if(flag==0){ if(d==b[0]) len++; else if(d==b[1]){ len++; flag++; } else{ sum+=len*(len-1)/2; // printf("%I64d\n",sum); len=1; } } else if(flag==1){ if(d==b[1]) len++; else if(d==b[0]){ sum+=len*(len-1)/2; // printf("%I64d\n",sum); len=2; flag=0; } else{ sum+=len*(len-1)/2; // printf("%I64d\n",sum); len=1; flag=0; } } last=temp; } sum+=len*(len-1)/2; printf("%I64d\n",sum); } return 0;}
0 0
- hdu 5400 Arithmetic Sequence(水题一道)
- HDU 5400 Arithmetic Sequence
- hdu 5400 Arithmetic Sequence
- HDU 5400 Arithmetic Sequence
- HDU 5400 Arithmetic Sequence
- HDU 5400 Arithmetic Sequence
- hdu 5400 Arithmetic Sequence
- hdu 5400 Arithmetic Sequence
- hdu 5400 Arithmetic Sequence
- hdu(5400)——Arithmetic Sequence(想法题)
- HDU-5400 Arithmetic Sequence(数学 || DP)
- hdu 5400 Arithmetic Sequence(计数)
- hdu 5400 Arithmetic Sequence(重构数组)
- HDU 5400(Arithmetic Sequence-暴力找区间)
- HDU 5400 Arithmetic Sequence(数学,容斥)
- Hdu 5400 Arithmetic Sequence 数学推理
- hdoj Arithmetic Sequence 5400 (构造等差数列+技巧) 好题
- 【HDOJ 5400】Arithmetic Sequence
- 24 - Swap Nodes in Pairs
- HDU 2444 (二分图判定+最大匹配)
- hdu 2566 放大的X
- 架构里没有大写的“I”
- oracle存储过程--在应用程序中访问存储过程程序完整举例
- hdu 5400 Arithmetic Sequence(水题一道)
- UVA 11019 Matrix Matcher
- HDU5390 tree dfs序+线段树分层离线+字典树求异或最大值
- 视音频技术零基础学习笔记(四)及解码程序添加注释
- 活动的生命周期、四大布局(一)
- CSU 1671 经营小卖部
- JAVA中利用不规则二维数组输出杨辉三角形
- 2015-8-15比赛总结
- bzoj-3091 城市旅行