HDU 5459 Jesus Is Here (递推,组合数学)
有点麻烦的递推,递推的原则:向小的问题方向分解,注意边界。
字符串的递推式为

定义f为Si中的总方案数
首先可以得到
fi=fi-1+fi-2+组合(si-2,si-1)
然后考虑Si-2和Si-1之间的组合

为了得到小的问题,进行拆分

为了以后表示的方便和逻辑上的清晰,把Si~Si之间的组合总长度定义出来

因为这里的si-2和si-2的中间还有一段Si-3
所以其组合总长度就可以表示为

Ci表示Si中cff出现的次数,Li表示Si的长度
定义一个函数ccl

最后还剩下一个部分Si-2和Si-3
定义

至此,总方案已经可以表示出来

然后再从顶往下的逐步细化
考虑g(i)的计算

这里面也有个递推,首先可以得到

为了方便再定义一个函数

显然这个容易计算得多
剩下的组合也可以表示出来了

最后一部分f12(i)

#include<bits/stdc++.h>
using namespace std; #define PB push_back
#define MP make_pair
#define fi first
#define se second typedef long long ll; const int N = +;
ll f[N], c[N], l[N], g[N];
const int Mod = ; inline ll f21(int i) { return f[i]-f[i-]-f[i-]; }
inline ll ccl(int i,int j,int k) { return c[i]*c[j]%Mod*l[k]; }
inline ll f12(int i) { return g[i-]+f21(i-)+ccl(i-,i-,i-); }//用到i-3 //#define LOCAL
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif
l[] = ; l[] = ;
l[] = ; l[] = ;
c[] = ; c[] = ;
g[] = ; g[] = ;
for(int i = ; i <= ; i++){
l[i] = (l[i-]+l[i-])%Mod;
c[i] = (c[i-]+c[i-])%Mod;
f[i] = (f[i-]+f[i-]+g[i-]+ccl(i-,i-,i-)+f12(i-)+Mod)%Mod;//用到i-4,所以从5开始
g[i] = (g[i-]+g[i-]+ccl(i-,i-,i-)+ccl(i-,i-,i-)+f12(i)+f21(i)+ccl(i-,i-,i))%Mod;//用到f[i]和l[i],所以f[i]l[i]在前面
}
int T, kas = ; scanf("%d",&T);
while(T--){
int n; scanf("%d",&n);
printf("Case #%d: %I64d\n",++kas,f[n]);
}
return ;
}
HDU 5459 Jesus Is Here (递推,组合数学)的更多相关文章
- 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 ...
- 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的距离是多少? 解题思路: 直觉告诉我 ...
- HDU 5459 Jesus Is Here(递推)
http://acm.hdu.edu.cn/showproblem.php?pid=5459 题意: S(1) = c,S(2) = ff, S(3) = cff,之后S(i) = S(i-1)+S( ...
- hdu 5459 Jesus Is Here 数学
Jesus Is Here Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid= ...
- HDU 5950 Recursive sequence 【递推+矩阵快速幂】 (2016ACM/ICPC亚洲区沈阳站)
Recursive sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Other ...
- 题解报告:hdu 2084 数塔(递推dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这 ...
- HDU 5965 三维dp 或 递推
题意:= =中文题 思路一:比赛时队友想的...然后我赛后想了一下想了个2维dp,但是在转移的时候,貌似出了点小问题...吧?然后就按照队友的思路又写了一遍. 定义dp[i][j][k],表示第i列, ...
- BZOJ4451 [Cerc2015]Frightful Formula 多项式 FFT 递推 组合数学
原文链接http://www.cnblogs.com/zhouzhendong/p/8820963.html 题目传送门 - BZOJ4451 题意 给你一个$n\times n$矩阵的第一行和第一列 ...
- HDU 2569(简单的递推)
彼岸 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...
随机推荐
- linux 下定位程序假死
ps -ef | grep 程序名称 pstack 程序的进程ID
- L2-014. 列车调度 (DP)
火车站的列车调度铁轨的结构如下图所示. Figure 两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道.每趟列车从入口可以选择任意一条轨道进入,最后从出口 ...
- 2019年第十届蓝桥杯国赛总结(JavaA组)
JavaA组国二,可以报销了~ JA死亡之组可不是盖的,rank12的排名还是拿不到国一啊(只有五个.. 出成绩的一刻波澜不惊,毕竟去年有国一了不慌哈哈哈 不过对我来说这个结果还算意料之外吧,毕竟大三 ...
- unity3d各种OpenFileDialog操作
http://www.cnblogs.com/U-tansuo/archive/2012/07/10/GetOpenFileName.html 1 编辑模式(Editor)下: string path ...
- C# System.Timers.Time
System.Timers.Timer t = new System.Timers.Timer(5000); //设置时间间隔为5秒 private void Form1_Load(object se ...
- tarjan求割点割边的思考
这个文章的思路是按照这里来的.这里讨论的都是无向图.应该有向图也差不多. 1.如何求割点 首先来看求割点.割点必须满足去掉其以后,图被分割.tarjan算法考虑了两个: 根节点如果有两颗及以上子树,它 ...
- MySQL下载与安装配置
一.Windows 上安装 MySQL Windows 上安装 MySQL 相对简单,最新版本下载地址: 官网:https://dev.mysql.com/downloads/mysql/ 下载步骤: ...
- Laravel Model 利用 Macroable 为数据模型添加宏能力
什么是ThinkSNS ? ThinkSNS(简称TS),一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案,目前最新版本为ThinkSNS+(简称TS+).Thin ...
- dshow整体框架前期构思
主要组成: ------理想在线平台---------- A:网站组成 1.产品方案介绍部分 2.用户注册管理部分 3.模块介绍及购买 4.普通 工单部分,vip在线部分 B:四大平台 1.打分平台 ...
- Django (十三) 项目部署 3
阿里云项目部署 部署Django项目 1, 配置nginx 1.1 进入:cd /var/www, 将外面压缩好的AXF项目拖入xshell中,并解压 1.2 配置nginx.conf: 将htt ...