【UOJ244】【UER #7】短路
2024-09-18 00:45:12
题解:
感觉贪心水平有所提高。。
首先比较显然的事情是我们可以枚举最深进行到哪一层
我们会发现,当且仅当该层是最小值才会使用决策,
并且是从该层的左上,走到右下
另外中间步骤就是(好难描述啊)一个单调下降序列,每个会走最多的向右走的步数,然后中间的点只走一次 (这句话应该正常人是无法理解的)
但是处理起来还是比较简单的,我们考虑从上一层到这一层实际上就是有一个多往右走一格,所以维护前缀最小值
代码:
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define IL inline
#define rint register ll
#define rep(i,h,t) for (rint i=h;i<=t;i++)
#define dep(i,t,h) for (rint i=t;i>=h;i--)
const ll N=2e5;
const ll INF=1e18;
ll a[N],n,f[N],ans=INF;
int main()
{
freopen("1.in","r",stdin);
freopen("1.out","w",stdout);
ios::sync_with_stdio(false);
cin>>n;
rep(i,,n+) cin>>a[i];
ll mina=INF;
dep(i,n+,)
{
if (i==n+) f[i]=a[i];
else f[i]=f[i+]+a[i]+mina;
if (mina>=a[i])
{
ans=min(ans,f[i]*+(*i-)*a[i]);
mina=a[i];
}
}
cout<<ans<<endl;
return ;
}
最新文章
- Liferay 6.2 改造系列之九:修改用户信息填写规则
- JPA的Column注解总结
- Struts2 cookie的存取
- centos 6.5关闭NetworkManager
- verilog中连续性赋值中的延时
- hdu4708
- CODEFORCES ROUND #273 DIV2
- [转]How to create an anonymous IDA PRO database (.IDB)
- 【一天一道LeetCode】#114. Flatten Binary Tree to Linked List
- adb环境配置+常用adb命令+Logcat命令的用法+手动进行文件比对的方法+批量挪bug
- 手机上的m3u8视频(缓存)怎么转成MP4?
- Java并发程序设计(七)乐天派:无锁
- [转]skynet Lua中的协程
- mes平台的一些方法
- VS常用快捷鍵
- VMware Coding Challenge: Removing Duplicates Entries
- 关于bootstrap的认识
- Activiti学习记录(五)
- C#结构体和类的区别(转)
- 用WEKA进行数据挖掘