• NOIP2018&2013提高组T1暨洛谷P5019 铺设道路


    题目链接:https://www.luogu.org/problemnew/show/P5019

    花絮:普及蒟蒻终于A了一道提高的题目?emm,写一篇题解纪念一下吧。求过!

    分析:

    这道题我们可以采用一种略带数学&贪心的思想来解决,其实也可以使用差分,但并没有必要了。因为任何一个点都可以单独减1。

    我们可以遍历每个点,然后发现当后一个点b的值大于前一个点的值时,我们需要把b减去前面的那个值(或再之前的),来实现最优解。

    因为我们发现,要最短的天数就必须每天最长的修理距离,最长的修理距离也就是要保证前几天施完工后给这一天留下的最长。

    然后问题差不多就解决了。

    如有问题,欢迎私信讨论。

    放代码

    代码:

    #include<cstdio>
    using namespace std;
    int a[100005];
    int main()
    {
    	int n;
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++)
    	{
    		scanf("%d",&a[i]);
    	}
    	int ans=0,tmp=0,last=0; 
    	for(int i=1;i<=n;i++)
    	{
    		if(a[i]>a[i-1])
    		{
    			ans+=tmp-last;
    			tmp=a[i];
    			last=a[i-1];
    		}
    	}
    	ans+=tmp-last;
    	printf("%d",ans);
    	return 0;
    }
    
  • 相关阅读:
    快速击键(MyEclipse编写的QuickHit项目)
    Java语言中的修饰符
    Java中的接口
    建造者模式应用场景
    原型设计模式
    转:fortios 5.4后门植入
    转:json注入
    linux tips
    资料收集
    转:nginx+CGI/FASTCGI
  • 原文地址:https://www.cnblogs.com/vercont/p/10210048.html
Copyright © 2020-2023  润新知