题目大意:给定一个长度为 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;
}

最新文章

  1. 01.SQLServer性能优化之---水平分库扩展
  2. c51跑马灯
  3. archive成功了,但是在输出ipa时要求有账号密码
  4. [BZOJ1232][[Usaco2008Nov]安慰奶牛cheer(MST)
  5. http://www.cnblogs.com/baizhanshi/p/5593431.html
  6. 在server 2008/2003中 取消对网站的安全检查/去除添加信任网站
  7. Linux ext2文件系统
  8. preventDefault stopPropagation??
  9. 博客转移到 海胖网 http://haipz.com/ 希望你能支持我们!
  10. 解决从VIM复制出来的代码格式错乱或对齐的问题
  11. 给linux设置grub密码
  12. [Hadoop] - Mapreduce自定义Counter
  13. [内存管理]管理图解v0.1 v0.2 v0.3
  14. [转载] java中静态代码块的用法 static用法详解
  15. Mybatis数据源
  16. 华为P20无线投屏到电脑 绝地求生投射电脑
  17. Web API使用HttpResponseMessage与HttpResponseException的差异 HttpResponseMessage 返回类型
  18. Sitecore安装(手动方式)
  19. Nginx反向代理及简单负载均衡配置
  20. df命令/du命令/磁盘分区

热门文章

  1. Remote 桌面的win2003 servre端设定
  2. vs如何将工程配置,保存到属性表
  3. Redis学习之路(三)之Redis主从和哨兵模式
  4. libgdx学习记录25——Rectangle与Circle是否重叠
  5. javascript source map 的使用
  6. WebShell代码分析溯源(第1题)
  7. 一个http请求发送到后端的详细过程
  8. C++ 继承和派生介绍
  9. BugPhobia开发篇章:Beta阶段第III次Scrum Meeting
  10. Spring scope注解