NOIP2012模擬10 25 剪草

2021-07-22 10:42:05 字數 962 閱讀 4346

首先分析的出兩個結論,

1、每棵草最多隻剪一次

2、按照生長速度,先剪小的,再剪大的。

不難證明,略。

那麼把小草按生長速度從大到小排個序後, 設f

i,j 表示,在倒數第i個時刻,已經處理了j棵草時的最小高度和。

轉移為f[i

][j]

=min

(f[i

][j−

1],f

[i−1

][j−

1]−a

[j].

g∗(a

ns−i

+1)−

a[j]

.h)

#include 

#include

#include

#include

#include

#include

#include

const

long

long maxlongint=2147483647;

const

long

long mo=1000000007;

const

long

long n=55;

using

namespace

std;

long

long f[n][n],n,m,ans;

struct ddx

a[n];

bool cmp(ddx x,ddx y)

int main()

if(sum1<=m)

for(long

long i=1;i<=n;i++)

sort(a+1,a+1+n,cmp);

for(ans=1;ans<=n;ans++)}}

printf("-1");

}

NOIP2012模擬10 25 旅行

給定乙個n行m列的字元矩陣,代表空地,x 代表障礙。移動的規則是 每秒鐘以上下左右四個方向之一移動一格,不能進入障礙。計算 在空地中隨機選擇起點和終點 可以重合,此時最短耗時為0 從起點移動到終點最短耗時的平均值。每一行每一列至多有1個障礙,並且障礙不在對角線方向相鄰。以下矩陣是不合法的 x x.第...

NOIP2012模擬10 25 旅行

給定乙個n行m列的字元矩陣,代表空地,x 代表障礙。移動的規則是 每秒鐘以上下左右四個方向之一移動一格,不能進入障礙。計算 在空地中隨機選擇起點和終點 可以重合,此時最短耗時為0 從起點移動到終點最短耗時的平均值。每一行每一列至多有1個障礙,並且障礙不在對角線方向相鄰。以下矩陣是不合法的 xx.50...

NOIP2012模擬10 25 剪草

有n棵小草,編號0至n 1。奶牛bessie不喜歡小草,所以bessie要用剪刀剪草,目標是使得這n棵小草的高度總和不超過h。在第0時刻,第i棵小草的高度是h i 接下來的每個整數時刻,會依次發生如下三個步驟 1 每棵小草都長高了,第i棵小草長高的高度是grow i 3 bessie計算一下這n棵小...