题意:

问题是对于所有的长度为n,且$1<=ai<=n$的整数序列求 $\prod_{i=1}^{n-2}{max \{w_i,w_{i+1},w_{i+2}}\}$ 之和。

解法:

首先设dp状态为 $f(i,j,k)$ ,长度为$i+3$的,最大值为k,且最大值出现的位置集合为j的序列的乘积和。

显然可以由 $f(i-1,j2,k2)$ 转移到 $f(i,j,k)$,做前缀和优化,总效率$O(n^2 * 2^6)$

重新设计dp状态,改变j的定义,j表示最大值最后出现的位置。

这样对于状态 $f(i,j,k)$,我们确定了长度为$i+j$的序列的值,并且确定了$a(i+j+1)...a(i+2)<k$ 。

假设之前的三个数字最大值为$k2$,之后的最大值为k,这样的的话只要分为 $k>k2, k<k2, k=k2$ 讨论即可得出答案。

再加以前缀和优化,总效率$O(n^2)$。

 #include <iostream>
#include <cstdio>
#include <cstring> #define LL long long
#define N 2010
#define P 1000000007LL using namespace std; int n;
LL w[N],S[N],S2[N],f[N][][N]; LL sum(LL S[],int l,int r)
{
if(l>r) return 0LL;
LL ans = S[r]+P-S[l-];
if(ans>=P) ans-=P;
return ans;
} int main()
{
// freopen("test.txt","r",stdin);
while(~scanf("%d",&n))
{
for(int i=;i<=n;i++) scanf("%lld",&w[i]);
for(int i=;i<=n-;i++)
for(int k=;k<=n;k++)
f[i][][k]=, f[i][][k]=, f[i][][k]=;
for(int x1=;x1<=n;x1++)
for(int x2=x1;x2<=n;x2++) f[][][x2]++;
for(int x1=;x1<=n;x1++) f[][][x1]=;
for(int i=;i<=n-;i++)
{
for(int k=;k<=n;k++)
{
S[k] = S[k-] +f[i-][][k];
S2[k] = S2[k-]+f[i-][][k]*(k-)*(k-);
S2[k] += f[i-][][k]*(k-);
S2[k] += f[i-][][k];
}
for(int k=;k<=n;k++)
{
f[i][][k] += sum(S2,,k-);
f[i][][k] += f[i-][][k];
f[i][][k] += f[i-][][k];
f[i][][k] += f[i-][][k]*(k-)*(k-);
f[i][][k] += f[i-][][k]*(k-);
f[i][][k] += f[i-][][k];
f[i][][k] += sum(S,k+,n);
f[i][][k] += sum(S,k+,n)*k;
f[i][][k] += sum(S,k+,n)*k*k;
f[i][][k] = f[i][][k]%P * w[k]%P;
f[i][][k] = f[i][][k]%P * w[k]%P;
f[i][][k] = f[i][][k]%P * w[k]%P;
}
}
LL ans=;
for(int k=;k<=n;k++)
{
ans += f[n-][][k]*(k-)*(k-);
ans += f[n-][][k]*(k-);
ans += f[n-][][k];
ans %= P;
}
cout << ans << endl;
}
return ;
}

Even Three is Odd的更多相关文章

  1. [LeetCode] Odd Even Linked List 奇偶链表

    Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...

  2. Odd Even Linked List

    Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...

  3. LeetCode 328. Odd Even Linked List

    Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...

  4. tr:even 与tr:odd

    :even匹配所有索引值为偶数的元素,从 0 开始计数查找表格的1.3.5...行(即索引值0.2.4...)<table> <tr><td>Header 1< ...

  5. Leetcode Odd Even Linked List

    Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...

  6. CSS3伪类选择器:nth-child()(nth-child(odd)/nth-child(even))

    nth-child(odd):奇数 nth-child(even):偶数 使用时,如果是精确到数字时,切记是从同一级别的元素开始计算,而不是指定某个类才开始计算. 比如: <li>< ...

  7. [CareerCup] 5.6 Swap Odd and Even Bits 交换奇偶位

    5.6 Write a program to swap odd and even bits in an integer with as few instructions as possible (e. ...

  8. [Educational Codeforces Round 16]C. Magic Odd Square

    [Educational Codeforces Round 16]C. Magic Odd Square 试题描述 Find an n × n matrix with different number ...

  9. 328. Odd Even Linked List——多利用fake_head

    Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...

  10. 越狱Season 1-Episode 12:Odd Man Out

    Season 1-Episode 12:Odd Man Out -Sorry to keep you waiting. 抱歉让你等了半天 -Oh, it's, uh, not a problem. 嗯 ...

随机推荐

  1. nodejs 模板字符串

    范例1: for (var i=0;i<10;i++){ var data = `公司名:${i}`; console.log(data) } 输出: 实例2: var name = '丁香医生 ...

  2. Linux中du和df

    Linux运维过程中,常常发现du和df返回值不一样,偶尔会发现区别非常大. 特定情况下,可能df看到磁盘已满,可是du推断磁盘剩余空间非常大. 文件系统分配当中的一些磁盘块用来记录它自身的一些数据. ...

  3. C语言关键字—-sizeof 、typedef、const、static、register、extern、#define

    关键字:sizeof .#define.typedef.const.static.register.extern sizeof 1. 作用:求数据所占得内存空间大小 2. 本质:求数据得类型所占的内存 ...

  4. 晶振及COMS电路

    COMS电路:http://www.docin.com/p-246885507.html 简介:无源晶振和有源晶振 电子线路中的晶体振荡器也分为无源晶振和有源晶振两种类型.无源晶振与有源晶振的英文名称 ...

  5. 李洪强iOS开发之 - 项目架构

    李洪强iOS开发之 - 项目架构 01 - 在Appdelegate中设置跟控制器 //导入头文件

  6. 04 json,xml混合封装通信

    <?php class Response_json_xml{ public static function show($code,$message="",$data=arra ...

  7. oracle 10g 数据库与客户端冲突导致实例创建无监听问题

    同事在oracle 10g上创建一个实例,快结束时弹出一个错误,提示监听失败之类.查看服务,并无生成监听服务.于是删除重来,一连试了好几次,都是如此. 这真是令人心烦意乱.提示里面有说到端口1521, ...

  8. 淘宝客网站SEO及赚钱与揭密

  9. flume-ng script should first try finding java from PATH and then try using bigtop, instead of vice-versa

    [FLUME-1154] flume-ng script should first try finding java from PATH and then try using bigtop, inst ...

  10. BZOJ3627: [JLOI2014]路径规划

    BZOJ3627: [JLOI2014]路径规划 Description 相信大家都用过地图上的路径规划功能,只要输入起点终点就能找出一条最优路线.现在告诉你一张地图的信息,请你找出最优路径(即最短路 ...