題意是:給出乙個 n*n 的棋盤 ,問放置 k 的 騎士 相當於 象棋中的馬 有多少中放置方法。。。
n等於10 是tle ,於是 n=10 打表
用 dfs寫的 ,執行時間長,但**簡單。。
開陣列時 用到滾動陣列。。。
由於攻擊範圍是 兩行 ,所以 是在三行之間做dp ,每種狀態表示兩行 ,這樣上下三行之間的關係就兩種狀態直接的關係。。
相當於 f[ i ] [ j ] = opt(f[ j ][ t ]);
此題由於兩行之間會攻擊, 所以兩行狀態 合成一中狀態時 (就是用最長二十位 的數來表示兩行狀態,10 位 表示 一行),合法的狀態數 就會減少。。 可以預處理出所有合法狀態。。。。
#include #include #include #define ll long long
using namespace std;
// 打表
ll mark[110]=;
int state[30000]; //訪問合法狀態。。。。
int fstate[(1<<20)+1000];
int statenum =0 ;
ll f[2][29000][52];
int n,k;
int bitnum(int i )
return sum ;
}void init_state()
if(line2&(line1>>2))
statenum ++;
state[statenum]= i;
fstate[i] =statenum;
}}int maxidx =;
void dfs(int r , int i,int j, int lev,int num)
2 25 演算法練習
時間限制 1.0s 記憶體限制 512.0mb 十六進製制數是在程式設計時經常要使用到的一種整數的表示方式。它有0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f共16個符號,分別表示十進位制數的0至15。十六進製制的計數方法是滿16進1,所以十進位制數16在十六進製制中是10,而十進位...
藍橋杯 練習(2 25)
時間限制 1.0s 記憶體限制 512.0mb 回形取數就是沿矩陣的邊取數,若當前方向上無數可取或已經取過,則左轉90度。一開始位於矩陣左上角,方向向下。輸入格式 輸入第一行是兩個不超過200的正整數m,n,表示矩陣的行和列。接下來m行每行n個整數,表示這個矩陣。輸出格式 輸出只有一行,共mn個數,...
2 25安卓自學
今天學習tablelayout 如果我們直接往tablelayout中新增元件的話,那麼這個元件將佔滿一行!如果我們想一行上有多個元件的話,就要新增乙個tablerow的容器,把元件都丟到裡面!tablerow中的元件個數就決定了該行有多少列,而列的寬度由該列中最寬的單元格決定 tablerow的l...