洛谷p3406海底高铁(前缀和差分思想)

题目链接在此:海底高铁 - 洛谷

分析题意,首先,若要从1到达5城市,只能由1-2-3-4-5这样的方式乘坐,而从5到3也只能5-4-3来乘坐,这也就代表着,每一次到达一个城市都得经历他们路上的每一个城市。

而我们更进一步分析来看,这也就意味着每一次访问一个城市都得把起点和终点上的所有城市值加上一。而这个次数值一定是和我们的选择有关的,这一点想必不用多说。

而我们每一次选择应该怎么选择呢?

买一张c的卡,享受b的价钱,但有一些数据他是a小于后面的值的,或者有时只经过一次时用a更省钱。

这时,我们想一下该用什么样的方式来让这些价钱最少呢?

答案也不难想到,利用贪心策略,让每一次每一个城市的价钱都最小,即次数*价钱的最小值,代码也就不难想到了。

此时,就有伙伴要问了,为什么要用到一个前缀和差分思想呢?

很简单,我们从上述题意中分析到要让某个区间内的数字全部加上,减上某个值,那么来吧!这不是差分吗?

好,详细代码如下,我已经尽量将注释标注完全。

#include<iostream>
using namespace std;
//差分加上贪心策略。
int n,m,x1,x2,a,b,c,k[100010]; 
long long sum,ans;
int main()
{
	
	cin>>n>>m;
	if(m>0)cin>>x1;
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值