P3078 [USACO13MAR]Poker Hands S

https://www.luogu.com.cn/problem/P3078
涉及知识点:贪心
橙色题
 
思路:

可以发现填平一个坑的同时,旁边的坑也会连带着被填一些。

∴旁边没填满的那个大坑会连带减少减少a[i]-a[i-1]的深度。

从第一个坑开始用循环:下一个坑是否能被连带着填满,如果不是的话,用ans记录每次的a[i]-a[i-1]。最后输出第一个坑的深度(无法被连带着填满)+ans(后面的坑需要的天数)。

用贪心做代码十分的简洁,唯一需要注意的一点是需要开long long。

(不懂可以从第一个模拟着去想)


 

代码:
复制代码
#include<cstdio> using namespace std; long long n,a[100005];//十年OI一场空,不开long long见祖宗 long long ans=0; int main(){ scanf("%lld",&n);//输入 for(int i=1;i<=n;i++) scanf("%lld",&a[i]);//输入 for(int i=2;i<=n;i++) if(a[i]>a[i-1]) ans+=a[i]-a[i-1];//如果旁边坑没被填满,那就增加a[i]-a[i-1]天 printf("%lld\n",a[1]+ans);//输出 return 0; }
复制代码

 


__EOF__

本文作者灰の魔女伊蕾娜
本文链接https://www.cnblogs.com/2elaina/p/16485261.html
关于博主:编程小萌新一名,希望从今天开始慢慢提高,一步步走向技术的高峰!
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   -イレイナ  阅读(66)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示