关闭

hdu5459(递推)

标签: acmdp网络赛
303人阅读 评论(0) 收藏 举报
分类:

链接:点击打开链接

题意:求第n个串中,每两个c的距离和

代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
const long long MOD=530600414;
long long dp[300005];
long long dis[300005],num[300005],len[300005];
int main(){                                     //求出所有c到末尾的距离和,和c的个数,和串的长度
    long long i,j,n,k,t,cas;
    len[1]=1,len[2]=2;
    num[1]=1,num[2]=0;
    for(i=3;i<=201314;i++){
        len[i]=(len[i-1]%MOD+len[i-2]%MOD)%MOD;
        num[i]=(num[i-1]%MOD+num[i-2]%MOD)%MOD;
    }                                           //个数和长度都可以类似斐波那契求出
    dis[1]=dis[2]=0,dis[3]=2;
    for(i=4;i<=201314;i++)                      //距离也可以由前两项推导出来
    dis[i]=(dis[i-1]%MOD+dis[i-2]%MOD+(num[i-2]%MOD*len[i-1]%MOD)%MOD)%MOD;
    dp[1]=dp[2]=dp[3]=dp[4]=0;      
    for(i=5;i<=201314;i++)                      //dp[i]=dp[i-1]+dp[i-2]+x;
    dp[i]=(dp[i-1]%MOD+dp[i-2]%MOD              //关键在于求出x
           +(dis[i-2]%MOD*num[i-1]%MOD)%MOD     //相当于i-1中每一个c到分界线加上分界线到i-2中每一个c
           +(num[i-2]%MOD*((len[i-1]%MOD*num[i-1]%MOD)%MOD-dis[i-1]%MOD)%MOD)%MOD)%MOD;
    scanf("%I64d",&t);                          //可以画一画仔细想一想
    for(cas=1;cas<=t;cas++){    
        scanf("%I64d",&n);
        printf("Case #%I64d: %I64d\n",cas,(dp[n]+MOD)%MOD);
    }
    return 0;
}

0
0
查看评论

hdu5459 Jesus Is Here 递推

hdu5459 Jesus Is Here 这道题题解上写的难度系数2 ,但是我们比赛的时候并没有写出来 -  - 思路: 考虑s[n-2]与s[n-1]合并的时候应该需要什么,需要什么我们就求什么 例如:s[5]+s[6]  我们把每个cff往后连算一对,假设我们已经把...
  • Hivoodoo
  • Hivoodoo
  • 2015-09-21 19:28
  • 744

HDU5459字符串斐波那契之递推

这题起初以为是一个找规律题,然后就各种打表找规律,然而最后发现并不能找到什么规律, 其实是一个递推题目,主要就是看你能不能想到怎么取递推: 题目所求所有C之间的距离,又因为相加的性质,两边的单独处理是不变的,每次拼接之后多出来的只是两边各一个的情况,有了点分治的味道。而左右两边的情况则不妨将这段距...
  • ONE_PIECE_HMH
  • ONE_PIECE_HMH
  • 2015-09-21 19:37
  • 318

hdu5459

题目链接:hdu5459 题目分析:求第n项中所有c坐标差的和。 题目分析: s[i]=s[i-1]+s[i-2],第i个字符串中的c字符可以分为两部分,来自第i-1个字符串(姑且叫做a)的和第i-2个字符串(姑且叫做b)。既然如此我们对于答案,也可以分几部分求出,a中的c坐标差的和,b中的...
  • shutdown113
  • shutdown113
  • 2017-12-10 15:50
  • 30

递推平均滤波

数据波动比较大,但又希望延迟比较小,可以尝试使用递推平均滤波 #define filter_num 5 float recursive_average_filter(uint16_t filter_object) { uint32_t sum = 0; float...
  • u010720661
  • u010720661
  • 2017-01-03 16:52
  • 680

递推方程的求解

在计算算法分析的过程中,难免会遇到复杂度的递推方程,求解递推方程是获得复杂度关于输入规模n的函数的必然途径。     目前,主要存在的求解递推方程的方法如下: 迭代法: 直接迭代法;换元迭代法;差消迭代法; 尝试法主定理迭代模型:递归树 一.迭代...
  • shengno1
  • shengno1
  • 2014-06-25 00:14
  • 2275

递推最小二乘法的MATLAB实现

<br /><br />构建差分方程  函数filter()     (1-2.7607q-1+3.8106q-2-2.6535q-3+0.9238q-4)x(n)=e(n)<br /><br />>>...
  • deco1515
  • deco1515
  • 2010-08-13 15:50
  • 5244

递归,递推,迭代的含义

递归,递推,迭代的含义 递归:程序调用自己的编程技巧叫做递归。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义 或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小 的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要...
  • ilblue
  • ilblue
  • 2016-10-12 21:18
  • 2065

基本算法思想之递推算法思想(C++语言描述)

递推算法是非常常用的算法思想,在数学计算等场合有着广泛的应用。递推算法适合有明显公式规律的场合。   递推算法基本思想 递推算法是一种理性思维莫斯的代表,根据已有的数据和关系,逐步推到而得到结果。递推算法的执行过程如下: (1)根据已知结果和关系,求解中间结果。 (2)判断是否达到要求,如...
  • QianShouYuZhiBo
  • QianShouYuZhiBo
  • 2013-10-06 22:26
  • 1497

ACM入门练习与递推小结

一些实用的套路需要了然于心。 查表法实例(点击进入->ACM查表): 1.HDU2004 成绩转换 2.I00030 Grades conversion 3.HDU1048 The Hardest Problem Ever 4.HDU2502 月之数 5.HDU2005 第...
  • tigerisland45
  • tigerisland45
  • 2016-07-09 19:33
  • 1293

递推题集

hdu1100 Trees Made to Order hdu1143 Tri Tiling hdu1207 汉诺塔II hdu1246 自共轭Ferrers图 hdu1249 三角形 hdu1267 下沙的沙子有几粒? hdu1292 "下沙野骆驼"ACM夏令营...
  • u013487051
  • u013487051
  • 2014-05-25 11:37
  • 768
    个人资料
    • 访问:182904次
    • 积分:7021
    • 等级:
    • 排名:第3900名
    • 原创:536篇
    • 转载:0篇
    • 译文:0篇
    • 评论:49条
    友情链接
    博客专栏