結果
問題 | No.971 いたずらっ子 |
ユーザー |
![]() |
提出日時 | 2020-07-17 15:26:21 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,624 bytes |
コンパイル時間 | 2,433 ms |
コンパイル使用メモリ | 200,088 KB |
最終ジャッジ日時 | 2025-01-11 21:46:56 |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 16 WA * 5 |
ソースコード
#include <bits/stdc++.h>using namespace std;inline int toInt(string s) {int v; istringstream sin(s);sin>>v;return v;}template<class T> inline string toString(T x) {ostringstream sout;sout<<x;return sout.str();}typedef long long ll;typedef vector<int> VI;typedef vector<VI> VVI;typedef vector<long long> VL;typedef vector<vector<long long>> VVL;typedef vector<string> VS;typedef pair<ll,int> P;typedef tuple<int,int,int> tpl;#define ALL(a) (a).begin(),(a).end()#define SORT(c) sort((c).begin(),(c).end())#define REVERSE(c) reverse((c).begin(),(c).end())#define EXIST(m,v) (m).find((v)) != (m).end()#define LB(a,x) lower_bound((a).begin(), (a).end(), x) - (a).begin()#define UB(a,x) upper_bound((a).begin(), (a).end(), x) - (a).begin()#define FOR(i,a,b) for(int i=(a);i<(b);++i)#define REP(i,n) FOR(i,0,n)#define RFOR(i,a,b) for(int i=(a)-1;i>=(b);--i)#define RREP(i,n) RFOR(i,n,0)#define en "\n"constexpr double EPS = 1e-9;constexpr double PI = 3.1415926535897932;constexpr int INF = 2147483647;constexpr long long LINF = 1LL<<60;constexpr long long MOD = 1000000007; // 998244353;#define dump(x) cerr << #x << " = " << (x) << endl;#define debug(x) cerr << #x << " = " << (x) << " (L" << __LINE__ << ")" << " " << __FILE__ << endl;template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; }template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; }void Main(){int H,W; cin >> H >> W;char a[H][W]; REP(i,H)REP(j,W) cin >> a[i][j];ll dp[H][W][2]; REP(i,H)REP(j,W)REP(k,2) dp[i][j][k] = LINF;dp[0][0][0] = dp[0][0][1] = 0;priority_queue<P,vector<P>,greater<P>> q; q.emplace(0,0);vector<P> dir{P(1,0),P(-1,0),P(0,1),P(0,-1)};while(!q.empty()){P p = q.top(); q.pop();int i = p.second/W, j = p.second%W;ll cost = p.first;for(auto& p : dir){int x = i+p.first, y = j+p.second;if(x<0||y<0||x>=H||y>=W) continue;if(a[x][y]=='k'){if(!chmin(dp[x][y][0], cost+2+dp[i][j][1])) continue;chmin(dp[x][y][1], dp[i][j][1]+1);}else{if(!chmin(dp[x][y][0], cost+1)) continue;chmin(dp[x][y][1], dp[i][j][1]+1);}q.emplace(dp[x][y][0], x*W+y);}}ll ans = dp[H-1][W-1][0];cout << ans << en;return;}int main(void){cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(0);cout<<fixed<<setprecision(15);int t=1; //cin>>t;REP(_,t) Main();return 0;}