結果
| 問題 |
No.2430 Damage Zone
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-10-07 15:36:35 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 5 ms / 2,000 ms |
| コード長 | 943 bytes |
| コンパイル時間 | 1,710 ms |
| コンパイル使用メモリ | 169,428 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-07-26 17:50:30 |
| 合計ジャッジ時間 | 2,463 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 28 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pll pair<ll,ll>
#define pii pair<int,int>
#define fs first
#define sc second
#define tlll tuple<ll,ll,ll>
const int mxn = 210;
const int mod = 998244353;
int dp[2][mxn][mxn];
string arr[mxn];
inline int mad(int a,int b){
a += b;
return a>=mod?a-mod:a;
}
int main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int n,m,k;
cin>>n>>m>>k;
for(int i = 1;i<=n;i++)cin>>arr[i],arr[i] = "#"+arr[i];
bool roll = 0;
dp[roll][1][k] = 1;
for(int i = 1;i<=n;i++){
roll ^= 1;
memset(dp[roll],0,sizeof(dp[roll]));
for(int j = 1;j<=m;j++){
if(arr[i][j] == '#')continue;
int sh = (arr[i][j] == 'o');
for(int h = 0;h<=k;h++){
if(h-sh<0)continue;
dp[roll][j][h-sh] = mad(dp[roll^1][j][h],dp[roll][j-1][h]);
}
}
}
int sum = 0;
for(int i = 1;i<=k;i++)sum = mad(sum,dp[roll][m][i]);
cout<<sum;
}