【課后服務】20181022切蛋糕

權當拋磚引玉吧,掌握記搜的方法最重要。

#include<iostream>
#include<cstring> 
#include<cstdio>
using namespace std;
int n,m,k;
bool book[21][21];
int cake[21][21];
int dp[21][21][21][21];
int yt(int x,int y,int w,int h)//返回蛋糕內櫻桃值;x、y表示左上角坐標,w、h表示長和寬
{int yingtao=cake[x+w][y+h]-cake[x+w][y]-cake[x][y+h]+cake[x][y];return yingtao;
}
int dfs(int x,int y,int w,int h)//開成int類型
{	int ans=2147483647;if(dp[x][y][w][h]!=-1) return dp[x][y][w][h];//若x,y,w,h的狀態已被搜過,則返回已經保存的結果if(yt(x,y,w,h)==1) return 0;//櫻桃值為1時,代價為0(不用再切了)if(yt(x,y,w,h)==0) return 214748364;//櫻桃值為0時,代價無窮大;但在實現時,INF不能大于INT_MAX/2for(int i=1;i<w;i++) ans=min(ans,dfs(x,y,i,h)+dfs(x+i,y,w-i,h)+h);//枚舉各行for(int i=1;i<h;i++) ans=min(ans,dfs(x,y,w,i)+dfs(x,y+i,w,h-i)+w);//枚舉各列dp[x][y][w][h]=ans;//保存結果return ans;
}
int main()
{memset(dp,-1,sizeof(dp));//初始化scanf("%d%d%d",&n,&m,&k);for(int i=1;i<=k;i++){int x,y;scanf("%d%d",&x,&y);book[x][y]=1;}for(int i=1;i<=n;i++){//前綴和for(int j=1;j<=m;j++){cake[i][j]=cake[i-1][j]+cake[i][j-1]-cake[i-1][j-1];if(book[i][j]) cake[i][j]++;}}int ans=dfs(0,0,n,m);printf("%d",ans);return 0;
} 

記憶化搜索,其實就是動態規劃(DP)與搜索的完美結合,提高了搜索的效率,也提供了DP的道路。

所謂動態規劃,就是動態的規劃,其本質就是“狀態轉移”——從一種情況直接或間接推出其他情況。對于本題而言,就是要想清楚如何得到最小代價,是由哪幾部分組成。

so本題具體操作如下:

定義一四維數組dp,存儲在x,y,w,h的狀態下的最小代價。

定義一int類型函數dfs,其返回值即為代價。若蛋糕已有解,則直接返回現有代價。否則若當前蛋糕內櫻桃值為1,返回代價為0。若當前蛋糕內櫻桃值為0,返回代價為“無窮大”。否則繼續枚舉可供下刀的行和列,繼續對兩側進行搜索,打擂臺尋找最小代價。遍歷完所有情況后,保存當前結果并返回上一層。

小結:記憶化搜索與暴搜的最大區別在于,前者對搜索進行了優化,對當前結果進行了記錄,避免了重復搜索。

轉載于:https://www.cnblogs.com/dong-ji-yuan/p/9845264.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277033.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277033.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277033.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

我也來記錄我的一些開發心得和筆記!

博客園&#xff0c;我來了&#xff01; 轉載于:https://www.cnblogs.com/rose2007/archive/2007/07/11/814435.html

經典vim插件功能說明、安裝方法和使用方法介紹(已更新)

1 # 2 轉載請注明出處: http://blog.csdn.net/tge7618291 http://nuoerlz.is-programmer.com 8 # 9 1. 查看 key 相關信息說明的命令 :help keycodes 10 11 # 12 2. ctags 13 (1). 幫助手冊查看 14 :help usr_29 15 16 (2). 功能 17 ctags的功能, 只要在unix/lin…

【哈利波特】Sherbert Lemon對HP的解讀之11

NINEScar FaceThe characteristics of Harry’s scar change considerably.PS/SS – BurningQUOTEHarry, who was starting to feel warm and sleepy, looked up at the High Table again. Hagrid was drinking deeply from his goblet. Professor McGonagall was talking to P…

Linux 下, npm i 老是被killed 已殺死

2019獨角獸企業重金招聘Python工程師標準>>> node&#xff1a;v8.12.0 npm v6.4.1 npm i 安裝到一半會報這樣到錯誤&#xff0c;并終止&#xff1a; npm WARN deprecated socks1.1.10: If using 2.x branch, please upgrade to at least 2.1.6 to avoid a serious …

(轉)創建X509證書,并獲取證書密鑰的一點研究

創建X509證書&#xff0c;并獲取證書密鑰的一點研究 作者&#xff1a;肖波 個人博客&#xff1a;http://blog.csdn.net/eaglet ; http://www.cnblogs.com/eaglet 2007/7 南京 背景 服務器SSL數字證書和客戶端單位數字證書的格式遵循 X.509 標準。 X.509 是由國際電信聯盟&#…

css樣式優先級計算規則

css樣式的優先級分為引入優先級和聲明優先級。 引入優先級 引入樣式一般分為外部樣式&#xff0c;內部樣式&#xff0c;內聯樣式。 外部樣式&#xff1a;使用link引入的外部css文件。 內部樣式&#xff1a;使用style標簽書寫的css樣式。 內聯樣式&#xff1a;直接書寫在html標簽…

phpstudy-5.6.27-nts??安裝redis擴展

2019獨角獸企業重金招聘Python工程師標準>>> redis擴展安裝流程 第一步&#xff1a; 首先直接查看一下phpinfo()的信息 找到下面兩條信息 Architecturex86PHP Extension BuildAPI20131226,NTS,VC11Loaded Configuration FileD:\phpStudy\php\php-5.6.27-nts\php.ini…

用DDA Convolution和Perlin Noise來模擬水粉畫筆觸

在西方&#xff0c;水彩畫和水粉畫是可以統稱為Watercolor的,水粉畫通常也稱為不透明水彩畫或樹膠水彩畫&#xff08;Gouache&#xff09;&#xff0c;兩者既有相似之處&#xff0c;又有所區別。水粉畫是以水作為媒介&#xff0c;這一點&#xff0c;它與水彩畫是相同的。所以&a…

第三課 Makefile文件的制作(上)

1.序言&#xff1a; 前面的課程講解了從gcc編譯過程到其實踐&#xff0c;大家可以看到其實在這些步驟中有些是可以簡化編譯的&#xff0c;但由于參數多以及項目中文件數量多的原因難免會造成錯誤甚至是浪費大量的時間在這編譯上&#xff0c;為此linux系統中專門也有這個工具&am…

刺猬文│從啟動方式來看播客鏈的運行機制—設置驗證者

&#xff08;圖片出自網絡&#xff0c;版權歸原作者所有&#xff09;上一篇刺猬文我們介紹了播客鏈是如何實現Dpos的&#xff0c;其實質過程就是&#xff1a;節點A打包&#xff0c;將打包的區塊發送給其它的節點&#xff0c;其它節點根據當前時間&#xff0c;判斷是否應該由A節…

[記憶碎片的磁盤整理]老媽

卷標&#xff1a;老媽 掛載點&#xff1a;/family/mother 分區格式&#xff1a;親情 備注&#xff1a;老媽固然是我人生中的至親&#xff0c;但是搜遍我的大鬧&#xff0c;也沒能發現一點關于老媽的特殊記憶。老媽是一位再普通不過的女人、妻子、母親。也本該如此吧。碎片文件&…

探究Java如何實現原子操作(atomic operation)

1. 讓我們首先了解下java 中 Volatile 關鍵字 Volatile可實現java內存模型當中的可見性&#xff0c; java內存模型的可見性&#xff1a; 可見性&#xff0c;是指線程之間的可見性&#xff0c;一個線程修改的狀態對另一個線程是可見的。也就是一個線程修改的結果&#xff0c;另一…

JAVA-重寫equalse規范、技巧

JAVA-重寫equalse規范、技巧 1、自反性 任何非空引用x&#xff0c;x.equalse(x) 應該返回true2、對稱性 任何引用x和y&#xff0c;當x.equals(y)返回true&#xff0c;y.equals(x)也應返回true3、傳遞性 任何引用x、y和z&#xff0c;當x.equalse(y)和y.equalse(z)&#xff0c;那…

Password Creator(HTA)

<!--- 功能&#xff1a; 生成隨機密碼- 輸入&#xff1a; 用戶的設置- 輸出&#xff1a; 隨機密碼&#xff0c;同時拷貝到剪切板- 作者&#xff1a; maskx- 版本&#xff1a; v1.0- 歷史紀錄&#xff1a; 2007-7-11新建 - 創建時間&#xff1a; 200…

Julia 排坑指南

Julia 是一個高效的計算語言&#xff0c;據說性能和C有一拼。 Google也開始支持TPU的Julia&#xff0c; 個人覺得他的可視化比較厲害&#xff0c;下面是自己安裝過程的截圖&#xff0c;由于Julia的服務器在國外&#xff0c;所以下載的過程會出現一些不可描述的問題&#xff0c;…

Arts 第十九周(7/22 ~ 7/28)

ARTS是什么&#xff1f;Algorithm&#xff1a;每周至少做一個leetcode的算法題&#xff1b;Review&#xff1a;閱讀并點評至少一篇英文技術文章&#xff1b;Tip&#xff1a;學習至少一個技術技巧&#xff1b;Share&#xff1a;分享一篇有觀點和思考的技術文章。 Algorithm 深度…

難過的要命。。。。。。

請允許我這樣叫幾下&#xff0c;我知道自己是個老姑娘了&#xff0c;不能像小女孩那樣碰到點不開心的事就一哭二鬧三上吊。我不哭不鬧更不會傻得去上吊&#xff0c;我還有幾十年的大好日子要過呢&#xff0c;我兒子還沒生呢。現在我們還沒有正式的攤牌&#xff0c;應該說只差最…

基于.NET2.0的System.Net.Mail發送郵件Demo

第一種: //emailaddress郵件接收者地址 //mailcontent郵件主體內容 //mailtitle郵件標題 //mailsubject郵件主題 public bool SendMail(string emailaddress,string mailcontent,string mailtitle,string mailsubject) { …

美國美國,USA USA

外派美國微軟接的項目職位名稱&#xff1a;開發主管&#xff08;SDE LEADER&#xff09; 工作城市&#xff1a;Redmond 職位要求: Good English communicationGood SQL and C# .net framework experienceBackend developmentBI knowledge (he is expected to deal with millio…

Windows Server 2016之RDS配置證書

證書我們可以自己創建也可以到阿里云申請&#xff0c;一次申請可以用一年&#xff0c;&#xff08;自己創建的證書是不受信任的&#xff09;所以我們在阿里云上申請的&#xff0c;下面我們就把申請到的證書下載下來&#xff0c;放到一個文件夾里&#xff0c;并解壓接下來我們就…