首页 > 其他分享 >[ABC362E]Count Arithmetic Subsequences

[ABC362E]Count Arithmetic Subsequences

时间:2024-07-15 18:40:54浏览次数:8  
标签:Count 数字 Subsequences DP 序列 Arithmetic

题目大意

给定\(N\)个数字的序列,每个元素为\(a[i]\),问长度为i的数字序列是由多少个子序列构成的?
定义数字序列:
如果\(a[i]-a[j]==a[k]-a[i]\),则\(a[j],a[i],a[k]\)构成数字序列

数据范围

\(N \leq 80, a_i \leq 10^9\)

题解

一看到这个数据范围,就和\(a[i]\)没关系,肯定是和\(N\) 有关系,是\(N^4或者N^3\)
要构成数字序列,是一个等差序列,肯定和等差有关,如果我们枚举等差的话,肯定会超时
这个数据范围,感觉可以区间DP,既然是区间DP,状态定义应该为
\(f[i][j][k]\)表示\(i\)和\(j\)之间构成长度为\(l\)的数字序列的子序列的个数,要求\(a[i]\)和\(a[j]\)是数字序列的头和尾
根据头尾,我们能算出来等差是多少,\(i和j\)这个区间里面并不是每个元素都要参与
如何转移呢?
\(f[i][j][l]=f[i][j][l]+f[i][k][l-1] if a[i]……a[k],a[j]是等差序列的话\)
这样的话,这个题就解决了

启示

最重要的是一定要看数据范围,决定用什么样的DP

标签:Count,数字,Subsequences,DP,序列,Arithmetic
From: https://www.cnblogs.com/sdfzls/p/18303744

相关文章

  • AT_arc166_d [ARC166D] Interval Counts
    我们可以将题转化为选择若干区间,给区间中的每个\(y_i\)减一,这样我们就可以将问题转化为差分了。我们枚举区间的左端点,从左到右枚举,当我们枚举到\(i\)时,显然如果当前差分数组\(d_i>0\),那么我们需要将其减去\(d_i\),这样我们获得了一个向后加总共\(d_i\)个\(1\)的机会,此时......
  • 题解:CodeForces 843A Sorting by Subsequences[模拟/排序]
    CodeForces843AA.SortingbySubsequencestimelimitpertest:1secondmemorylimitpertest:256megabytesinputstandardinputoutputstandardoutputYouaregivenasequence\(a_1, a_2, ..., a_n\)consistingofdifferentintegers.Itisrequiredtos......
  • E. Count Paths
    原题链接题解前言:这题可以只调用一遍dfs。首先,以颜色为color_u的u为根结点的子树内,颜色与u颜色相同的结点不能与u的其余子树中颜色为color_u的结点相连接。我们需要一个num数组,num[i]表示当前结点i,有多少个结点可以与他连接。接下来,我们任取一个结点为根结点去跑dfs。假设......
  • E. Count Paths
    原题链接题解对于这种无序点对统计问题,我们可以遍历每一个点,然后计算其与之前遍历过的点的配对\(dfs\)遍历,设\(num[i]\)代表遍历到当前节点时,有多少可与当前节点配对的、节点颜色为\(i\)的、且\(dfs\)序小于当前节点(即之前遍历过的)的节点维护方法:每往子节点遍历,由于子......
  • 1004 Counting Leaves(dfs):邻接表版:写的太多了
    Afamilyhierarchyisusuallypresentedbyapedigreetree.Yourjobistocountthosefamilymemberswhohavenochild.InputSpecification:Eachinputfilecontainsonetestcase.Eachcasestartswithalinecontaining0<N<100,thenumberofnode......
  • C. Count Triangles
    原题链接题解我们知道,三角形成立的条件是任意两边之和都要大于第三边,因为这里已经明确了三条边的大小关系,即\(x\leqy\leqz\)所以,该三角形成立的条件是\(x+y>z\)看到\(5e5\)我们不难想到遍历其中某条边的长度这里我遍历的是\(y\)遍历\(y\),找到最小的\(x\)使得至少......
  • [题解] [ABC221H] Count Multiset - DP
    [ABC221H]CountMultiset题面翻译输入两个正整数\(N,M\),并存在一个集合,问你一个长度为\(k\)的合法集合存在多少个?你需要回答\(k\)的值为\(1\)到\(N\)的每种情况。一个合法的集合定义指长度为\(k\),元素和为\(N\),每一个数字在集合中出现的次数都小于等于\(M\)的集......
  • 解析Count函数
    #count(*),count(主键),count(字段)和count(1)有什么区别?哪个性能最好?绝对不是count(*)最慢!哪种count性能最好?我先直接说结论:要弄明白这个,我们得要深入count的原理,以下内容基于常用的innodb存储引擎来说明。count()是什么?count()是一个聚合函数,函数的参数不......
  • 【转】-Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
    Java并发编程:CountDownLatch、CyclicBarrier和Semaphore该博客转载自​Matrix海子​的​Java并发编程:CountDownLatch、CyclicBarrier和Semaphore在java1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下......
  • 【转】-Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
    Java并发编程:CountDownLatch、CyclicBarrier和Semaphore该博客转载自​Matrix海子​的​Java并发编程:CountDownLatch、CyclicBarrier和Semaphore在java1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下......