NOIP2011模擬11 1 釣魚

2021-10-10 01:12:31 字數 1401 閱讀 8037

我們把釣魚的過程放在座標系裡來考慮。圖中藍色的點為船,初始時它的座標記為(ax,y)。河深為y,河寬為x。某個時刻會從左邊界或右邊界遊出來一條魚(左邊的往右邊遊,右邊的往左邊遊),即魚游出來時的橫座標為0或x,這條魚每秒會游d個單位長度,魚的長度為l。初始時刻為0,對於每個時刻x,船可以選擇花費1s向左或向右移動最多q個單位長度,或者選擇在當前位置進行釣魚,釣魚的動作是瞬間的,且發生在時刻x,魚還來不及移動就被釣上了。如果選擇釣魚,那麼在時刻x就不能動。設當前位置為z,將魚看成一條線段,當線段與直線x=z相交時就認為魚上鉤了,所以一次釣魚動作可能會釣多條魚。

聰明的你告訴釣魚者,在t時刻前最多能釣多少魚?

第一行:t

第二行:maxx,maxy,表示河寬和河深

第三行:兩個數ax,q

第四行:n,表示有n條魚

接下來n行描述每條魚:每行共五個數,x,y,d,l,time

x表示魚頭的初始位置,保證為0或maxx,y表示魚頭的初始深度,time表示魚出現的時刻(所有的數都為整數)

只有一行:ans,表示最多的釣魚數

34 5

4 13

0 1 3 1 0

4 2 2 1 0

0 3 3 1 2

30%的資料滿足

1<=n<=5

100%的資料滿足

1<=t,time<=10

1<=ax,ay,q,x,y,d,l<=10

1<=n<=14

容易想到dp

發現資料很小,可以用狀壓dp

設f[i][j][k]為時間i,x座標j,釣魚的狀態為k的最大釣魚數

1、移動:f[i+1][j-q ~ j+q][k]=f[i][j][k]

2、釣魚:f[i+1][j][k]=f[i][j][k]+fish(i,j,k)

3、不作操作:f[i+1][j][k]=f[i][j][k]

#include

#include

#include

#define n 15

using

namespace std;

int ans,t,mx,my,ax,q,n,p[n]

,q[n]

,d[n]

,l[n]

,t[n]

,f[n]

[n][

17007];

intfish

(int x,

int y,

int z)

return z;

}int

main()

printf

("%d"

,ans)

;}

NOIP2011模擬11 1 釣魚

我們把釣魚的過程放在座標系裡來考慮。圖中藍色的點為船,初始時它的座標記為 ax,y 河深為y,河寬為x。某個時刻會從左邊界或右邊界遊出來一條魚 左邊的往右邊遊,右邊的往左邊遊 即魚游出來時的橫座標為0或x,這條魚每秒會游d個單位長度,魚的長度為l。初始時刻為0,對於每個時刻x,船可以選擇花費1s向左...

NOIP2011模擬考試總結

這兩天的考了noip2011的6道題,600分的題大致得了420分左右。a了day1的t1,t2,day2的t1。這次模擬我感覺沒有發揮到自己的飽和水平,犯了非常傻比的錯。day1的第三題讀豎列時,題目說了以零結尾,我還手賤寫了個y 7,這樣如果這一列是滿的話,最後乙個0會被下一列讀進去。把y 7刪...

NOIP2011 模擬 鋪地毯

題目描述 description 為了準備乙個獨特的頒獎典禮,組織者在會場的一片矩形區域 可看做是平面直角座標系的第一象限 鋪上一些矩形地毯。一共有n 張地毯,編號從1 到n。現在將這些地毯按照編號從小到大的順序平行於座標軸先後鋪設,後鋪的地毯覆蓋在前面已經鋪好的地毯之上。地毯鋪設完成後,組織者想知...