zoukankan      html  css  js  c++  java
  • hdu acm 2154(多解取一解)

    //题目中结果有一条限制就是最后必须跳回A,如果我们的思想框在这个条件上就很容易卡住,因为这样的条件下的路径很难有规律的罗列,然而我们说这个图形中有三个区域,我们算出每个区域的第n-1次的种类数,然后很容易就地推出了第n次的,取结果的时候只要去A区域的就可以了
    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<string>
    using namespace std;
    long long int dp[65];
    int main(void)
    {
        int i,j;
        int t;
        int dpA[1001],dpB[1001],dpC[1001];
        dpA[1]=0;dpB[1]=1;dpC[1]=1;
        for(i=2;i<=1000;i++)
        {
            dpA[i]=(dpB[i-1]+dpC[i-1])%10000;
            dpB[i]=(dpA[i-1]+dpC[i-1])%10000;
            dpC[i]=(dpA[i-1]+dpB[i-1])%10000;
        }
        while(cin>>t&&t)
        {
            cout<<dpA[t]<<endl;
        }
        return 0;
    }

    //题目中结果有一条限制就是最后必须跳回A,如果我们的思想框在这个条件上就很容易卡住,因为这样的条件下的路径很难有规律的罗列,然而我们说这个图形中有三个区域,我们算出每个区域的第n-1次的种类数,然后很容易就地推出了第n次的,取结果的时候只要去A区域的就可以了
    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<string>
    using namespace std;
    long long int dp[65];
    int main(void)
    {
        int i,j;
        int t;
        int dpA[1001],dpB[1001],dpC[1001];
        dpA[1]=0;dpB[1]=1;dpC[1]=1;
        for(i=2;i<=1000;i++)
        {
            dpA[i]=(dpB[i-1]+dpC[i-1])%10000;
            dpB[i]=(dpA[i-1]+dpC[i-1])%10000;
            dpC[i]=(dpA[i-1]+dpB[i-1])%10000;
        }
        while(cin>>t&&t)
        {
            cout<<dpA[t]<<endl;
        }
        return 0;
    }

  • 相关阅读:
    bzoj 3059: 归途与征程
    bzoj 4827: [Hnoi2017]礼物
    bzoj 4826: [Hnoi2017]影魔
    bzo j4825 [Hnoi2017]单旋
    hackerrank Week of Code 31
    bzoj 3615: MSS
    bzoj2505: tickets
    bzoj4813: [Cqoi2017]小Q的棋盘
    bzoj4821: [Sdoi2017]相关分析
    RedisTemplate访问Redis数据结构(一)——String
  • 原文地址:https://www.cnblogs.com/woshijishu3/p/4115520.html
Copyright © 2011-2022 走看看