c/c++语言开发共享NOIP 2013 花匠 神仙操作

题目:https://www.luogu.org/problemnew/show/P1970 今天又学习了一个新的神仙操作; 标签是DP,想了一下,没什么心情写,默默打开题解——(狂喜!) 一位大佬(LittlePrincess)的思路简直是颠覆脑回路!! 根据A,B两个条件的描述,只要求有几个波峰 …

题目:https://www.luogu.org/problemnew/show/p1970

今天又学习了一个新的神仙操作;

标签是dp,想了一下,没什么心情写,默默打开题解——(狂喜!)

 

一位大佬(littleprincess)的思路简直是颠覆脑回路!!

 

根据a,b两个条件的描述,只要求有几个波峰波谷就好了。如果在上升突然下降ans就++;

反之同理;

注意,如果在最后的时候还在下降要把最后的一个加上;

因为在最后还在上升时,h[n+1](=0)<h[n] 所以ans会加上;

但是在最后还在下降时,h[n+1]<h[n],ans不会加上,所以要特判一下;

可以算是贪心的做法了(相对于正解dp来说);

上代码

#include<cstdio>  using namespace std;    int n,h[150000],ans=1;  bool jud;  int main()  {      scanf("%d",&n);      for(int i=1;i<=n;i++)      {          scanf("%d",&h[i]);      }      if(h[2]>=h[1]) jud=1;      for(int i=1;i<=n;i++)      {          if(jud==0&&i==n)           {              ans++;              break;          }          if(jud==1)          {              if(h[i+1]<h[i])               {                  ans++;                  jud=0;                  continue;              }          }          if(jud==0)          {              if(h[i+1]>h[i])              {                  ans++;                  jud=1;                  continue;              }          }      }      printf("%d",ans);      return 0;  }

 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/603457.html

(0)
上一篇 2021年5月11日
下一篇 2021年5月11日

精彩推荐