zoukankan      html  css  js  c++  java
  • hdu 5459 递推

    中等递推题:

    ans[i] = ans[i - 2] + ans[i - 1] + ( sum[i - 2] + cnt[i - 2] * len[i - 1] ) * cnt[i - 1] - sum[i - 1] * cnt[i - 2];

    其中,ans[i]代表答案,cnt[i]代表ith个message中有多少个cff,sum[i]代表ith个message中cff的c的位置的和(从右向左index依次为1,2...),len[i]代表ith个message的长度。

     1 #include <iostream>
     2 #include <cstring>
     3 #include <cstdio>
     4 using namespace std;
     5 
     6 typedef long long ll;
     7 const int MOD = 530600414;
     8 const int N = 201315;
     9 int len[N];
    10 int sum[N];
    11 int ans[N];
    12 int cnt[N];
    13 
    14 void init()
    15 {
    16     len[1] = 1;
    17     len[2] = 2;
    18     len[3] = 3;
    19     cnt[1] = cnt[2] = 0;
    20     cnt[3] = 1;
    21     sum[1] = sum[2] = 0;
    22     sum[3] = 3;
    23     ans[1] = ans[2] = ans[3] = 0;
    24     for ( int i = 4; i < N; i++ )
    25     {
    26         len[i] = ( len[i - 2] + len[i - 1] ) % MOD;
    27         cnt[i] = ( cnt[i - 2] + cnt[i - 1] ) % MOD;
    28         sum[i] = ( ( sum[i - 2] + ( ( ll ) cnt[i - 2] * len[i - 1] ) % MOD ) % MOD + sum[i - 1] ) % MOD;
    29         int tmp1 = ( ans[i - 2] + ans[i - 1] ) % MOD;
    30         int tmp2 = ( ( ( ll ) ( ( sum[i - 2] + ( ( ll ) cnt[i - 2] * len[i - 1] ) % MOD ) % MOD ) * cnt[i - 1] ) % MOD - ( ( ll ) sum[i - 1] * cnt[i - 2] ) % MOD + MOD ) % MOD;
    31         ans[i] = ( tmp1 + tmp2 ) % MOD;
    32     }
    33 }
    34 
    35 int main ()
    36 {
    37     init();
    38     int t;
    39     scanf("%d", &t);
    40     for ( int _case = 1; _case <= t; _case++ )
    41     {
    42         int n;
    43         scanf("%d", &n);
    44         printf("Case #%d: %d
    ", _case, ans[n]);
    45     }
    46     return 0;
    47 }
  • 相关阅读:
    代码解析&Filter用户授权例子
    session
    软件工程结对作业2
    软件工程结对作业1
    软件工程第三次作业
    软件工程第二次作业
    软件工程第一次作业
    KMP算法
    哈希表
    Mysql事物隔离级别
  • 原文地址:https://www.cnblogs.com/huoxiayu/p/4822007.html
Copyright © 2011-2022 走看看