有一塊n*m的矩形巧克力,準備將它切成n*m塊。巧克力上共有n-1條橫線和m-1條豎線,你每次可以沿著其中的一條橫線或豎線將巧克力切開,無論切割的長短,沿著每條橫線切一次的代價依次為y1,y2,…,yn-1,而沿豎線切割的代價依次為x1,x2,…,xm-1。
例如,對於下圖6*4的巧克力,我們先沿著三條橫線切割,需要3刀,得到4條巧克力,然後再將這4條巧克力沿豎線切割,每條都需要5刀,則最終所花費的代價為y1+y2+y3+4*(x1+x2+x3+x4+x5)。
當然,上述簡單切法不見得是最優切法,那麼怎樣切割該塊巧克力,花費的代價最少呢?
輸入格式:
第一行為兩個整數n和m。
接下來n-1行,每行乙個整數,分別代表x1,x2,…,xn-1。
接下來m-1行,每行乙個整數,分別代表y1,y2,…,ym-1。
輸出格式:
輸出一整數,為切割巧克力的最小代價。
輸入樣例#1:
6 4213144
12
輸出樣例#1:
42
我們可以發現,每橫切一刀,豎切的次數就要加1,同樣的,每豎切一刀,橫切的次數就要加1,因此,我們可以得到貪心策略:越大的越先切,**如下:
#includeusing namespace std;
int a[11000],b[11000],aa[11000],bb[11000],n,m,maxn=0,k,kk,ans=0;
bool c[11000],d[11000];
int main()
}for(int i=1;imaxn)
}for(int i=1;i<=n+m-3;i++)
for(int i=1;imaxn&&d[i])
}if(kk==n)
ans+=aa[k];
else ans+=bb[k];
printf("%d\n",ans);
return 0;
}
你是我冬天的巧克力,夏天的冰淇淋
從danny那裡偷來的,眼鏡猴如果看見,千萬不要認為我在影射你 不過如果我不是影射你,有什麼必要 呢?你是我冬天的巧克力,夏天的冰淇淋 文 ivee p 她打過你嗎?我是說她一邊笑一邊打,在你講過一句什麼有的沒有的話之後,她打了一下你的手臂或是肩膀,那種可以大幅受力而不覺疼痛的地方,你希望她多打你幾...
昨日之我與今日之我
回想起學生時代做的那個agent平台,除錯乙個跨主機的通訊故障,通訊協議不正常。很多次,懷疑訊息的字段有錯誤,卻沒有抓一次包來分析。依稀想過有一次,想看一下包的結構,用到了tcpdump,不會用,作罷。想到了用工具,卻使用了乙個不恰當的工具。如果當時有ethreal,那半年的除錯工作會輕鬆很多很多很...
推薦系統之我讀,我思,我惑
年前,開始系統接觸推薦系統。說到這,我想提下,最早知道推薦系統,是源於研一的時候,一次實驗室組會,乙個本科生的畢設。他是用周的heat spread 方法,其實就是利用二部圖方法進行推薦。資料是乙個使用者和物品的連線關係的二部圖。其實,這個方法很簡單,也很容易實現。但是,後來,開始接觸項亮的博士 的...