NOIP2009PJ 道路遊戲

2021-09-05 18:17:45 字數 3095 閱讀 1185

啊哈,現在有重溫了一遍o(╥﹏╥)o

從以前的o(n2)——>現在的o(n3),感覺自己廢了~

(儘管**大幅度減少)

我們可以發現p其實只是乙個限制的作用,不需要列舉啊,它是乙個個走的,所以只需要記錄一下就行了┭┮﹏┭┮

uses math;

var f,g:array[

0..1001,0.

.1001,0.

.1]of longint;

a:array[

1..1001,1.

.1001

]of longint;

b:array[

1..1001

]of longint;

n,m,p,i,j,k,max1,max2:longint;

begin

assign

(input,

'game.in');

reset

(input)

;assign

(output,

'game.out');

rewrite

(output)

;readln

(n,m,p)

;for i:

=1 to n do

for j:

=1 to m do

read

(a[i,j]);

for i:

=1 to n do

read

(b[i]);

for i:

=1 to m do

begin

for j:

=1 to n do

begin

k:=j-1

;if k=

0 then k:

=n;if

(g[i-

1,k,1]

>0)

and(g[i-

1,k,0]

>0)

and(g[i-

1,k,1]

+1<=p)

and(g[i-

1,k,0]

+1<=p) then

begin

if f[i-

1,k,1]

>f[i-

1,k,

0] then

begin

f[i,j,0]

:=f[i-

1,k,1]

+a[j,i]

; g[i,j,0]

:=g[i-

1,k,1]

+1; end else

begin

f[i,j,0]

:=f[i-

1,k,0]

+a[j,i]

; g[i,j,0]

:=g[i-

1,k,0]

+1; end;

end else

if(g[i-

1,k,1]

>0)

and(g[i-

1,k,1]

+1<=p) then

begin

f[i,j,0]

:=f[i-

1,k,1]

+a[j,i]

; g[i,j,0]

:=g[i-

1,k,1]

+1; end else

if(g[i-

1,k,0]

>0)

and(g[i-

1,k,0]

+1<=p) then

begin

f[i,j,0]

:=f[i-

1,k,0]

+a[j,i]

; g[i,j,0]

:=g[i-

1,k,0]

+1; end;

f[i,j,1]

:=a[j,i]

-b[j]

+max1;

g[i,j,1]

:=1;

max2:

=max

(max

(f[i,j,1]

,f[i,j,0]

),max2)

; end;

max1:

=max2;

end;

writeln

(max1)

;close

(input)

;close

(output)

;end.

只看我傻傻地打了個n三方

#include

#include

#include

using namespace std;

int n,m,p,f[2]

[1010][

1010

],g[

1010][

1010

],c[

1010

],ans=0;

inline

intread()

intmain()

}for

(int j=

1;j<=n;j++

) f[x]

[j][0]

=mx-c[j];}

for(

int j=

1;j<=n;j++

)for

(int k=

0;k<=p;k++

) ans=

max(ans,f[m%2]

[j][k]);

printf

("%d\n"

,ans)

;return0;

}

NOIP2009PJ 道路遊戲

啊哈,現在有重溫了一遍o o 從以前的o n2 現在的o n3 感覺自己廢了 儘管 大幅度減少 我們可以發現p其實只是乙個限制的作用,不需要列舉啊,它是乙個個走的,所以只需要記錄一下就行了 uses math var f,g array 0.1001,0.1001,0.1 of longint a ...

1131 NOIP2009PJ 道路遊戲

1131.noip2009pj 道路遊戲 game.pas cpp 比較難的dp 設 fi,j,0表示當前第i時刻到達第j個工廠,在這裡並不買機械人的最大金幣數 設 fi,j,1表示當前第i時刻到達第j個工廠,在這裡買乙個機械人的最大金幣數 注意,題目要求每個時刻必須要有乙個機械人,且走的時候是順時...

NOIP2009 道路遊戲

小新正在玩乙個簡單的電腦遊戲。遊戲中有一條環形馬路,馬路上有 n n n 個機械人工廠,兩個相鄰機械人工廠之間由一小段馬路連線。小新以某個機械人工廠為起點,按順時針順序依次將這 n n n 個機械人工廠編號為 1 n 1 n 1 n,因為馬路是環形的,所以第 n n n 個機械人工廠和第 1 1 1...