1. 程式人生 > >"尚學堂杯"哈爾濱理工大學第七屆程式設計競賽 C.Collection Game【遞推】

"尚學堂杯"哈爾濱理工大學第七屆程式設計競賽 C.Collection Game【遞推】

Collection Game
Time Limit: 1000 MS Memory Limit: 128000 K
Total Submit: 41(21 users) Total Accepted: 22(20 users) Rating:  Special Judge: No
Description
POI and POJ are pair of sisters, one is a master in “Kantai Collection”, another is an excellent competitor in ACM programming competition. One day, POI wants to visit POJ, and the pace that between their homes is made of square bricks. We can hypothesis that POI’s house is located in the NO.1 brick and POJ’s house is located in the NO.n brick. For POI, there are three ways she can choose to move in every step, go ahead one or two or three bricks. But some bricks are broken that couldn’t be touched. So, how many ways can POI arrive at POJ’s house?
Input

There are multiple cases.

In each case, the first line contains two integers N(1<=N<=10000) and M (1<=M<=100), respectively represent the sum of bricks, and broke bricks. Then, there are M number in the next line, the K-th number a[k](2<=a[k]<=n-1) means the brick at position a[k] was broke.

Output
Please output your answer P after mod 10007 because there are too many ways.
Sample Input

5 1

3

Sample Output
3
Source
"尚學堂杯"哈爾濱理工大學第七屆程式設計競賽

題目大意:

一共給你N個臺階,每次可以走1步,2步,3步,但是有m個臺階不能走,問走到n號臺階有多少種方法。

思路:

dp【i】=dp【i-1】+dp【i-2】+dp【i-3】;

if(位子i是不能走的)continue掉就可以了;

Ac程式碼:

#include<stdio.h>
#include<string.h>
using namespace std;
#define mod 10007
int dp[10050];
int vis[10050];
int main()
{
    int n,m;
    while(~scanf("%d%d",&n,&m))
    {
        memset(vis,0,sizeof(vis));
        memset(dp,0,sizeof(dp));
        while(m--)
        {
            int x;scanf("%d",&x);
            vis[x]=1;
        }
        dp[1]=1;
        for(int i=2;i<=n;i++)
        {
            if(vis[i]==1)continue;
            if(i-1>=0)dp[i]+=dp[i-1];
            if(i-2>=0)dp[i]+=dp[i-2];
            if(i-3>=0)dp[i]+=dp[i-3];
            dp[i]%=mod;
        }
        printf("%d\n",dp[n]);
    }
}


相關推薦

"學堂"哈爾濱理工大學程式設計競賽 C.Collection Game

Collection Game Time Limit: 1000 MS Memory Limit: 128000 K Total Submit: 41(21 users) Total Accept

"學堂"哈爾濱理工大學程式設計競賽

C.Collection Game Time Limit: 1000 MS Memory Limit: 128000 K Total Submit: 841 (248 users) Total

"學堂"哈爾濱理工大學程式設計競賽 F Final Ugly English

F.Final Ugly English Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 2074(405 users) Total

"學堂"哈爾濱理工大學程式設計競賽 B.Blind Father(貪心)

Mr. Leng, who is the predominately inheritor of buried-love family  (One of the most vogue families during your primary school maybe, anyway, this is unim

哈爾濱理工大學程式設計競賽決賽(網路賽-低年級組)

給出一個序列,你的任務是求序列中 (a[j]-a[i])/(j-i)【1<=i<j<=n】的最大值輸入描述:本題包含多組輸入,每組輸入第一行一個數字n,表示序列的長度。 然後接下來一行輸入n個數,表示原先序列的樣子。 資料範圍: 3<=n<=200000 -1000000000&

哈爾濱理工大學程式設計競賽決賽 A 所有情況的和

題目描述 在acimo星球, tabris 是一名勇敢的屠龍勇士,在上綠島屠龍前決定挑選N種裝備武裝自己,現在每種裝備有兩個,但每種裝備tabris必須選擇拿一個,不能多也不能少。 每件裝備有自己的屬性值,能給tabris屬性加成。 對於不同種類的裝備之間

哈爾濱理工大學程式設計競賽初賽(低年級組)

今天是Tabris和mengxiang000來到幼兒園的第9天。 為了慶祝這美好的一天,老師組織同學們做遊戲,拿來了好多骰子。 遊戲規則: 1)兩個人每人輪流擲骰子,操控同一個小人在一個有向的地圖上走,骰子的點數是幾,這個小人就向前走幾格。 2) 地圖只有一條路,路上有起點、終點和傳送陣。傳送陣會只能

哈爾濱理工大學程式設計競賽初賽(高年級組)F 苦逼的單身狗DP

時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 32768K,其他語言65536K 64bit IO Format: %lld 題目描述 雙11又到了,小Z依然只是一隻單身狗,對

哈爾濱理工大學程式設計競賽初賽(高年級組) A B C D F G H I

A 凌波微步 時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 32768K,其他語言65536K 64bit IO Format: %lld 題目描述 小Z的體型實在是太胖了,每次和小D一起出門都跟不上小D的腳步,這讓小Z很氣餒

哈爾濱理工大學程式設計競賽決賽(網路賽-高年級組)-D:數圈圈(數位DP)

時間限制:C/C++ 1秒,其他語言2秒空間限制:C/C++ 32768K,其他語言65536K64bit IO Format: %lld 題目描述 tabris有一個習慣,無聊的時候就會

哈爾濱理工大學程式設計競賽決賽 D 數圈圈

時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 32768K,其他語言65536K 64bit IO Format: %lld 題目描述 tabris有一個習慣,無聊的時候就會數圈圈,無論數字還是字母。 現在t

哈爾濱理工大學程式設計競賽初賽(高年級組)F.苦逼單身狗(滑動視窗 or DP or 二分)

思路:滑動視窗 or DP or 二分。滑動視窗:#include <bits/stdc++.h> using namespace std; const int MAXN = 100005;

哈爾濱理工大學程式設計競賽決賽(網路賽-高年級組)B 幸運大獎DP

時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 32768K,其他語言65536K 64bit IO Format: %lld 題目描述 tabris實在是太窮了,為了發財,ta

哈爾濱理工大學程式設計競賽初賽(高年級組)F-苦逼的單身狗

連結:https://www.nowcoder.com/acm/contest/27/F來源:牛客網題目描述 雙11又到了,小Z依然只是一隻單身狗,對此他是如此的苦惱又無可奈何。 為了在這一天脫

哈爾濱理工大學程式設計競賽決賽(網路賽-高年級組)B題幸運大獎

幸運大獎 時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 32768K,其他語言65536K 64bit IO Format: %lld 題目描述 tabris實在是太窮了,為了發財,tabris去買了一張彩票,幸運地中了特別獎。 特別獎是這樣的,不會直接給

哈爾濱理工大學程式設計競賽(G.Great Atm)

Description An old story said the evil dragon wasn’t evil at all, only bewitched, and now that the riddles were solved it was prov

哈爾濱理工大學程式設計競賽初賽(高年級組)I 旅行列舉+spfa

時間限制:C/C++ 2秒,其他語言4秒 空間限制:C/C++ 32768K,其他語言65536K 64bit IO Format: %lld 題目描述 小z放假了,準備到RRR城市旅行,其中這個城市有N個旅遊景點。小z時間有限,只能在三個旅行景點進行遊

哈爾濱理工大學程式設計競賽初賽(高年級組)H 佈置會場斐波那契

時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 32768K,其他語言65536K 64bit IO Format: %lld 題目描述 小d接到了一個佈置會場的任務。 他需要

哈爾濱理工大學程式設計競賽決賽(網路賽-高年級組)D 數圈圈

時間限制:C/C++ 1秒,其他語言2秒空間限制:C/C++ 32768K,其他語言65536K64bit IO Format: %lld 題目描述 tabris有一個習慣,無聊的時候就會

哈爾濱理工大學程式設計競賽決賽(網路賽-高年級組)A所有情況的和

所有情況的和 時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 32768K,其他語言65536K 64bit IO Format: %lld 題目描述 在acimo星球, tabris是一名勇敢的屠龍勇士,在上綠島屠龍前決定挑選N種裝備武裝自己,現在每種裝