栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 3282 Go Downstairs

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 3282 Go Downstairs

#include <stdio.h>#include <iostream>#include <algorithm>#include <vector>#include <math.h>#include <map>#include <assert.h>#include <string.h>using namespace std;#define MP make_pair#define PB push_back#define REP(i,x) for (int i = 0;i < x;++i)long long f[1007][17];int next[1007],where[310];int weight[1007];char img[1007][31];int main(){ int n,m,A,B,K; while (cin >> n >> m >> A >> B >> K) { REP(i,n) scanf("%s",img[i]); REP(i,m+5) where[i] = n; for (int i = n-1;i >= 0;--i) { int position = -1; REP(j,m) if (img[i][j] != '.') { position = j; break; } assert(position != -1); if (img[i][position] == 'G') weight[i] = A; else weight[i] = 0; next[i] = where[position]; where[position] = i; } weight[n] = 0; next[n] = n; for (int i = 0;i <= n;++i) for (int j = 0;j <= K;++j) f[i][j] = 0x7f7f7f7f7f7fll; for (int i = 0;i <= K;++i) f[n][i] = f[n-1][i] = 0; for (int i = n-1;i >= 0;--i) for (int j = 0;j <= K;++j) { long long dont = f[i+1][j] + weight[i], non_repair = B + f[next[i]][j]; long long do_repair = j ? (B + f[i+1][j-1]) : -0x7f7f7f7f7f7fll; f[i][j] = min(dont,max(non_repair,do_repair)); } long long ans = 0x7f7f7f7f7f7fll; for (int j = K;j <= K;++j) { long long dont = f[0][j], non_repair = B + f[next[0]][j] + weight[next[0]]; long long do_repair = j ? (B + f[0][j-1]) : -0x7f7f7f7f7f7fll; ans = min(dont,max(non_repair,do_repair)); } cout << f[0][K] << endl; }}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/377722.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号