NOIP2016提高A組模擬7 15 立方體

2021-07-14 23:42:37 字數 976 閱讀 1209

乙個整數:答案

e2 e3 0 8 1 2 1 1

其實,這題除了考演算法以外,考的主要是程式實現能力和摺紙能力。

首先折乙個立方體,按照題目的順序給前面,後面,上面……依次標上1~6

接著用這個立方體模擬一下怎麼滾的,就會發現往四個方向滾之後,六面依次變成了什麼,打個表(題目關鍵就在這個表)

1,2,3,4分別代表左,前,右,後。

int bl[5][7]=,,,

,};

然後就直接bfs,spfa暴力修改,注意f陣列和標記陣列不僅要記錄座標,還要記錄立方體的狀態。只要記兩個面應該就夠了,而我記錄了六個面,於是就成了八維陣列

#include

#include

#include

#include

#define fo(i,a,b) for(int i=a;i<=b;i++)

using namespace std;

int d[64*100][9],ddd[5]=,dddd[5]=,b[7],ans=100000000;

int bl[5][7]=,,,

,};bool bz[9][9][7][7][7][7][7][7];

int f[9][9][7][7][7][7][7][7];

int main()}}

bz[d[i][7]][d[i][8]][d[i][1]][d[i][2]][d[i][3]][d[i][4]][d[i][5]][d[i][6]]=0;

}printf("%d",ans);

}

NOIP2016提高組模擬 積木

比賽的時候用了個神奇的小暴力,本來打算拿40分,沒想到暴力出奇蹟,隨機資料下表現優良,居然碾過去了。暴力方法不講,只貼 僅供對拍。正解顯然要用狀態壓縮 看資料範圍 設fs i,0 1 2 s表示當前已選擇的積木集合,i表示在最上方的積木編號,0 1 2表示最上方的積木哪面朝上。轉移方程容易推導。暴力...

計數 NOIP2016提高A組模擬7 15

樣例輸入 2 10 樣例輸出 90資料範圍 剖解題目 題目說的很明了了。思路 求方案數,一般會設計道dp,規律之類的。解法 數字dp,設f i j 表示當前到了第i位,這一位的數字是j的方案數。自然有 f i j f i 1 l f i j 0 l k 且 l 0 and j 0 看到這位數,很明顯...

NOIP2016提高A組模擬9 2 單峰

問1 n,n個數的全排列中有多少個滿足單峰序列的性質,並把答案mod 1e9 7 這題還是很簡單的,一開始打了乙個50分的做法,然後發現答案就是2n 1,然後沒有發現輸入也會爆,於是就得了50分 我們容易發現峰一定是最大的那個數,我們把峰放到每乙個位置上,然後在往峰的左邊隨便填一些數,每種填數的方法...