【codevs2205】等差数列
2024-08-28 20:41:12
题目大意:给定一个长度为 N 的序列,求这个序列中等差数列的个数。
题解:根据题意应该是一道序列计数 dp。设 \(dp[i][j]\) 表示以第 i 项结尾,公差为 j 的等差数列的个数,则状态转移方程为 \(dp[i][d]=\sum\limits_{j=1}^{i-1} dp[j][d]\)。由于一个单独的数字也是一个等差数列,因此需要将答案加 N。同时,答案的贡献需要在状态转移的时候计算,因为这里第二层枚举的并不是公差,而是元素下标,且最后进行计算也比较困难。
代码如下
#include <bits/stdc++.h>
using namespace std;
const int maxn=1010;
const int mod=9901;
int n,ans,a[maxn],dp[maxn][maxn<<1];
void read_and_parse(){
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
ans=n;
}
void solve(){
for(int i=1;i<=n;i++)
for(int j=1;j<i;j++){
int d=a[j]-a[i]+1000;//偏移量:公差最大是1000
dp[i][d]+=dp[j][d]+1;
ans=(ans+dp[j][d]+1)%mod;
}
printf("%d\n",ans);
}
int main(){
read_and_parse();
solve();
return 0;
}
最新文章
- 01.SQLServer性能优化之---水平分库扩展
- c51跑马灯
- archive成功了,但是在输出ipa时要求有账号密码
- [BZOJ1232][[Usaco2008Nov]安慰奶牛cheer(MST)
- http://www.cnblogs.com/baizhanshi/p/5593431.html
- 在server 2008/2003中 取消对网站的安全检查/去除添加信任网站
- Linux ext2文件系统
- preventDefault stopPropagation??
- 博客转移到 海胖网 http://haipz.com/ 希望你能支持我们!
- 解决从VIM复制出来的代码格式错乱或对齐的问题
- 给linux设置grub密码
- [Hadoop] - Mapreduce自定义Counter
- [内存管理]管理图解v0.1 v0.2 v0.3
- [转载] java中静态代码块的用法 static用法详解
- Mybatis数据源
- 华为P20无线投屏到电脑 绝地求生投射电脑
- Web API使用HttpResponseMessage与HttpResponseException的差异 HttpResponseMessage 返回类型
- Sitecore安装(手动方式)
- Nginx反向代理及简单负载均衡配置
- df命令/du命令/磁盘分区