RainbowDash 的旅行

D RainbowDash 的旅行 - 第七屆校賽正式賽 —— 補題

題目大意:

湖中心有一座島,湖的外圍有 m m m 間木屋(圍繞小島) ,第 i i i 間木屋和小島之間有 a i a_i ai? A A A 類橋, b i b_i bi? B B B 類橋, A A A 橋有車可以快速通過, B B B 橋需要步行,速度稍慢。

你計劃一次 n n n 天的旅行,對于每一天,你都需要從當前木屋走到小島游玩,再走到任何一間木屋(包括出發時所在的木屋),你不想浪費時間在趕路上,于是一天通過的兩座橋必須有一座是 A A A 類橋,起始在 1 1 1 號木屋,問旅行 n n n 天,有多少不同的路線組合?

1 < = n < = 1000 , 1 < = m < = 100 1<=n<=1000,1<=m<=100 1<=n<=1000,1<=m<=100

1 < = a i , b i < = 1 0 4 1<=a_i,b_i<=10^4 1<=ai?,bi?<=104

思路:

考慮第 i i i 間木屋到第 j j j 間木屋有多少種方法

f [ i ] [ j ] f[i][j] f[i][j] 表示第 i i i 間木屋到第 j j j 間木屋總方案數

如果從第 i i i 間木屋去小島走 A A A 橋,去第 j j j 間木屋則可以走 A A A 橋或者 B B B

那么方案數為 a [ i ] ? ( a [ j ] + b [ j ] ) a[i]*(a[j]+b[j]) a[i]?(a[j]+b[j])

如果從第 i i i 間木屋去小島走 B B B 橋,去第 j j j 間木屋只可以走 A A A

方案數為 b [ i ] ? a [ j ] b[i]*a[j] b[i]?a[j]

int f[M][M];
for(int i=1;i<=m;i++){for(int j=1;j<=m;j++){f[i][j]=a[i]*(a[j]+b[j])+b[i]*a[j];}
}

有了第 i i i 間木屋到第 j j j 間木屋總方案數,可以考慮 1 ? n 1-n 1?n 天總方案數的 d p dp dp

考慮第 k k k 天到達 第 1 ? m 1-m 1?m 間木屋的的方案數

d p [ k ] [ j ] dp[k][j] dp[k][j] 表示第 k k k 天到達第 j j j 間木屋的方案數

對于第 k k k 天到達第 j j j 間木屋的方案數,

考慮由第 k ? 1 k-1 k?1 天 從 i ( 1 ? n ) i(1-n) i(1?n) 間木屋轉移到第 j j j 間木屋的方案數: d p [ k ] [ j ] + = d p [ k ? 1 ] [ i ] ? f [ i ] [ j ] dp[k][j]+=dp[k-1][i]*f[i][j] dp[k][j]+=dp[k?1][i]?f[i][j]

第一天在1號木屋,所以第一天應由 d p [ 0 ] [ 1 ] dp[0][1] dp[0][1] 去轉移,所以初始化 d p [ 0 ] [ 1 ] = 1 dp[0][1]=1 dp[0][1]=1

int dp[N][M];for(int k=1;k<=n;k++){for(int i=1;i<=m;i++){for(int j=1;j<=m;j++){dp[k][j]+=dp[k-1][i]*f[i][j];}}
}

最后統計第 n n n 天到達第 1 ? m 1-m 1?m 間木屋總數即可

代碼:

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define fi first
#define se second
#define PII pair<int,int>
#define lowbit(x) x&-x
#define ALL(x) x.begin(),x.end()const int mod = 998244353;
const int N = 100 + 10;int f[N][N],dp[1010][N];
int a[N],b[N];
int n,m;void solve() {cin>>n>>m;for(int i=1;i<=m;i++){cin>>a[i];}for(int i=1;i<=m;i++){cin>>b[i];}for(int i=1;i<=m;i++){for(int j=1;j<=m;j++){f[i][j]=a[i]*(a[j]+b[j])%mod+b[i]*a[j]%mod;f[i][j]%=mod;}}dp[0][1]=1;for(int k=1;k<=n;k++){for(int i=1;i<=m;i++){for(int j=1;j<=m;j++){dp[k][j]+=dp[k-1][i]*f[i][j]%mod;dp[k][j]%=mod;}}}int ans=0;for(int i=1;i<=m;i++){ans+=dp[n][i];ans%=mod;}cout<<ans<<'\n';}signed main() {std::ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int T = 1;
//	cin >> T;while (T--) {solve();}return 0;
}

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

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

相關文章

MySQL-SQL-DDL語句、表結構創建語句

一.SQL SQL&#xff1a;一門操作關系型數據庫的編程語言&#xff0c;定義操作所有關系型數據庫的統一標準 二. DDL-數據庫 1. 查詢所有數據庫 命令&#xff1a;show databases; 2. 查詢當前數據庫 命令&#xff1a;select database(); 3. 創建數據庫 命令&#xff1a;create da…

Sora結構猜測

方案&#xff1a;VAE Encoder&#xff08;視頻壓縮&#xff09; -> Transform Diffusion &#xff08;從視頻數據中學習分布&#xff0c;并根據條件生成新視頻&#xff09; -> VAE Decoder &#xff08;視頻解壓縮&#xff09; 從博客出發&#xff0c;經過學術Survey&am…

TortoiseSVN設置忽略清單

1.TortoiseSVN > Properties&#xff08;如果安裝了 TortoiseSVN&#xff09;。 2. 在彈出的屬性窗口中&#xff0c;點擊 New > Other。 4. 在 Property name 中輸入 svn:ignore 。 5. 在 Property value 中輸入要忽略的文件夾或文件名稱&#xff0c;例如&#xff1a; #…

深入解析Java哈希表:從理論到實踐

哈希表&#xff08;Hash Table&#xff09;是計算機科學中最重要的數據結構之一&#xff0c;也是Java集合框架的核心組件。本文將以HashMap為切入點&#xff0c;深入剖析Java哈希表的實現原理、使用技巧和底層機制。 一、哈希表基礎原理 1. 核心概念 鍵值對存儲&#xff1a;通…

leetcode:1582. 二進制矩陣中的特殊位置(python3解法)

難度&#xff1a;簡單 給定一個 m x n 的二進制矩陣 mat&#xff0c;返回矩陣 mat 中特殊位置的數量。 如果位置 (i, j) 滿足 mat[i][j] 1 并且行 i 與列 j 中的所有其他元素都是 0&#xff08;行和列的下標從 0 開始計數&#xff09;&#xff0c;那么它被稱為 特殊 位置。 示…

《數字圖像處理》教材尋找合作者

Rafael Gonzalez和Richard Woods所著的《數字圖像處理》關于濾波器的部分幾乎全錯&#xff0c;完全從零開始寫&#xff0c;困難重重。關于他的問題已經描述在《數字圖像處理&#xff08;面向新工科的電工電子信息基礎課程系列教材&#xff09;》。 現尋找能夠共同討論、切磋、…

為 Jenkins Agent 添加污點(Taint)容忍度(Toleration)

在 Kubernetes&#xff08;k8s&#xff09;環境中使用 Jenkins 時&#xff0c;為 Jenkins Agent 添加污點&#xff08;Taint&#xff09;容忍度&#xff08;Toleration&#xff09;是一種常見的配置操作&#xff0c;它允許 Jenkins Agent Pod 被調度到帶有特定污點的節點上。下…

LeetCode算法題(Go語言實現)_28

題目 Dota2 的世界里有兩個陣營&#xff1a;Radiant&#xff08;天輝&#xff09;和 Dire&#xff08;夜魘&#xff09; Dota2 參議院由來自兩派的參議員組成。現在參議院希望對一個 Dota2 游戲里的改變作出決定。他們以一個基于輪為過程的投票進行。在每一輪中&#xff0c;每一…

使用python實現視頻播放器(支持拖動播放位置跳轉)

使用python實現視頻播放器&#xff08;支持拖動播放位置跳轉&#xff09; Python實現視頻播放器&#xff0c;在我早期的博文中介紹或作為資料記錄過 Python實現視頻播放器 https://blog.csdn.net/cnds123/article/details/145926189 Python實現本地視頻/音頻播放器https://bl…

用Python和Pygame創造粉色粒子愛心:3D渲染的藝術

引言 在計算機圖形學中&#xff0c;3D效果的2D渲染是一個迷人的領域。今天&#xff0c;我將分享一個使用Python和Pygame庫創建的粉色粒子愛心效果。這個項目不僅視覺效果驚艷&#xff0c;而且代碼簡潔易懂&#xff0c;非常適合圖形編程初學者學習3D渲染的基礎概念。 項目概述…

在匯編層面理解MESI

理解MESI協議在匯編層面的表現需要結合緩存一致性機制和處理器指令執行的行為。以下是分步驟的解釋&#xff1a; 1. MESI協議基礎 MESI是緩存行&#xff08;Cache Line&#xff09;狀態的協議&#xff0c;定義四種狀態&#xff1a; Modified&#xff08;修改&#xff09;&…

愛瑞編程2025暑期CSP集訓營開始招生啦!

一、什么是暑期CSP集訓營&#xff1f; 為全力備戰2025年9月CSP-J/S認證&#xff0c;舉辦的線下編程集訓活動。 旨在通過高強度編程訓練&#xff0c;幫助學員提升競賽能力&#xff0c;沖刺一等獎。 二、為什么參加集訓營&#xff1f; 高效編程特訓&#xff1a;封閉式學習&…

問題大集10-git使用commit提交中文顯示亂碼

&#xff08;1&#xff09;問題 &#xff08;2&#xff09;解決步驟 1&#xff09; 設置全局編碼為 UTF-8 git config --global core.quotepath false git config --global i18n.commitEncoding utf-8 git config --global i18n.logOutputEncoding utf-8 2&#xff09; 顯示或設…

當AI開始“思考“:大語言模型的文字認知三部曲

引言&#xff1a;從《黑客帝國》說起 1999年上映的科幻經典《黑客帝國》描繪了一個令人震撼的未來圖景——人類生活在一個由人工智能構造的數字矩陣中。當我們觀察現代大型語言模型的工作原理時&#xff0c;竟發現與這個虛構世界有著驚人的相似&#xff1a;人們正在用矩陣以及矩…

Golang改進后的任務調度系統分析

以下是整合了所有改進點的完整代碼實現: package mainimport ("bytes""context""fmt""io""log""net/http""sync""time""github.com/go-redis/redis/v8""github.com/robfig/…

前沿技術有哪些改變生活新趨勢

太陽能技術正在改變的生活 它讓移動設備有了新的能源選擇 太陽能板能直接把陽光轉成電能 這對戶外活動或者電力不便的地方特別有用 比如現在市面上有不少太陽能充電寶 小巧便攜 可以隨時給手機平板充電 需要注意的是 這些設備得放在太陽下才能工作 但它們確實能讓人在野外多用…

基于飛槳框架3.0本地DeepSeek-R1蒸餾版部署實戰

深度學習框架與大模型技術的融合正推動人工智能應用的新一輪變革。百度飛槳&#xff08;PaddlePaddle&#xff09;作為國內首個自主研發、開源開放的深度學習平臺&#xff0c;近期推出的3.0版本針對大模型時代的開發痛點進行了系統性革新。其核心創新包括“動靜統一自動并行”&…

C++設計模式-模板方法模式:從基本介紹,內部原理、應用場景、使用方法,常見問題和解決方案進行深度解析

一、基本介紹 模板方法模式&#xff08;Template Method Pattern&#xff09;是行為型設計模式&#xff0c;其核心思想是定義算法骨架&#xff0c;將具體步驟延遲到子類實現。如同烹飪菜譜的標準化流程&#xff1a;所有廚師遵循相同的操作流程&#xff08;備料→烹飪→裝盤&am…

Spring Boot 自定義日志打印(日志級別、logback-spring.xml 文件、自定義日志打印解讀)

一、Logback 在 Spring Boot 中&#xff0c;日志框架默認使用的是 Logback&#xff0c;Spring Boot 提供了對日志配置的簡化 Spring Boot 默認會將日志輸出到控制臺&#xff0c;并且日志級別為 INFO 可以在 application.yaml 或 application.properties 文件中進行日志配置 …

Python 異步編程:如何將同步文件操作函數無縫轉換為異步版本

在 Python 的異步編程世界中,os.path 模塊的同步文件操作函數常常讓我們陷入兩難境地:直接使用它們會阻塞事件循環,降低程序性能;但這些函數又如此方便實用。今天,我將帶你探索如何巧妙地將這些同步函數轉換為異步版本,讓你的異步程序既能享受高效的事件處理,又能無縫利…