daimayuan每日一题#849 国家铁路
题目链接:国家铁路 - 题目 - Daimayuan Online Judgehttp://oj.daimayuan.top/course/11/problem/849
有亿点点难
思路:直接枚举是on4,考虑枚举一个点,然后查找出另外一个点构成的最小值。 namo,c*(|x1-x2|+|y1-y2|)这个式子在处理的时候就不能含有(x2,y2).我们考虑把绝对值拆开。
就会有两种情况: 一种是从左下到右上,一种是从左上到右下。 用动态规划维护最小值即可
//#define pei_pei_//#include<bits/stdc++.h>
#include<iostream>
#include<cmath>
#include<queue>
#include<vector>
#include<string>
#include<cstring>
#include<functional>
#include<iomanip>
#include<map>
#include<unordered_map>
#include<algorithm>
#include<set>
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define FI first
#define SE second
#define _for(type,i,a,b) for(type i=(a);i<(b);++i)
#define _efor(type,i,a,b) for(type i=(a);i<=(b);++i)
#define _rfor(type,i,a,b) for(type i=(a);i>(b);--i)
#define _refor(type,i,a,b) for(type i=(a);i>=(b);--i)
#define _sfor(p,st) for(auto &p:st)
#define endl '\n'
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
typedef pair<double,int> pdi;
const double pi=acos(-1.0);
const double eps=1e-8;
const int mod=100003;
const int _mod=998244353;
const ll inf=0x3f3f3f3f3f3f3f3f;
const int maxn=200010;
ull base=1331;
//-------------------------------------------------------------------ll maps[1005][1005];ll dpl[1005][1005];ll dpr[1005][1005];
//-------------------------------------------------------------------
signed main(){//ifstream cin("D:\\in.txt");//ofstream cout("D:\\out.txt");IOS;#ifdef pei_pei_double be=clock();#endif // err//==================================================================ll h,w,c;cin>>h>>w>>c;_efor(ll,i,1,h)_efor(ll,j,1,w)cin>>maps[i][j];//第一_efor(ll,i,1,h)_efor(ll,j,1,w){dpl[i][j]=inf;}_refor(ll,i,h,1)_efor(ll,j,1,w){if(i+1<=h&&j-1>=1){dpl[i][j]=min(dpl[i+1][j],dpl[i][j-1]);dpl[i][j]=min(dpl[i][j],maps[i+1][j]+c*((i+1)-j));dpl[i][j]=min(dpl[i][j],maps[i][j-1]+c*(i-(j-1)));}else if(i+1<=h){dpl[i][j]=min(dpl[i+1][j],maps[i+1][j]+c*((i+1)-j));}else if(j-1>=1){dpl[i][j]=min(dpl[i][j-1],maps[i][j-1]+c*(i-(j-1)));}}//第二_efor(ll,i,1,h)_efor(ll,j,1,w){dpr[i][j]=inf;}_efor(ll,i,1,h)_efor(ll,j,1,w){if(i-1>=1&&j-1>=1){dpr[i][j]=min(dpr[i-1][j],dpr[i][j-1]);dpr[i][j]=min(dpr[i][j],maps[i-1][j]-c*((i-1)+j));dpr[i][j]=min(dpr[i][j],maps[i][j-1]-c*(i+(j-1)));}else if(i-1>=1){dpr[i][j]=min(dpr[i-1][j],maps[i-1][j]-c*((i-1)+j));}else if(j-1>=1){dpr[i][j]=min(dpr[i][j-1],maps[i][j-1]-c*(i+(j-1)));}}ll ans=inf;_efor(ll,i,1,h){_efor(ll,j,1,w){ans=min(ans,dpl[i][j]+maps[i][j]+c*(j-i));}}_efor(ll,i,1,h)_efor(ll,j,1,w){ans=min(ans,dpr[i][j]+maps[i][j]+c*(j+i));}cout<<ans<<'\n';
//==================================================================#ifdef pei_pei_double en=clock();cout<<endl<<"time: "<<fixed<<setprecision(8)<<en-be<<" ms";#endif // errreturn 0;
}
daimayuan每日一题#849 国家铁路相关推荐
- daimayuan每日一题#851 Good Permutations
Good Permutations - 题目 - Daimayuan Online Judgehttp://oj.daimayuan.top/course/11/problem/851思路:纯纯推公式 ...
- daimayuan每日一题#814 排队
题目链接: 排队 - 题目 - Daimayuan Online Judgehttp://oj.daimayuan.top/course/11/problem/814 思路:首先什么情况下差的平方会最 ...
- daimayuan每日一题#812 互质
题目链接:互质 - 题目 - Daimayuan Online Judgehttp://oj.daimayuan.top/course/11/problem/812 要在1到m的闭区间内找到与给出数组 ...
- daimayuan每日一题#810 最短路计数
题目链接: 提交记录 #239296 - Daimayuan Online Judgehttp://oj.daimayuan.top/submission/239296 思路: 一开始写复杂了,以为要 ...
- daimayuan每日一题#863 吃糖果
思路:很明显的尺取,从两端不停向中间走,遇到相等就更新.不相等就小的移动. //#define pei_pei_//#include<bits/stdc++.h> #include< ...
- 2022-04-14每日刷题打卡
2022-04-14每日刷题打卡 代码源--每日一题 上帝的集合 - 题目 - Daimayuan Online Judge 题目描述 现在上帝有一个空集合,现在他命令你为他执行下列三种操作 n 次, ...
- 2022-04-01每日刷题打卡
2022-04-01每日刷题打卡 代码源--每日一题 Lusir的游戏 - 题目 - Daimayuan Online Judge Lusir 正在玩一个古老的基于 DOS 的游戏. 游戏中有 N+1 ...
- 2022-03-10每日刷题打卡
2022-03-10每日刷题打卡 力扣--每日一题 589. N 叉树的前序遍历 给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 . n 叉树 在输入中按层序遍历进行序列化表示,每 ...
- 2022-03-02每日刷题打卡
2022-03-02每日刷题打卡 代码源--div2每日一题 Alice的德州扑克 - 题目 - Daimayuan Online Judge 德州扑克是目前世界上最流行的扑克游戏,全世界有众多相关的 ...
最新文章
- cni k8s 插件安装_K8S 之 Flannel网络插件安装
- (七)JS基础知识四(搞定异步)【三座大山之三,必考!!!】
- 5W-Lora电台的远距离传输优势
- orcle mysql 查询_Oracle与Mysql的高级查询与难点sql
- Fiddler的下载安装与使用(流量抓包、手机抓包、拦截包、编辑包、重发包)
- 【Java】用键盘输入若干数字,以非数字字符结束,计算这些数的和和平均值
- LINUX系统服务总结之三:nis服务器全集
- 关于mysql单表支持的最大大小
- zoj3494BCD Code(ac自动机+数位dp)
- 嵌入式电路设计(从电路到系统)
- C++程序设计-第十周循环结构程序设计上机实践项目
- 移动磁盘拒绝访问要如何办啊
- 川大计算机学院李川,川大计算机学院硕导名单_跨考网
- echarts饼图自动显示数据
- python+itchat实现微信远程控制电脑
- 关于echarts无数据时显示问题
- iphone文件连接smb服务器,实用!三种iPhone与Windows电脑互传文件操作技巧,建议收藏...
- Android SQLite数据库导出/导入Excel
- 模块化高扩展性的前端框架 KISSY
- python 安装教程
热门文章
- HDMI端口辐射(EMI)超标解决方案
- 二叉树的后序遍历(递归和非递归)
- 【MATLAB100个实用小技巧】——界面设计(33-43)
- 传统企业PaaS平台功能设计与业务上云思考
- c 系统语言改为中文,主编设置win7系统英文版改成中文语言的操作技巧
- MongoDB $lookup函数实现两个表的关联查询+筛选+取特定值
- 二阶常系数非齐次线性微分方程特解的设定规则
- linux kde vga参数1366,Archlinux+KDE 下双屏VGA高分辨率设置
- 模型量化 pytorch2onnx
- SOFA Weekly | SOFAJRaft 发布、SOFAJRaft 源码解析文章合集