【NOIP2018】DAY2T2——填數游戲(輪廓線狀壓的dp?搜索打表)

描述
小 D 特別喜歡玩游戲。這一天,他在玩一款填數游戲。
這個填數游戲的棋盤是一個n × m的矩形表格。玩家需要在表格的每個格子中填入一個數字(數字 0 或者數字 1),填數時需要滿足一些限制。
下面我們來具體描述這些限制。
為了方便描述,我們先給出一些定義:
? 我們用每個格子的行列坐標來表示一個格子,即(行坐標,列坐標)。(注意:行列坐標均從 0 開始編號)
? 合法路徑 P:一條路徑是合法的當且僅當:
這條路徑從矩形表格的左上角的格子(0,0)出發,到矩形的右下角格子(n ? 1, m ? 1)結束;
在這條路徑中,每次只能從當前的格子移動到右邊與它相鄰的格子,或者從當前格子移動到下面與它相鄰的格子。
例如:在下面這個矩形中,只有兩條路徑是合法的,它們分別是?1:(0,0) → (0,1) →(1,1)和?2:(0,0) → (1,0) → (1,1)。
在這里插入圖片描述
對于一條合法的路徑 P,我們可以用一個字符串w§來表示,該字符串的長度為n +m ? 2,其中只包含字符“R”或者字符“D”,第 i 個字符記錄了路徑 P 中第 i 步的移動方法,“R”表示移動到當前格子右邊與它相鄰的格子,“D”表示移動到當前格子下面與它相鄰的格子。例如,上圖中對于路徑?1,有w(P1) = “RD”;而對于另一條路徑?2,有w(P2) = “DR”。
同時,將每條合法路徑 P 經過的每個格子上填入的數字依次連接后,會得到一個長度為n + m ? 1的 01 字符串,記為 s§。例如,如果我們在格子(0,0)和(1,0)上填入數字0,在格子(0,1)和(1,1)上填入數字 1(見上圖紅色數字)。那么對于路徑?1,我們可以得到s(P1) = “011”,對于路徑?2,有s(P2) = “001”。
游戲要求小 D 找到一種填數字 0、1 的方法,使得對于兩條路徑?1,P2,如果w(P1) >w(P2),那么必須s(P1) ≤ s(P2)。我們說字符串 a 比字符串 b 小,當且僅當字符串 a 的字典序小于字符串 b 的字典序,字典序的定義詳見第一題。但是僅僅是找一種方法無法滿足小 D 的好奇心,小 D 更想知道這個游戲有多少種玩法,也就是說,有多少種填數字的方法滿足游戲的要求?
小 D 能力有限,希望你幫助他解決這個問題,即有多少種填 0、1 的方法能滿足題目要求。由于答案可能很大,你需要輸出答案對10^9 + 7取模的結果。
輸入
輸入文件共一行,包含兩個正整數 n、m,由一個空格分隔,表示矩形的大小。其中 n 表示矩形表格的行數,m 表示矩形表格的列數。
輸出
輸出共一行,包含一個正整數,表示有多少種填 0、1 的方法能滿足游戲的要求。
注意:輸出答案對 10^9+7 取模的結果。
樣例輸入
2 2
樣例輸出
12
提示
【樣例解釋】
在這里插入圖片描述
【輸入樣例2】
5 5
【輸出樣例2】
7136
在這里插入圖片描述

可以顯然看出滿足的首要條件是從左下到右上的任意一條對角線是單調不增的

顯然看出n=2n=2n=2的時候答案是4?3m?14*3^{m-1}4?3m?1

但是3的時候就懵逼了

只能暴力枚舉3以內的然后50分滾粗

因為有這樣一種情況
(1,1),(1,2),(2,2),(3,2),(3,3)(1,1),(1,2),(2,2),(3,2),(3,3)(1,1),(1,2),(2,2),(3,2),(3,3)(1,1),(2,1),(2,2),(2,3),(3,3)(1,1),(2,1),(2,2),(2,3),(3,3)(1,1),(2,1),(2,2),(2,3),(3,3)這兩條路徑就不行

正解是輪廓線狀壓dp

然而我不會

只能搜索打表

規律是一個三維的等比數列

跑了一下午終于跑出來了233……

上代碼(我也不知道該怎么講了)

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll mod=1e9+7;
int n,m;
inline int read(){char ch=getchar();int res=0;while(!isdigit(ch))ch=getchar();while(isdigit(ch))res=(res<<3)+(res<<1)+(ch^48),ch=getchar();return res;
}
inline ll ksm(ll a,int n){ll res=1;for(;n;n>>=1,a=a*a%mod)if(n&1)res=res*a%mod;return res%mod;
}
int main(){n=read(),m=read();if(n>m)swap(n,m);if(n==1){cout<<ksm(2,m)<<'\n';}if(n==2){cout<<4*ksm(3,m-1)%mod<<'\n';}if(n==3){cout<<112*ksm(3,m-3)%mod<<'\n';}if(n==4){if(m==4)puts("912");else cout<<2688*ksm(3,m-5)%mod<<'\n';}if(n==5){if(m==5)puts("7136");else cout<<21312*ksm(3,m-6)%mod<<'\n';}if(n==6){if(m==6)puts("56768");else cout<<170112*ksm(3,m-7)%mod<<'\n';}if(n==7){if(m==7)puts("453504");else cout<<1360128*ksm(3,m-8)%mod<<'\n';}if(n==8){if(m==8)puts("3626752");else cout<<10879488*ksm(3,m-9)%mod<<'\n';}
}

最后
推廣一下另外幾篇題解:
DAY1T1:鋪設道路:(并查集??)
DAY1T2:貨幣系統:(完全背包/搜索)
DAY1T3:賽道修建:(二分答案+貪心策略)
DAY2T1:旅行:(基環樹搜索)
DAY2T2:填數游戲:(暴力搜索找規律)
DAY2T3:保衛王國:(動態dp+Splay)

轉載于:https://www.cnblogs.com/stargazer-cyk/p/10366392.html

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

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

相關文章

Mysql中遇到的錯誤

Caused by: java.sql.SQLException: Unknown system variable ‘tx_isolation’ 這種錯誤是因為數據庫版本新的但是mysql的jar包是舊的&#xff0c;所以導入最新的mysqljar包 注意實體類和數據庫字段的映射關系&#xff0c;實體類中使用駝峰式的命名規則&#xff0c;大寫的字母…

Express 入門之Router - worldtree_keeper的專欄 - CSDN博客

要了解Router我們需要先知道到Application&#xff0c;首先&#xff0c;每一個express實例本身內部就內建了router&#xff0c;所以我們先從簡單的下手&#xff0c;先使用application&#xff1b;另外這里我們只選擇get方法&#xff0c;作為我們Router.Method, 之所以使用get是…

rest測試定義

1.為什么要做接口測試&#xff1a; 1.因為很多系統關聯都是基于接口實現的&#xff0c;接口測試可以將系統復雜的系統關聯進行簡化 2.接口工程比較單一&#xff0c;能夠比較好的進行測試覆蓋&#xff0c;也相對容易實現自動化持續集成 3.接口相對于界面功能 &#xff0c;會更底…

團隊開發進度報告9

&#xff08;1&#xff09;站立會議 &#xff08;2&#xff09;任務面板 &#xff08;3&#xff09;具體內容 昨天&#xff1a;完成了界面控件按鈕的設置問題&#xff1a;PHP數據處理&#xff0c;如何實現在線數據交互問題今天&#xff1a;hbuilder后臺環境搭建 轉載于:https:/…

nodejs+express整合kindEditor實現圖片上傳 - 木子豐咪咕晶 - 開源中國

kindEditor官網上中提供了ASP,ASP.NET,JSP相關的整合應用,http://kindeditor.net/docs/upload.html可以參照實現nodejs的整合,發現實用nodejs更簡單 環境: unbuntu 14.10 nodejs 0.10.35 express 4.11.2 formidable 1.0.16 kindEditor 4.1.10 webStorm 8 1.通過IDE或終端創建…

基于springboot多模塊項目使用maven命令打成war包放到服務器上運行的問題

首先&#xff0c;大家看到這個問題&#xff0c;可能并不陌生&#xff0c;而且腦子里第一映像就是使用mava中的clear package 或者 clear install進行打包&#xff0c;然后在項目中的target文件夾下面找到xxx.war&#xff0c;將這個war包放到外置的tomcat服務器下的webapps下面&…

Kafka學習筆記(3)----Kafka的數據復制(Replica)與Failover

1. CAP理論 1.1 Cosistency(一致性) 通過某個節點的寫操作結果對后面通過其他節點的讀操作可見。 如果更新數據后&#xff0c;并發訪問的情況下可立即感知該更新&#xff0c;稱為強一致性 如果允許之后部分或全部感知不到該更新&#xff0c;稱為弱一致性。 若在之后的一段時間&…

H5頁面隨機數字鍵盤支付頁面

H5頁面隨機數字鍵盤支付頁面 有個H5支付的業務需要隨機數字的鍵盤 參考了下文&#xff1a;https://blog.csdn.net/Mr_Smile2014/article/details/52473351 做了一些小修改&#xff1a; 在原有的基礎上&#xff0c;增加了一些按鍵反饋的效果。 每個按鍵加上邊框。 最終效果&…

expressjs路由和Nodejs服務器端發送REST請求 - - ITeye博客

Nodejs創建自己的server后&#xff0c;我們如果需要從客戶端利用ajax調用別的服務器端的數據API的接口&#xff0c;這時候出現了ajax跨域問題。 一種是利用在客戶端解決跨域問題 這種方案大家可以去網上查查 另一種方案是在服務器端去請求別的服務器&#xff0c;然后將數據再…

Jmeter操作mysql數據庫測試

1. 選中線程組鼠標點擊右鍵添加-->配置元件-->JDBC Connection Configuration&#xff1b; 2. DataBase Connection Configuration配置 Variable Name&#xff1a;配置元件的的所有配置所保存的變量&#xff0c;自定義變量名稱(不能使用mysql作為變量名&#xff0c;多個…

axios發送自定義請求頭的跨域解決

前端發送來的axios請求信息 this.$axios.request({ url:http://127.0.0.1:8001/pay/shoppingcar/, method:post, headers:{ authenticate:a073b3dabbb140e8b9d28debb6a356a1 # 自定義的請求頭部信息鍵值對, }, # 接上,這種key也算是一種請求頭,需要加入django中間件內…

前端“智能”靜態資源管理 - Onebox - 博客園

前端“智能”靜態資源管理 模塊化/組件化開發&#xff0c;僅僅描述了一種開發理念&#xff0c;也可以認為是一種開發規范&#xff0c;倘若你認可這規范&#xff0c;對它的分治策略產生了共鳴&#xff0c;那我們就可以繼續聊聊它的具體實現了。 很明顯&#xff0c;模塊化/組件化…

【轉】幾張圖看懂列式存儲

幾張圖看懂列式存儲 轉載于:https://www.cnblogs.com/apeway/p/10870211.html

hive -e和hive -f的區別(轉)

大家都知道&#xff0c;hive -f 后面指定的是一個文件&#xff0c;然后文件里面直接寫sql&#xff0c;就可以運行hive的sql&#xff0c;hive -e 后面是直接用雙引號拼接hivesql&#xff0c;然后就可以執行命令。 但是&#xff0c;有這么一個東西&#xff0c;我的sql當中有一個s…

我們是如何做好前端工程化和靜態資源管理 - 無雄 - 博客園

我們是如何做好前端工程化和靜態資源管理 隨著互聯網的發展&#xff0c;我們的業務也日益變得更加復雜且多樣化起來&#xff0c;前端工程師也不再只是做簡單的頁面開發這么簡單&#xff0c;我們需要面對的十分復雜的系統性問題&#xff0c;例如&#xff0c;業務愈來愈復雜&…

Mybatis-plus之RowBounds實現分頁查詢

物理分頁和邏輯分頁 物理分頁&#xff1a;直接從數據庫中拿出我們需要的數據&#xff0c;例如在Mysql中使用limit。 邏輯分頁&#xff1a;從數據庫中拿出所有符合要求的數據&#xff0c;然后再從這些數據中拿到我們需要的分頁數據。 優缺點 物理分頁每次都要訪問數據庫&#xf…

常見的6種JavaScript設計模式

常見的6種JavaScript設計模式 構造函數模式 /*** 構造一個動物的函數 */ function Animal(name, color){this.name name;this.color color;this.getName function(){return this.name;} } // 實例一個對象 var cat new Animal(貓, 白色); console.log( cat.getName() );工…

峰度(Kurtosis)和偏度(Skewness)

峰度&#xff08;Kurtosis&#xff09; 定義峰度又稱峰態系數&#xff0c;表征概率密度分布曲線在平均值處峰值高低的特征數&#xff0c;即是描述總體中所有取值分布形態陡緩程度的統計量。直觀看來&#xff0c;峰度反映了峰部的尖度。這個統計量需要與正態分布相比較。 公式定…

1.27

測試程序提出問題并解決轉載于:https://www.cnblogs.com/JustinTimberlake/p/10028870.html

javascript設計模式系列 - LukeLin - 博客園

javascript設計模式系列 創建型&#xff1a; 1.抽象工廠模式&#xff08;Abstract Factory&#xff09; 2.構建者模式&#xff08;Builder&#xff09; 3.工廠方法模式&#xff08;Factory Method&#xff09; 4.原型模式&#xff08;Prototype&#xff09; 5.單例模式&a…