NOIP提高組模擬 Value

2021-07-16 20:32:08 字數 987 閱讀 1479

相信大家一看到這道題就想起最經典的揹包問題,於是毫無疑問就往dp方向想。於是我們設出狀態轉移方程,設f[i][j][k]為我要拿i個物品,已經選了j個,現在第j個我選了k的最大價值,那麼f[i][j][k]=max,其中l為第j-1次選擇的物品。

但很快我們發現,你這樣做是不行的,因為我們還要解決順序問題,選擇相同的物品但順序不同會導致價值有差異。於是我們分析對於兩個物品a,b,先選a和先選b的差異。先選a時,ans=va

-wa +vb

,而先選b時,ans=vb

-wb +va

,我們發現只有-wa

和-wb

是不同的,而且wa

>wb

時答案明顯先選b更優,所以我們按wi

的值從小到大進行排序,排序後選擇相同的數所得的價值一定在所有順序中是最優的。

解決玩這些我們就可以進行dp了,但很快我們發現,這個dp是o(n4

),是會超時的,所以我們考慮另乙個轉移方程,設f[i]為我d倒著拿到第i個物品的最大價值,那麼f[i]=max,這樣一來,複雜度就將為o(n2

)了

#include

#include

#include

#include

#include

#define ll long long

using

namespace

std;

const

int maxn=5005;

struct codea[maxn];

int n,i,t,j,k,l,ans,f[maxn];

bool cmp(code x,code y)

NOIP提高組 20151029模擬

其實這套題目並不算太難,但是還是發揮不了100 水平。第一題直接線性篩法,求出質數,然後就可以判斷乙個數是否為質數了。這道題還可以用miller rabin去求,後者的速度較快,如果資料再大些,就要使用後者了。第二題,比賽時發現了,當n 7時,答案會每四個一迴圈,但是就沒有繼續往下想,其實想下去會想...

NOIP提高組模擬 幻象

phantom是一位愛思考的哲 學家。最近phantom得到了森 妖精的真傳。在他練功的時候,每秒他的思緒中都有一定的概率浮現出奇 異的幻象,持續x秒的幻象將產生x 2 的幻象值。phantom練功發自真心,他想知道,在n秒內他期望產生的幻象值是多少。因為持續x秒的幻象將產生x2 的幻象值,所以設乙...

2018 12 08 NOIP提高組 模擬A組

t1 經典套路,把 sn,fn,fn 1 作為矩陣,矩乘一遍就好了。注意要判斷負數的情況,考試時沒有看到這個條件,只有70分。以後如果見到絕對值就要看看負數有沒有影響。a i 的值域也是很重要的,不能不看。t2 暴力30分。這是一道思維題,正解不難,但有些繞。首先明確一點,當我們固定了線段的高度之後...