NYNU 1151 輕羽飛揚 數塔DP

2021-08-26 11:58:09 字數 2143 閱讀 3778

電視動畫《輕羽飛揚》改編自濱田浩輔原作的同名漫畫,作為今年的7月新番,dyl非常喜歡尤其是裡面的大魔王&&主角 羽咲綾乃,我們知道綾乃小的時候特別喜歡打羽毛球,她的母親千夏是乙個非常有名的羽毛球選手曾獲得女子單人羽毛球全日本綜合優勝十連霸冠軍,對待自己的女兒千夏有獨特的訓練方式,綾乃很喜歡和母親打羽毛球,但是呢千夏每天只和綾乃打一局,一旦綾乃接不住母親的球,千夏就讓綾乃自己訓練,作為綾乃的好朋友藤澤英玲奈你將如何幫助綾乃能夠更多的接到母親的羽毛球呢?

首先 我們將羽毛球場分成0-10 11個位置如圖所示

最開始 綾乃站在5的位置,每一秒鐘都會有若干個球落在若干個位置,由於綾乃剛剛進行過訓練所以很累,她只能接到所處位置或者相鄰位置上的球,所以綾乃最多能夠接到幾個球呢?

輸入有多組 不超過10組資料    以0結尾

每組 第一行乙個數 n 表示球的數量  (n<100000)

第二行到n+1行每行兩個數x,t (x代表球落下的位置,t代表第幾秒) (t<100000)

乙個數代表 綾乃最多能夠接到的球的數量 //

開始時站在5這個位置,因此在第一秒,ta只能接到4,5,6這三個位置中其中乙個位置上的羽毛球。問最多可能接到多少個球?

6

5 14 1

6 17 2

7 28 3

0

4
第一次寫的時候用dfs爆搜,完美地碼了出來,十分激動,然後完美地tle了。。。

tle的**: (時間超限 83%)

#include#include#include#include#include#include#include#includeusing namespace std;

#define ll long long

#define inf 0x3f3f3f3f

#define mem(a,b) memset(a,b,sizeof(a))

#define closeio std::ios::sync_with_stdio(false)

int a[12][1000005];

int te,ans;

void dfs(int n,int time,int sum)}

int main()

ans=0;

te=maxn;

dfs(5,0,0);

printf("%d\n",ans);

}return 0;

}

超時是因為大部分點都會被搜尋多次,然後取其最大值,導致效率較低。看了題解才知道原來是數塔dp。。

基本思路與上面的dfs差不多,建乙個二維陣列,但不是從乙個點往上拓展三個點,而是從乙個點找到下面能夠通往它的三個點,取其中最大值,加上這個點本身的值就得到這個點的dp值,只需迴圈一次即可找出每個最高點的最大值。

dp[i][j]表示在i秒時j位置最多可以接到多少球 

dp[i][j]的最大值取決於下面三個點 dp[i-1][j-1] dp[i-1][j] dp[i-1][j+1]中的最大值,

dp**:

#include#include#include#include#include#include#include#includeusing namespace std;

#define ll long long

#define inf 0x3f3f3f3f

#define mem(a,b) memset(a,b,sizeof(a))

#define closeio std::ios::sync_with_stdio(false)

#define maxn 1000005

int a[maxn][12],dp[maxn][12]; //dp[i][j]表示在i秒時j位置最多可以接到多少球 

int main()

for(i=0;i<11;i++)

dp[0][i]=-1;

dp[0][5]=a[0][5];

for(i=1;i<=m;i++)

} int t=-1;

for(i=0;i<=10;i++)

t=max(t,dp[m][i]);

cout<

}return 0;

}

NYNU 省賽選拔題 8

一天萌萌噠孟孟學長去博物館參觀,他想看到更多的東西。博物館可以表示為n m細胞的乙個矩形區域。表示為路,表示為牆壁,每個牆壁上面都掛有美麗的畫卷。孟孟學長可以看到與他所在位置相鄰的牆壁上面的畫卷。他有很多時間,所以他會沿著路走,只要路是通的每一張都可以看到。第一行輸入3個數n m k 3 n,m 1...

NYNU 省賽選拔題 3

二叉樹,若其與自己的映象完全相同,就稱其為映象樹。是一棵映象樹 而不是映象樹。現給你一棵二叉樹,請你判斷其是不是映象樹。第一行是乙個整數數t,表示測試資料有多少組 每組資料第一行是乙個正整數n 1 n 100 表示二叉樹中節點的數量 下面n行,每行有三個正整數a b c 1 a 100,0 b,c ...

11 5執行緒終止

如果程序中的任一線程呼叫了exit,exit 或者 exti,那麼整個程序會終止。類似的,當預設動作是終止程序,傳送到執行緒的訊號會終止整個程序。在12.8節中我們會討論更多執行緒和訊號間的互動與通訊 乙個單執行緒有三種退出方式,在不終止整個程序的情況下,終止執行緒的控制流。1.執行緒從啟動例程中返...