博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
URAL 2072 Kirill the Gardener 3
阅读量:6681 次
发布时间:2019-06-25

本文共 1627 字,大约阅读时间需要 5 分钟。

思路:

dp+离散化

由于湿度的范围很大,所以将湿度离散化

可以证明,先到一种湿度的最左端或者最右端,然后结束于最右端或最左端最优,因为如果结束于中间,肯定有重复走的路

状态:dp[i][0]表示湿度为i结束于左端最优的步数

   dp[i][1]表示湿度为i结束于右端最优的步数

初始状态:dp[0][0]=dp[0][1]=0

状态转移:

        dp[i][0]=min(dp[i][0],dp[i-1][0]+abs(prel-nowr)+abs(nowl-nowr));

        dp[i][0]=min(dp[i][0],dp[i-1][1]+abs(prer-nowr)+abs(nowl-nowr));
        dp[i][1]=min(dp[i][1],dp[i-1][0]+abs(prel-nowl)+abs(nowl-nowr));
        dp[i][1]=min(dp[i][1],dp[i-1][1]+abs(prer-nowl)+abs(nowl-nowr));

prel和prer表示上一种湿度的最左端和最右端

nowl和nowr表示当前湿度的最左端和最右端

代码:

#include
using namespace std;#define ll long long#define pb push_back#define mem(a,b) memset(a,b,sizeof(a))const int N=1e5+5;const ll INF=0x3f3f3f3f3f3f3f3f;int a[N];ll dp[N][2];vector
pos[N];vector
sz;int main(){ ios::sync_with_stdio(false); cin.tie(0); int n; cin>>n; for(int i=1;i<=n;i++)cin>>a[i],sz.pb(a[i]); sort(sz.begin(),sz.end()); sz.erase(unique(sz.begin(),sz.end()),sz.end()); for(int i=1;i<=n;i++){ int t=lower_bound(sz.begin(),sz.end(),a[i])-sz.begin()+1; pos[t].pb(i); } mem(dp,INF); dp[0][0]=dp[0][1]=0; int prel=1,prer=1; for(int i=1;i<=sz.size();i++){ int nowl=pos[i][0],nowr=pos[i][pos[i].size()-1]; dp[i][0]=min(dp[i][0],dp[i-1][0]+abs(prel-nowr)+abs(nowl-nowr)); dp[i][0]=min(dp[i][0],dp[i-1][1]+abs(prer-nowr)+abs(nowl-nowr)); dp[i][1]=min(dp[i][1],dp[i-1][0]+abs(prel-nowl)+abs(nowl-nowr)); dp[i][1]=min(dp[i][1],dp[i-1][1]+abs(prer-nowl)+abs(nowl-nowr)); prel=nowl,prer=nowr; } cout<
<

 

转载于:https://www.cnblogs.com/widsom/p/8371614.html

你可能感兴趣的文章
Scala开始开发工具
查看>>
vs2010 mvc3
查看>>
RocketMQ 源码分析 高可用
查看>>
我的友情链接
查看>>
CentOS 7.5.1804 安装配置docker
查看>>
我的友情链接
查看>>
浏览器的缓存原理
查看>>
Swift::1::变量和常量
查看>>
SFB 项目经验-79-如何升级Exchange 2016 CU10高可用 To CU11
查看>>
写在毕业后快一月
查看>>
改变学习方法,今天完成第6课
查看>>
挖矿进程攻击的解决
查看>>
Android自适应屏幕大小和布局
查看>>
锁等待分析处理
查看>>
未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项
查看>>
傻瓜式操作Nagios
查看>>
被神话了的ERP系统
查看>>
Spring task配置,及解决加载两次的方法
查看>>
仿淘宝套餐选择插件 基于jQuery(原创)
查看>>
毫秒转时分秒
查看>>