NOIP2018 信心賽 滋潤

2021-09-30 16:42:27 字數 973 閱讀 1353

輸入檔案為 輸入資料的第一行為兩個正整數 和 ,意義如題所示 接下來一行 個非負整數,第i個

表示 ,意義如題所示 接下來一行 個非負整數,第i個表示 ,意義如題所示

輸出檔案為 輸出檔案包含一行,表示最少的打包盒數量

見下發檔案 和

用11的包裝下3,用18的包裝下10、4和2,共2個包 當然也存在別的只用2個包的裝法

考慮狀壓dp。設f[x]表示選取物品狀態為x的最小揹包數量,g[x]為選取物品狀態為x,揹包數量為f[x]時最後乙個包剩餘的空間,列舉x中1的位然後轉移就行了。考慮這樣做的正確性,我們一定列舉出了所有可能的放置順序。這樣有80分

可以發現複雜度瓶頸在於列舉x中不為1的位,這個用樹狀陣列時呼叫的lowbit就可以優化到n2 。可以得到100分的高分

#include #include #include #include #define rep(i,st,ed) for (register int i=st;i<=ed;++i)

#define drp(i,st,ed) for (register int i=st;i>=ed;--i)

#define fill(x,t) memset(x,t,sizeof(x))

#define lowbit(x) ((x)&(-(x)))

const int inf=10777216;

const int n=16778216;

int a[n],b[505],f[n],g[n],n,m;

int read()

bool cmp(int x,int y)

int main(void) else if (b[f[i-tmp]+1]>=a[tmp]&&(f[i-tmp]+1g[i]))) }}

if (f[lim]>m) puts("-1");

else printf("%d\n", f[lim]);

return 0;

}

NOIP2018 信心賽 雞腿

波波手上有許多校慶時分發的雞腿券,他決定用玩遊戲的方式來分配這些雞腿券。已知波波會給出乙個 的 棋盤,並且他會在棋盤的左上角 1,1 處放置乙個棋子。兩名雞腿競爭者 和 將輪流移動棋子,每一回合 選手只能向上 下 左 右四個方向使棋子移動一步。為了使遊戲盡快結束波波還規定不能重複經過已經經過的格 子...

NOIP2018模擬賽2018 10 18 輕功

description 題目背景 尊者神高達進入了基三的世界,作為乙個 mmorpg 做任務是必不可少的,然而跑地圖卻令人十分不爽。好在基三可以使用輕功,但是尊者神高達有些手殘,他決定用梅花樁練習輕功。題目描述 一共有 n 個木樁,要求從起點 0 開始,經過所有梅花樁,恰好到達終點 n,尊者神高達一...

NOIP2018模擬賽2018 10 18 開荒

description 題目背景 尊者神高達作為乙個萌新,在公升級路上死亡無數次後被乙隻大黃嘰帶回了師門。他加入師門後發現有無窮無盡的師兄弟姐妹,這幾天新副本開了,尊者神高達的師門作為乙個 pve師門,於是他們決定組織一起去開荒。題目描述 師門可以看做以 1 為根的一棵樹,師門中的每乙個人都有一定的...