不容易系列之(3)—— LELE的RPG难题

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 46123    Accepted Submission(s): 18470

Problem Description
人称“AC女之杀手”的超级偶像LELE最近忽然玩起了深沉,这可急坏了众多“Cole”(LELE的粉丝,即"可乐"),经过多方打探,某资深Cole终于知道了原因,原来,LELE最近研究起了著名的RPG难题:

有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法.

以上就是著名的RPG难题.

如果你是Cole,我想你一定会想尽办法帮助LELE解决这个问题的;如果不是,看在众多漂亮的痛不欲生的Cole女的面子上,你也不会袖手旁观吧?

 
Input
输入数据包含多个测试实例,每个测试实例占一行,由一个整数N组成,(0<n<=50)。
 
Output
对于每个测试实例,请输出全部的满足要求的涂法,每个实例的输出占一行。
 
Sample Input
1
2
 
Sample Output
3
6
 
Author
lcy
代码:
 //当n时,a[n]等于n-1时符合条件的末尾再加上一个不和第一个,最后一个一样的颜色 + n-1时最后一个等于第一个的末尾加上另外两种颜色中的一种,
//而n-1时最后一个等于第一个的数量等于n-2时符合条件的末尾加上与第一个相同的颜色,就是n-2时的数量
//a[n]=a[n]+a[n-2]*2;
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int n;
long long a[];
a[]=;a[]=;a[]=;
for(int i=;i<=;i++)
{
a[i]=a[i-]+a[i-]*;
}
while(scanf("%d",&n)!=EOF)
{
printf("%lld\n",a[n]);
}
return ;
}

Queuing

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4837    Accepted Submission(s): 2144

Problem Description
Queues
and Priority Queues are data structures which are known to most
computer scientists. The Queue occurs often in our daily life. There are
many people lined up at the lunch time.
HDU2045/*HDU2604/*HDU2501/HDU2190 递推-LMLPHP
  Now we define that ‘f’ is short for female and ‘m’ is short for male. If the queue’s length is L, then there are 2
numbers of queues. For example, if L = 2, then they are ff, mm, fm, mf .
If there exists a subqueue as fmf or fff, we call it O-queue else it is
a E-queue.
Your task is to calculate the number of E-queues mod M with length L by writing a program.
 
Input
Input a length L (0 <= L <= 10 ) and M.
 
Output
Output K mod M(1 <= M <= 30) where K is the number of E-queues with length L.
 
Sample Input
3 8
4 7
4 8
 
Sample Output
6
2
1
 
Author
WhereIsHeroFrom
题意:
一串字符串全部由m,f组成,问当字符串的长度为n时,字符串中不含有fmf,fff,子串的字符串有多少种。
代码:
 //当长度为n时,可以由长度为n-1的后面加上m,如果要在长度为n-1的串后面加上f,就要考虑,**********mf+f和**********mm+f,(****fmf,****fff不行)
//两种情况,后一种情况长度为n-3时加上他就行,前一种情况第n-3位只能是m所以长度为n-4时再加上他就行。数据太大不能算完之后再取模。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int a[];
int main()
{
int l;
int m;
while(scanf("%d%d",&l,&m)!=EOF)
{
a[]=;a[]=;a[]=;a[]=;
if(l>=)
{
for(int i=;i<=l;i++)
{
a[i]=a[i-]+a[i-]+a[i-];
a[i]%=m;
}
printf("%d\n",a[l]);
}
else printf("%d\n",a[l]%m);
}
return ;
}

Tiling_easy version

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 7424    Accepted Submission(s): 5756

Problem Description
有一个大小是 2 x n 的网格,现在需要用2种规格的骨牌铺满,骨牌规格分别是 2 x 1 和 2 x 2,请计算一共有多少种铺设的方法。
 
Input
输入的第一行包含一个正整数T(T<=20),表示一共有 T组数据,接着是T行数据,每行包含一个正整数N(N<=30),表示网格的大小是2行N列。
 
Output
输出一共有多少种铺设的方法,每组数据的输出占一行。
 
Sample Input
3
2
8
12
 
Sample Output
3
171
2731
 
代码:
 //水题浪费了那么多时间,最后位置放2*1时,最后位置放2*2时(2*2可以竖着也可以横着),a[n]=a[n-1]+a[n-2]*2;
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
long long a[];
int main()
{
a[]=;a[]=;
for(int i=;i<=;i++)
a[i]=a[i-]+*a[i-];
int t,n;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
printf("%lld\n",a[n]);
}
return ;
}

悼念512汶川大地震遇难同胞——重建希望小学

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 6486    Accepted Submission(s): 4331

Problem Description
下面是512汶川大地震部分受灾学校伤亡情况(惨痛!!)

1、 四川省都江堰市 聚源中学
伤亡情况:遇难学生人数(含失踪)320
详细说明: 一栋教学楼被震垮,该楼18个班420多名学生被埋,截至目前仅有不到100名获救。
2、 四川省绵阳市 北川县北川中学
伤亡情况:遇难学生人数(含失踪)1200多人
详细说明:学校教室损毁情况严重,六至七层高的主教学楼已经垮塌得只有一人多高,其他两个教学楼和宿舍也有不同程度垮塌
3、四川省绵阳市 北川县曲山小学(绵阳市示范小学)
伤亡情况:遇难学生人数(含失踪)698人
详细说明:学校位于北川县郊一公里处的任家坪镇,在校师生人数 1003人,地震使学校一座五层教学楼的整体倒塌,只剩下了一层
4、四川省绵阳市 北川县曲山幼儿园
伤亡情况:在校师生人数500多,仅生还20余人
详细说明:学校位于绵阳市北川县曲山镇危家巷,曲山幼儿园及学前班500多名学生被滑坡气浪推移20多米,教学大楼像竹编一样倒下,整体向外挪出五十公分仅凭肉眼根本无法作出判断这是四层楼……
5、四川省绵阳市 北川县茅坝初中
伤亡情况:在校师生人数240多,仅生还20余人
详细说明:教室被泥石流掩埋,学校只剩一根歪歪斜斜的旗杆和一面鲜艳的五星红旗……
…..
HDU2045/*HDU2604/*HDU2501/HDU2190 递推-LMLPHP

为什么会有这么多的学校伤亡惨重?也许有很多值得我们调查的东西。但对于我们来说,当前最紧迫的任务是重建学校,以便让幸存的学生早日走进课堂。
这不,一所由社会各界捐款修建的希望小学马上就要竣工了!学校教室的长度为n米,宽度为3米,现在我们有2种地砖,规格分别是1米×1米,2米×2米,如果要为该教室铺设地砖,请问有几种铺设方式呢?

 
Input
输入数据首先包含一个正整数C,表示包含C组测试用例,然后是C行数据,每行包含一个正整数n(1<=n<=30),表示教室的长度。
 
Output
对于每组测试数据,请输出铺设地砖的方案数目,每个输出占一行。
 
Sample Input
2
2
3
 
Sample Output
3
5
 
Author
lcy
 
 跟上一题做法一样,数据一样。
04-30 05:12