首先,看出本題的題目原型是hanoi四塔。我靠我已經想到了dp方程啦的;其次,想出動規方程:e[i]=min(2*e[j]+f[i-j])(1<=j < i)(其中f為hanoi三塔的結果,e為hanoi四塔的結果)
最後:找規律。發現e相鄰兩數的差為:1,2,2,4,4,4,8,8,8,8,16,16,16,16,16,…利用此性質解決100%的資料。
但是因為不知道在模域裡怎麼取min不知道;
然後就放棄啦;
555555555555
#include
#define ll long long
using namespace std;
ll n,k,v,ans,mo=1e6+7;
int main()
洛谷 P1573 棧的操作
題目描述 現在有四個棧,其中前三個為空,第四個棧從棧頂到棧底分別為1,2,3,n。每乙個棧只支援一種操作 彈出並壓入。它指的是把其中乙個棧a的棧頂元素x彈出,並馬上壓入任意乙個棧b中。但是這樣的操作必須符合一定的規則才能進行。規則1 a棧不能為空。規則2 b棧為空或x比b棧棧頂要小。對於給定的n,請...
洛谷P1242 新漢諾塔
首先要將第n個盤子從x到y,那麼就要把比n小的盤子全部移到6 x y,然後將n移到y 仔細想想 6代表的是3根初始柱,3根目標柱。6 x y 便是我們的中轉柱了,因為到這個位置是最優的。感覺題目有鍋啊。include include include include using namespace s...
dfs 洛谷 P1242 新漢諾塔
題目描述 設有n個大小不等的中空圓盤,按從小到大的順序從1到n編號。將這n個圓盤任意的迭套在三根立柱上,立柱的編號分別為a b c,這個狀態稱為初始狀態。現在要求找到一種步數最少的移動方案,使得從初始狀態轉變為目標狀態。移動時有如下要求 一次只能移乙個盤 不允許把 移到小盤上面。輸入輸出格式 輸入格...