IOI2007 D1T1 Miners 礦工配餐

2022-05-24 02:06:11 字數 962 閱讀 1557

題目大意:有$2$個煤礦,$n$天。每天給乙個煤礦送餐(共有有$3$種餐),價值為它與前面兩次送餐(如果有的話)不同的種類數。最大化價值。

題解:看到只有三種餐,考慮狀壓$dp$。$f_$表示現在是第$i$天,第乙個煤礦上一次為$j$,再上一次為$k$(沒有為$0$),$l,m$同理。

$$(calc(a,b,c)為求出這三個數中有多少種不為0的數)$$

$$f_ = f_ + calc(s_i,j,k)(如果f_存在)$$

$$f_ = f_ + calc(s_i,l,m)(如果f_存在)$$

卡點:1.加了乙個假的優化

c++ code:

#include #include #define maxn 100010

using namespace std;

int f[2][4][4][4][4], n, s[maxn], ans;

bool v[2][4][4][4][4];

int now = 1, past = 0;

char ch[maxn];

void up(int &a, int b)

int tmp[4];

int calc(int a, int b, int c)

int main() }}

}} }

for (int i = 0; i < 4; i++)

for (int j = (i != 0); j < 4; j++)

for (int k = 0; k < 4; k++)

for (int l = (k != 0); l < 4; l++) up(ans, f[now][i][j][k][l]);

printf("%d\n", ans);

return 0;

}

SCOI 2019 D1T1 跳躍遊戲

傳送門 有 mm m 個小球,n nn 個島。其中第乙個 最後乙個島以及中間的第 k kk 個島 1 k 1 k n 1 k是固定的,其餘島是懸浮的。一開始所有小球都在第乙個島,你的目標是把他們都移動到最後乙個島,並且使用的步數盡量小。每回合你可以移動乙個小球到它左邊或者右邊的那個平台,但是有一些限...

NOIP2016 D1T1 玩具謎題

洛谷p1563 看完了noip2017覺得noip2016是真的簡單 2017第一題就卡住2016第一題10分鐘ac m 100000很明顯暴力模擬就可以 唯一有一點點難度的地方就是小人的朝向對位置的影響 寫個函式用if else直接判斷也可以但這裡提供乙個更簡單的方法 將指令儲存在陣列中 題目給的...

NOIP2018 D1T1 鋪設道路

目錄春春是一名道路工程師,負責鋪設一條長度為 n 的道路。鋪設道路的主要工作是填平下陷的地表。整段道路可以看作是 n 塊首尾相連的區域,一開始,第 i 塊區域下陷的深度為 di。春春每天可以選擇一段連續區間 l,r 填充這段區間中的每塊區域,讓其下陷深度減少 1。在選擇區間時,需要保證,區間內的每塊...