hdu2044(蜜蜂)2045(rpg难题)2046(骨牌铺方格)2047()

author author     2022-10-02     499

关键词:

2044:没有仔细思考就看了题解,知道这样不好,但是还有8天就要比赛了,真是心虚到不要不要的,我打算这几天尽量把11页上的水题刷完,在回过头看看,因为实在是没有时间啦,至少到时候我不能在这些水题丢分哪。质变才能量变!!

题解:这个题可以用递归但是还有更简单的方式:

看到蜂巢上的数字其实可以明白了。相差为1或2的两个蜂巢都只有一条路能通到。而相差3的呢?其实就是走到b点相邻点的方式有几种,与b直接相邻的这有两个点。那到b定其实就是到b-1点和到b-2点的路数之和,这就回到了大家很熟悉的斐波那契数列了。

天哪,要用__int64,不然会报错。

技术分享图片
#include<stdio.h>
#include<stdlib.h>
#include<cstring>
#include<cmath>
//#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
    int n;
    int a,b;
    __int64 f[55];//注意int是不行的
    cin>>n;
    f[1]=f[2]=1;//注意不是f[0]和f[1]
    for(int i=3;i<55;i++)
    {
        f[i]=f[i-1]+f[i-2];
    }
    while(n--)
    {
        scanf("%d%d",&a,&b);
        printf("%I64d
",f[b-a+1]);
    }
    return 0;
}
View Code

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

也是一道递推找规律的题,首先易知f(1)=3;f(2)=6;f(3)=6;f(4)=18;

现在考虑n>3的情况,若第n-1个格子和第一个格子不同,则为f(n-1);

若第n-1个格子和第1个格子相同,则第n-2个格子和第一个格子必然不同,此时为f(n-2)再乘第n-1个格子的颜色数,很显然第n-1个格子可以是第一个格子(即第n-2个格子)的颜色外的另外两种,这样为2*f(n-2);

因此总的情况为f(n)=f(n-1)+2*f(n-2);

注意也必须用__int64!!!

技术分享图片
#include<stdio.h>
#include<stdlib.h>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
    __int64 s[55]={0,3,6,6};
    int n=0;
    for(int i=4;i<=50;i++)
    {
        s[i]=s[i-1]+2*s[i-2];
    }
    while(cin>>n)
        cout<<s[n]<<endl;
    return 0;
}
View Code

2046:思路:从图中也可以观察出来,第N张牌的排列可以又N-1张牌的排列再在末尾加上一张竖的牌。这样依然合法。
也可以在N-2张合法排列的牌后面加上两张横着放的牌(如果竖着放就和上面一种重复了)。
所以f(n) = f(n-1) + f(n-2)
即又是一个斐波那契数列。

注意:要用到__int64 ,没用这个AC不了。
技术分享图片
#include<stdio.h>
#include<stdlib.h>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
    __int64 s[55]={1,1,2};//注意当s[0]=1
    int n=0;
    for(int i=3;i<=50;i++)
    {
        s[i]=s[i-1]+s[i-2];
    }
    while(cin>>n)
        cout<<s[n]<<endl;
    return 0;
}
View Code

2047:题意:给一个n,在这n个位置上面放 ‘E‘ ‘0‘ ‘F‘,这三个字符,问可以拼出多少不同的字符来,排除有‘0‘‘O‘相连的情况。

解题思路:(1)当n位取‘O‘的时候,那么n-1位就只能去‘E‘‘F‘这两种可能,对后面n-2之后的位置就没有任何的限定了,所以是1*2*f[n-2];

    (2)当n位去‘E‘‘F‘时,那么对于n-1位置没有任何的限定,所以情况是2*f[n-1]

综上所述:f[n]=2*(f[n-1]+f[n-2])

技术分享图片
#include<stdio.h>
#include<stdlib.h>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
    __int64 s[55]={1,3,8};//注意当s[0]=1
    int n=0;
    for(int i=3;i<=50;i++)
    {
        s[i]=2*s[i-1]+2*s[i-2];
    }
    while(cin>>n)
        cout<<s[n]<<endl;
    return 0;
}
View Code

 

 




hdu2045不easy系列之三lele的rpg难题(趋向于dp的递推)

不easy系列之(3)——LELE的RPG难题TimeLimit:2000/1000MS(Java/Others)MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):30222AcceptedSubmission(s):12144ProblemDescription人称“AC女之杀手”的超级偶像LELE近期忽然玩起了深沉,这可急坏了众多“ 查看详情

hdu2045不容易系列之——lele的rpg难题(代码片段)

HDU2045不容易系列之(3)——LELE的RPG难题题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=2045参考:https://blog.csdn.net/lsgqjh/article/details/44968881ProblemDescription人称“AC女之杀手”的超级偶像LELE最近忽然玩起了深沉,这可急坏了众多“Cole”(LE... 查看详情

hdu2045不容易系列之――lele的rpg难题(递推)

题意:有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法. 题解:本来当n=1时,答案是0的(首尾不同时不可能... 查看详情

acm_hdu_2045_不容易系列之——lele的rpg难题(代码片段)

...深Cole终于知道了原因,原来,LELE最近研究起了著名的RPG难题:有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要 查看详情

hdu2045不容易系列之——lele的rpg难题(代码片段)

...深Cole终于知道了原因,原来,LELE最近研究起了著名的RPG难题:有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法.... 查看详情

(递推)一只小蜜蜂...hdu2044(代码片段)

一只小蜜蜂...链接:http://acm.hdu.edu.cn/showproblem.php?pid=2044TimeLimit:2000/1000MS(Java/Others)    MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):95054     查看详情

hdu_oj_2045不容易系列之rpg问题

...也不同色.求全部的满足要求的涂法.以上就是著名的RPG难题. Input输入数据包含多个测试实例,每个测试实例占一行,由一个整数N组成,(0<n<=50)。 Output对于每个测试实 查看详情

hdu2044一只小蜜蜂...简单动态规划

....hdu.edu.cn/showproblem.php?pid=2044题目描述:有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。其中,蜂房的结构如下所示。输入数据的第一行是一个整数N,表示测试实... 查看详情

hdu2044一只小蜜蜂...(简单dp)

一只小蜜蜂...TimeLimit:2000/1000MS(Java/Others)    MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):73139    AcceptedSubmission(s):26257ProblemDescription有一只经 查看详情

hdu-2044:一只小蜜蜂...

有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。其中,蜂房的结构如下所示。Input输入数据的第一行是一个整数N,表示测试实例的个数,然后是N行数据,每行包... 查看详情

hdu2044一只小蜜蜂(代码片段)

经典线性DPFabonacci1#include<algorithm>2#include<iostream>3#include<cstring>4#include<cstdio>5#include<cctype>67usingnamespacestd;89inlinevoidread(longlong&x)1011intk=1; 查看详情

hdu_oj_2044一只小蜜蜂

ProblemDescription 有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。其中,蜂房的结构如下所示。 Input输入数据的第一行是一个整数N,表示测试实例的个数,然... 查看详情

hdu2044一只小蜜蜂...(递推,fibonacci)

题意:中文题。析:首先要想到达第n个蜂房,那么必须经第n-1或第n-2个蜂房,那么从第n-1或第n-2个蜂房到达第n个,都各自有一条路线,所以答案就是第n-1+第n-2个蜂房,即ans[i]=ans[i-1]+ans[i-2];注意要用longlong因为超int了。代码如下... 查看详情

hdoj_2045_不容易系列之——lele的rpg难题(代码片段)

AC代码:#include<iostream>#include<cstdio>#include<cstring>#defineMax55usingnamespacestd;longlonginta[Max][1005];voidhanshu()memset(a,0,sizeof(a));inti,j;a[1][0]=3;a[2][0]=6;a[3][0]=6; 查看详情

hdu2044

一只小蜜蜂...TimeLimit:2000/1000MS(Java/Others)    MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):84167    AcceptedSubmission(s):30094ProblemDescription有一只经 查看详情

hdu2044:一只小蜜蜂...(动态规划)

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2044斐波那契数列,动态规划,打表观察可知:要到达一个蜂房,如果这个蜂房在第一排,只能从它左边的蜂房或者左下方的蜂房过来;如果这个蜂房在第... 查看详情

hdoj2044.一只小蜜蜂...题解(代码片段)

ProblemDescription有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。其中,蜂房的结构如下所示。Input输入数据的第一行是一个整数N,表示测试实例的个数,然后是N行... 查看详情

hdacm2045

LELE的RPG难题析:假设有N个方格时的涂法是F[N]种。当前边n-1个方格成立时,再加第n种颜色无影响,此时有F[N-1]种涂法,当n-1个方格违法时,即有两个相邻的格子颜色相同,则有n-2个颜色合法,即F[N-2],第N种颜色有两种,此时2*F[... 查看详情