0x02 基本演算法 列舉 模擬 遞推

2022-01-09 22:03:12 字數 3567 閱讀 8674

int _, n, m, k, x, y;

vectorvec;

void calc(int x)

calc(x + 1), vec.push_back(x);

calc(x + 1), vec.pop_back();

}int main()

int n, m;

vectorvec;

void calc(int x)

calc(x + 1), vec.push_back(x);

calc(x + 1), vec.pop_back();

}int main()

int n, m;

int order[20];

bool chosen[20];

void cal(int k)

for (int i = 1;i <= n; ++i)

}int main()

const int n = 6;//因為後續操作讀取的是字串

char g[n][n];

char backup[n][n];//備份 --- 用於記錄每次列舉第1行的情況

int n;

int dx[5] = , dy[5] = ;//用於表示當前位置及該位置的上下左右位置的偏移量

//改變當前燈及其上下左右燈的狀況

void turn(int x, int y)

}} int main()

}//從第一行向下遞推至倒數第二行

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

//檢驗最後一行燈是否全亮,若存在暗燈,則此方案不成立

bool dark = false;

for(int j = 0; j < 5; j ++)

}if(!dark) res = min(step, res);

memcpy(g, backup, sizeof backup);//還原資料,用於下次方案的操作

}if(res > 6) res = -1;

cout << res << endl;

}return 0;

}

// 另一種解

}

題意:給你乙個原始的分形圖,t組資料,對於每組資料,輸入3個數n,h,o (n為在第n級,h,o為兩個房子的編號),求在第n級情況下,編號為h和o的兩個點之間的距離*10為多少。

其中,第n級分形圖形成規則如下:

首先先在右下角和右上角複製一遍n-1情況下的分形圖

然後將n-1情況下的分形圖順時針旋轉90度,放到左上角

最後將n-1情況下的分形圖逆時針旋轉90度 ,放到左下角

編號是從左上角那個點開始計1,沿著道路計數。

這是著名的通過一定規律無限包含自身的分形圖。為了計算方便,我們將題目中房屋編號從0開始編號,那麼s與d也都減掉1.

大體思路:設calc(n,m)求編號為m的房屋編號在n級城市中的座標位置,那麼距離是:calc(n,s-1) 與 calc(n,d-1)的距離。

從n(n > 1)級城市由四座n-1級城市組成,其中:

1.左上的n-1級城市由城市結構順時針旋轉90度,從編號的順序看,該結構還做水平翻轉,座標轉換至n級時如下圖。

2與3.右上和右下和原始城市結構一樣,座標轉換至n級時如下圖。

市由城市結構逆時針旋轉90度,從編號的順序看,該結構也做了水平翻轉。

旋轉座標的變化可通過公式:

(設len = 2(n-1))當旋轉角度是逆時針90度時,也就是順時針270度時,(x,y)->(y, -x),然後再進行水平翻轉,(y,-x)->(-y,-x)。然後再將圖形平移到n級圖形的左下角,在格仔上的座標變化是,水平方向增加len - 1個位置,垂直方向增加2len - 1個位置。因此座標(x,y)按照規則轉移到了(2len-1-y,len-1-x).

注意:n-1級格仔裡擁有的房子數量是cnt = 22n /4,即22n-2.

當前編號m在n級格仔的哪個方位是:m / cnt.

當前編號m在n-1級格仔裡的編號是: m %cnt;

詳細**如下:

using ll = long long;

paircalc(ll n, ll m)

}int main()

return 0;

}

#include #include using namespace std;

vectorchosen;

int n, m;

void dfs(int x);

int main()

void dfs(int x)

chosen.push_back(x);

dfs(x + 1);

chosen.pop_back();

dfs(x + 1);

return;

}

0x02 列舉 模擬 遞推

1 tyvj1266 這站是不是已經倒閉了啊 usaco陳年老題,對於這種開關問題啊,最多隻按一次,而且第一行隨便按完下面的就全確定了,類似的還有固定翻轉乙個長度的區間,這個也是最多翻一次的而且翻的次數為n l 2 poj1958 四塔的漢諾塔問題。但是好像是弱化的二維dp遞推,馬馬虎虎吧 3 bz...

逆向工程 0x02

常用的彙編指令 指令示例 含義說明 movmov eax,ecx eax ecx 將ecx的值存入eax addadd eax,ecx eax ecx 將eax的值加上ecx的值 subsub eax,ecx eax ecx 將eax的值減去ecx的值 incinc eax eax 將eax的值加1...

《演算法競賽高階指南》0x02 遞迴與遞推 學習總結

感受 遞迴中的分形太簡單了,基本就是個找規律 遞迴,講一講分治 分治,即分而治之 個人認為,其實它和二分差不多 或者二分其實是它的一部分?二分和分治的區別,在我看來,是二分需要有決策單調性,而分治貌似不需要?借助分治,把答案的複雜度從n 2降級到nlogn 其中,還是二分的思路,先把問題的當前狀態一...