POJ 2711 Regular Words(DP + 高精度)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1711
题目大意:给定一个正整数n,产生一个3*n位长的串,要求这个串中(1)A、B、C的数目都是n;(2)这个串的任意一个前缀,也就是从开始往后任意一段连续序列中字符的个数A>=B>=C。求满足条件的数目。
Sample Input
2 3
Sample Output
5 42
分析:令dp[i][j][k] 表示从第一个字符开始,长度为i+j+k的串,A的个数为 i ,B的个数为 j ,C的个数为 k 的字符串的个数。
则如果i>=j>=k 则可以根据最后一个字符是A, B还是C,分三类计数,假设是最后一位是A,由于题目的要求是前缀 ,所以前面的放法数恰好是dp[i-1][j][k]
另外两种情况同理,加的时候注意下标小于零就不要了,答案为dp[n][n][n]
后来发现是高精度,需要再加一维dp[i][j][k][p],最后一维是该数字的大数表示。
这样如果dp数组用int类型表示,会超内存。后来改用short类型,内存36000险过,用char类型也是可以过的。short型理论上用输出%hd的,不过%d也可以。
代码如下:
# include<iostream>
# include<cstdio>
# include<cstring>
using namespace std; short dp[][][][];
void init()
{
short i,j,k,p,temp;
memset(dp,,sizeof(dp));
dp[][][][] = ;
for(i=; i<=; i++)
for(j=i; j<=; j++)
for(k=j; k<=; k++)
{
if(i>) //dp[i][j][k] += dp[i-1][j][k];
{
temp = ;
for(p=; p<=; p++)
{
dp[i][j][k][p] += dp[i-][j][k][p] + temp;
if(dp[i][j][k][p]>)
{
temp = ;
dp[i][j][k][p] -= ;
}
else
temp = ;
}
}
if(j>) //dp[i][j][k] += dp[i][j-1][k];
{
temp = ;
for(p=; p<=; p++)
{
dp[i][j][k][p] += dp[i][j-][k][p] + temp;
if(dp[i][j][k][p]>)
{
temp = ;
dp[i][j][k][p] -= ;
}
else
temp = ;
}
}
if(k>) //dp[i][j][k] += dp[i][j][k-1];
{
temp = ;
for(p=; p<=; p++)
{
dp[i][j][k][p] += dp[i][j][k-][p] + temp;
if(dp[i][j][k][p]>)
{
temp = ;
dp[i][j][k][p] -= ;
}
else
temp = ;
}
}
}
} int main()
{
init();
int n;
while(scanf("%d",&n)!=EOF)
{
int i;
for(i=; i>=; i--)
if(dp[n][n][n][i] != ) break;
for(; i>=; i--) //输出高精度数
printf("%d",dp[n][n][n][i]);
printf("\n\n");
}
return ;
}
POJ 2711 Regular Words(DP + 高精度)的更多相关文章
- HDU 1502 Regular Words DP+高精度
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1502 题目大意:找出总的满足条件的字符串数,num(a)=num(b)=num(c)且任何前缀均满足n ...
- poj 1205 :Water Treatment Plants (DP+高精度)
题意:有n个城市,它们由一个污水处理系统连接着,每个城市可以选择 1.将左边城市过来的污水和右边城市过来的污水连同本身的污水排到河里 >V< 2.将左边来的污水连同自己的污水排到右边 ...
- 1166 矩阵取数游戏[区间dp+高精度]
1166 矩阵取数游戏 2007年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description [ ...
- bzoj 1089 [SCOI2003]严格n元树(DP+高精度)
1089: [SCOI2003]严格n元树 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1250 Solved: 621[Submit][Statu ...
- POJ 2711 Leapin' Lizards / HDU 2732 Leapin' Lizards / BZOJ 1066 [SCOI2007]蜥蜴(网络流,最大流)
POJ 2711 Leapin' Lizards / HDU 2732 Leapin' Lizards / BZOJ 1066 [SCOI2007]蜥蜴(网络流,最大流) Description Yo ...
- CF23 E. Tree 树形dp+高精度
题目链接 CF23 E. Tree 题解 CF竟让卡常QAQ dp+高精度 dp[x][j]表示以x为根的子树,x所属的联通块大小为j,的最大乘积(不带j这块 最后f[x]维护以x为根的子树的最大答案 ...
- POJ.3624 Charm Bracelet(DP 01背包)
POJ.3624 Charm Bracelet(DP 01背包) 题意分析 裸01背包 代码总览 #include <iostream> #include <cstdio> # ...
- 【bzoj2764】[JLOI2011]基因补全 dp+高精度
题目描述 在生物课中我们学过,碱基组成了DNA(脱氧核糖核酸),他们分别可以用大写字母A,C,T,G表示,其中A总与T配对,C总与G配对.两个碱基序列能相互匹配,当且仅当它们等长,并且任意相同位置的碱 ...
- DP+高精度 URAL 1036 Lucky Tickets
题目传送门 /* 题意:转换就是求n位数字,总和为s/2的方案数 DP+高精度:状态转移方程:dp[cur^1][k+j] = dp[cur^1][k+j] + dp[cur][k]; 高精度直接拿J ...
随机推荐
- 【Java基础】泛型的一些总结
什么是泛型 泛型其实可以理解为一种广泛的类型,啥类型都型,当然,这种泛是指定义时可以广泛,但是使用时必须确定类型.也就是说,当不清楚未来使用哪种类型时,定义为泛型.可以支持泛型类,泛型接口,泛型方法, ...
- hdoj 1977 Consecutive sum II
Consecutive sum II Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- C#中如何操作2个list
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:C#中如何操作2个list.
- C#中只使用Invokerequired来判断是不是UI线程可靠吗?
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:C#中只使用Invokerequired来判断是不是UI线程可靠吗?.
- javascript-智能社-JS基础A笔记
JavaScript基础A JavaScript组成 ECMA : 全称ECMAScript,解释器.计算机语言的翻译 DOM:全称Document Object Model,赋予了JS操作HTML的 ...
- PowerShell脚本传递参数
在编写PowerShell脚本的时候,可以通过给变量赋值的方法输出想要的结果,但这样的话,需要改动脚本内容.其实也可以在脚本中定义参数,然后再在执行脚本的时候对参数赋值,而无需改动脚本内容. 在Pow ...
- Android中滑屏初探 ---- scrollTo 以及 scrollBy方法使用说明
今天给大家介绍下Android中滑屏功能的一个基本实现过程以及原理初探,最后给大家重点讲解View视图中scrollTo 与 scrollBy这两个函数的区别 . 首先 ,我们必须明白在Android ...
- QtSpeech会让Qt说话
想要多了解QtSpeech,那么随着本文的文字往下走吧!QtSpeech是一个Qt封装的跨平台TTS(文本变成语音输出)API,在不同平台下利用系统自带的TTS引擎.在Windows下使用SAPI, ...
- phpcms 源码分析四: 数据库类实现
这次是逆雪寒的数据库类分析: <?php /* 这个讲 phpcms 的数据库类 和 phpcms 的文本缓存的实现.看了看 都是很简单的东西.大家看着我注释慢慢看吧.慢慢理解,最好能装了PHP ...
- install lua client for redis-server on Mac
1. lua client library for redis-server https://github.com/nrk/redis-lua 2. dependent luasocket https ...