【洛谷 P2051】 [AHOI2009]中國象棋(DP)

題目鏈接
首先想到狀壓dp,但是\(n,m\)高達100,怎么壓?
容易發現,每行每列最多兩個象棋,否則就直接gg了。
一個巧妙的設置狀態的方式是,只需要記錄到當前行有多少列是放了1個炮和2個炮。
然后每一行有3種選擇:不放、放1個、放2個。分情況轉移就行了。

#include <cstdio>
const int MOD = 9999973;
const int MAXN = 110;
int n, m, ans;
long long f[MAXN][MAXN][MAXN];
int C(int x){   //C(x,2)return x * (x - 1) / 2;
}
int main(){scanf("%d%d", &n, &m);f[0][0][0] = 1;for(int i = 1; i <= n; ++i)for(int j = 0; j <= m; ++j)for(int k = 0; j + k <= m; ++k){(f[i][j][k] += f[i - 1][j][k]) %= MOD;  //不放(f[i][j + 1][k] += f[i - 1][j][k] * (m - j - k)) %= MOD; //在沒有棋子的列放1個if(j) (f[i][j - 1][k + 1] += f[i - 1][j][k] * j) %= MOD;   //在有棋子的列放1個(f[i][j + 2][k] += f[i - 1][j][k] * C(m - j - k)) %= MOD; //在沒有棋子的列放2個(f[i][j][k + 1] += f[i - 1][j][k] * (m - j - k) * j) %= MOD;  //一個放在有棋子的列,一個放啊沒有棋子的列if(j > 1) (f[i][j - 2][k + 2] += f[i - 1][j][k] * C(j)) %= MOD; //放2個在有棋子的列}for(int i = 0; i <= m; ++i)for(int j = 0; i + j <= m; ++j)(ans += f[n][i][j]) %= MOD;printf("%d\n", ans);return 0;
}

轉載于:https://www.cnblogs.com/Qihoo360/p/10918258.html

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

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

相關文章

循環 直到 python_如果您在Python中存在慢循環,則可以對其進行修復……直到無法解決為止...

循環 直到 pythonby Maxim Mamaev馬克西姆馬馬耶夫(Maxim Mamaev) Let’s take a computational problem as an example, write some code, and see how we can improve the running time. Here we go.讓我們以一個計算問題為例&#xff0c;編寫一些代碼&#xff0c;看看如何改…

阿里云視頻點播解決方案使用教程

2019獨角獸企業重金招聘Python工程師標準>>> 課程介紹 視頻點播&#xff08;ApsaraVideo for VoD&#xff0c;簡稱VoD&#xff09;是集視頻音視頻采集、編輯、上傳、自動化轉碼處理、媒體資源管理、分發加速于一體的一站式音視頻點播解決方案。 產品詳情&#xff1a…

云服務器安裝操作系統后如何連接,服務器如何安裝操作系統

服務器如何安裝操作系統 內容精選換一換如果您需要使用畢昇編譯器&#xff0c;則需要先在服務端安裝畢昇編譯器。畢昇編譯器基于開源LLVM開發&#xff0c;并進行了優化和改進&#xff0c;同時將flang作為默認的Fortran語言前端編譯器&#xff0c;是針對鯤鵬平臺的高性能編譯器。…

換行符

非原創windows保留\r\n作為換行符的原因&#xff1a; 回車鍵為什么叫回車鍵&#xff0c;大家有想過沒有&#xff0c;字面意思是回去的車子。 第一臺打印機&#xff0c;每一行打印完了之后在打印第二行之前&#xff0c;這個噴墨的玩意兒需要先回到這一行的行首&#xff0c;這叫回…

leetcode劍指 Offer 53 - II. 0~n-1中缺失的數字(二分查找)

一個長度為n-1的遞增排序數組中的所有數字都是唯一的&#xff0c;并且每個數字都在范圍0&#xff5e;n-1之內。在范圍0&#xff5e;n-1內的n個數字中有且只有一個數字不在該數組中&#xff0c;請找出這個數字。 示例 1: 輸入: [0,1,3] 輸出: 2 代碼 class Solution {public…

python 0基礎起步學習day2

元組&#xff1a;戴上了枷鎖的列表 元組是不可改變的&#xff0c;元組是不能隨意改變內部的元素的 元組和列表很像&#xff0c;它可以看成是不可修改的列表 所以創建元祖逗號是關鍵 因為(8,)是元組&#xff0c;這里*就不再是乘號&#xff0c;而是重復拷貝符【重復操作符】 直接…

react中的狀態機_在基于狀態圖的狀態機上使用React的模式

react中的狀態機by Shawn McKay肖恩麥凱(Shawn McKay) 在基于狀態圖的狀態機上使用React的模式 (Patterns for using React with Statechart-based state machines) Statecharts and state machines offer a promising path for designing and managing complex state in apps…

android scheme打開天貓,淘寶

直接上代碼 Intent intent new Intent(); intent.setAction("android.intent.action.VIEW"); /*String url "taobao://shop.m.taobao.com/shop/shop_index.htm?shop_id131259851&spma230r.7195193.1997079397.8.Pp3ZMM&point" "%7B%22…

leetcode1337. 方陣中戰斗力最弱的 K 行(優先隊列)

給你一個大小為 m * n 的方陣 mat&#xff0c;方陣由若干軍人和平民組成&#xff0c;分別用 1 和 0 表示。 請你返回方陣中戰斗力最弱的 k 行的索引&#xff0c;按從最弱到最強排序。 如果第 i 行的軍人數量少于第 j 行&#xff0c;或者兩行軍人數量相同但 i 小于 j&#xff…

dp 1.4協議_淺析關于HDMI接口與DP接口

顯示器現在主流已經為HDMI接口與DP接口&#xff0c;那么這些接口都有什么區別&#xff0c;以下表格會大致做個區分&#xff0c;建議優先使用DP接口。&#xff08;HDMI2.1接口目前僅發布協議&#xff0c;尚未大規模商用在高清電視機上有部分應用&#xff0c;Mini DP接口版本為DP…

淺談 JDBC 中 CreateStatement 和 PrepareStatement 的區別與優劣。

淺談 JDBC 中 CreateStatement 和 PrepareStatement 的區別與優劣。

jsp 構建單頁應用_如何使用服務器端Blazor構建單頁應用程序

jsp 構建單頁應用介紹 (Introduction) In this article, we will create a Single Page Application (SPA) using server-side Blazor. We will use an Entity Framework Core database. Single-Page Applications are web applications that load a single HTML page. They dy…

Apache的虛擬主機配置

虛擬主機配置一般可以分為&#xff1a;基于域名基于端口基于IP配置虛擬主機檢查防火墻&#xff0c;端口是否打開apache的配置文件。service iptables status #查看防火墻netstat -anp | grep 8021 #端口是必須要考慮的問題locate httpd.confmkdir -p /usr/local/apache/conf/ex…

oracle 的使用

一. docker 模式下進入數據庫 ubuntujiang:~$ sudo docker ps -a sudo: unable to resolve host jiang CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS …

sql number轉varchar_MySQL 指南之 SQL 語句基礎

個人所有文章整理在此篇&#xff0c;將陸續更新收錄:知無涯&#xff0c;行者之路莫言終(我的編程之路)零、結構化查詢語言&#xff1a;SQL(Structured Query Language)DDL 數據定義語言 管理庫&#xff0c;表DML 數據操作語言 增刪改查 DCL 數據控制語言 數據控制&#xff0c;權…

leetcode744. 尋找比目標字母大的最小字母(二分查找)

給你一個排序后的字符列表 letters &#xff0c;列表中只包含小寫英文字母。另給出一個目標字母 target&#xff0c;請你尋找在這一有序列表里比目標字母大的最小字母。 在比較時&#xff0c;字母是依序循環出現的。舉個例子&#xff1a; 如果目標字母 target ‘z’ 并且字符…

H3C交換機 匯聚接口上應用策略路由

QOS 方式的策略路由只能應用在接口或者Vlan接口上&#xff0c;無法應用在2層或者3層的匯聚接口上可以使用PBR的方式將策略路由應用到接口上&#xff0c;QOS策略路由可以和PBR策略路由共存&#xff0c;并且QOS的優先級更高&#xff0c;先匹配QOS&#xff0c;如果匹配不到再匹配P…

【Java NIO深入研究3】文件鎖

1.1概述——文件鎖 文件鎖定初看起來可能讓人迷惑。它 似乎 指的是防止程序或者用戶訪問特定文件。事實上&#xff0c;文件鎖就像常規的 Java 對象鎖 — 它們是 勸告式的&#xff08;advisory&#xff09; 鎖。它們不阻止任何形式的數據訪問&#xff0c;相反&#xff0c;它們通…

2018-2019-2 網絡對抗技術 20165202 Exp9 Web安全基礎

博客目錄 一、實踐內容 跨站腳本攻擊XSS跨站請求偽造CSRFSQL注入攻擊二、實驗中遇到的問題及解決三、基礎問題回答四、實驗總結一、實踐內容 本實踐的目標理解常用網絡攻擊技術的基本原理。Webgoat實踐下相關實驗。具體過程&#xff1a; 跨站腳本攻擊XSS跨站請求偽造CSRFSQL注入…

leetcode696. 計數二進制子串

給定一個字符串 s&#xff0c;計算具有相同數量0和1的非空(連續)子字符串的數量&#xff0c;并且這些子字符串中的所有0和所有1都是組合在一起的。 重復出現的子串要計算它們出現的次數。 示例 1 : 輸入: “00110011” 輸出: 6 解釋: 有6個子串具有相同數量的連續1和0&#…