http://acm.hdu.edu.cn/showproblem.php?pid=5459

题意:

S(1) = c,S(2) = ff, S(3) = cff,之后S(i) = S(i-1)+S(i-2)。

现在给出n,求S(n)中任意两个c之间距离的总和。

思路:
现在假设第i-1和第i-2要合成第i个,计算S(i)的过程如下:

ans[i] = ans[i-1]+ans[i-2]+add,现在要求就是add新增的部分值。

假设S(i-2)中有2个c,下标分别为{a,b}(下标以1为起始点计)总长度为len2,S(i-1)中有3个c,下标为别为{x,y,z},总长度为len1。

那么新增的部分就是(len2-a)+x+ (len2-a)+y + (len2-a)+z +(len2-b)+x +(len2-b)+y +(len2-b)+z,也就是(len2-a+len2-b)*3 + (x+y+z)*2。

这里的话(len2-a+len2-b)就是S(i-2)中所有c点到末端的距离之和,3是S(i-1)中c的个数,x+y+z是S(i-1)中所有c点到始端的距离之和,2是S(i-2)中c的个数。

所有维护四个值进行递推,len是长度,sum是所有c点到末端的距离之和(到始端的距离之和可以通过len和sum计算出来),num是c的个数,ans是最终答案。

 #include<iostream>
#include<cstdio>
using namespace std;
const int mod = ;
const int maxn = +; long long len[maxn],num[maxn],sum[maxn],ans[maxn]; void init()
{
len[] = , num[] = , sum[] = , ans[] = ;
len[] = , num[] = , sum[] = , ans[] = ;
len[] = , num[] = , sum[] = , ans[] = ;
len[] = , num[] = , sum[] = , ans[] = ;
for(int i=;i<=;i++)
{
len[i] = (len[i-]+len[i-])%mod;
num[i] = (num[i-]+num[i-])%mod;
ans[i] = (ans[i-]+ans[i-]+sum[i-]*num[i-]+(((len[i-]*num[i-]-sum[i-])%mod)*num[i-])%mod)%mod;
sum[i] = ((sum[i-]+sum[i-])%mod+(num[i-]*len[i-])%mod)%mod;
}
} int main()
{
//freopen("in.txt","r",stdin);
int T;
int kase = ;
init();
scanf("%d",&T);
while(T--)
{
int n;
scanf("%d",&n);
printf("Case #%d: %lld\n",++kase,ans[n]);
}
return ;
}

HDU 5459 Jesus Is Here(递推)的更多相关文章

  1. HDU 5459 Jesus Is Here (递推,组合数学)

    有点麻烦的递推,递推的原则:向小的问题方向分解,注意边界. 字符串的递推式为 定义f为Si中的总方案数 首先可以得到 fi=fi-1+fi-2+组合(si-2,si-1) 然后考虑Si-2和Si-1之 ...

  2. ACM学习历程—HDU 5459 Jesus Is Here(递推)(2015沈阳网赛1010题)

    Sample Input 9 5 6 7 8 113 1205 199312 199401 201314 Sample Output Case #1: 5 Case #2: 16 Case #3: 8 ...

  3. Hdu 5459 Jesus Is Here (2015 ACM/ICPC Asia Regional Shenyang Online) 递推

    题目链接: Hdu 5459 Jesus Is Here 题目描述: s1 = 'c', s2 = 'ff', s3 = s1 + s2; 问sn里面所有的字符c的距离是多少? 解题思路: 直觉告诉我 ...

  4. hdu 5459 Jesus Is Here 数学

    Jesus Is Here Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid= ...

  5. HDU 5950 Recursive sequence 【递推+矩阵快速幂】 (2016ACM/ICPC亚洲区沈阳站)

    Recursive sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

  6. 题解报告:hdu 2084 数塔(递推dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这 ...

  7. HDU 5965 三维dp 或 递推

    题意:= =中文题 思路一:比赛时队友想的...然后我赛后想了一下想了个2维dp,但是在转移的时候,貌似出了点小问题...吧?然后就按照队友的思路又写了一遍. 定义dp[i][j][k],表示第i列, ...

  8. HDU 2569(简单的递推)

    彼岸 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...

  9. hdu 2050 折线分割平面 (递推)

    折线分割平面 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

随机推荐

  1. Codeforce 834A - The Useless Toy

    Walking through the streets of Marshmallow City, Slastyona have spotted some merchants selling a kin ...

  2. Autel Maxisys MS908CV Description

    The new Autel MaxiSys CV Heavy Duty Diagnostic is built on the powerful MaxiSys 908 platform and pro ...

  3. Django后端项目---- rest framework(4)

    一.分页 试问如果当数据量特别大的时候,你是怎么解决分页的? 方式a.记录当前访问页数的数据id 方式b.最多显示120页等 方式c.只显示上一页,下一页,不让选择页码,对页码进行加密 1.基于lim ...

  4. 怎样从外网访问内网Node.js?

    本地安装了一个Node.js,只能在局域网内访问,怎样从外网也能访问到本地的Node.js呢?本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Node.js 默认安装的Node.js端口 ...

  5. Linux sed 命令字符串替换使用方法详解

    1. sed替换的基本语法 sed 's/原字符串/替换字符串/' 单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线”\”进行转义.2. 单引号” ‘ ’”是没有办法用反斜线” ...

  6. 前端异步的一种方法库:axios

    关于axios,其实原本在做开发的几年里并不知道,一直使用的也都是jquery的ajax.后来因为一个同事的述说,我才知道有这么个库,基于promise的http库. 看来,以前的我确实比较井底之蛙了 ...

  7. BeanCreationException: Error creating bean with name 'transactionManager' defined

    BeanCreationException: Error creating bean with name 'transactionManager' defined in \WEB-INF\classe ...

  8. centos7开放及查看端口

    centos7中的防火墙改成了firewall,使用iptables无作用,开放端口的方法如下: firewall-cmd --zone=public --add-port=80/tcp --perm ...

  9. 作为php了解一下共享内存的概念及优缺点

    共享内存是一种在相同机器中两个正在运行的进程之间共享和传递数据的有效方式,不同进程之间共享的内存通常安排为同一段物理内存:顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存.一个进程可创建一 ...

  10. Linux内核Socket参数调优

    可调优的内核变量存在两种主要接口:sysctl命令和/proc文件系统,proc中与进程无关的所有信息都被移植到sysfs中.IPV4协议栈的sysctl参数主要是sysctl.net.core.sy ...