• luogu P1970 花匠 贪心


    首先这道题可以用DP模仿最长上升子序列得到80分,然后我们来考虑一下正解应该怎么写。题意可以简化为选择尽可能多的花组成一个波浪型,然后我们我考虑,在每一个波峰上,在不影响后续的情况下,选取尽可能大的情况最顶最优。在波谷上,在不影响后续的情况下,选取尽可能小的情况也一定最优秀。因为尽可能大/小,我们后续的选择余地就更大。所以我们可以进行贪心。

     1 #include <cstdio>
     2 #include <algorithm>
     3 using namespace std;
     4 int n,ans1,ans2;
     5 int vec[200000];
     6 bool top;
     7 int main()
     8 {
     9     scanf("%d",&n);
    10     for (int i = 1;i <= n;i++)
    11         scanf("%d",&vec[i]);
    12     ans1 = 1;
    13     for (int i = 2;i <= n;i++)
    14     {
    15         if (!top)
    16         {
    17             if (vec[i] > vec[i - 1])
    18             {
    19                 ans1++;
    20                 top = true;  
    21             }
    22         }else
    23         {
    24             if (vec[i] < vec[i - 1])
    25             {
    26                 ans1++;
    27                 top = false;
    28             }
    29         }
    30     }
    31     top = true;
    32     ans2 = 1;
    33     for (int i = 2;i <= n;i++)
    34     {
    35         if (!top)
    36         {
    37             if (vec[i] > vec[i - 1])
    38             {
    39                 ans2++;
    40                 top = true;  
    41             }
    42         }else
    43         {
    44             if (vec[i] < vec[i - 1])
    45             {
    46                 ans2++;
    47                 top = false;
    48             }
    49         }
    50     }
    51     
    52     printf("%d
    ",max(ans1,ans2));
    53     return 0;
    54 }
    心之所动 且就随缘去吧
  • 相关阅读:
    JPA-基本注解
    响应式、自适应式
    Spring boot传值注意事项
    Angular与Vue
    Java 时间转换
    SpringBoot 上传读取图片 巨坑
    前后端分离之 文件上传
    System.nanoTime与System.currentTimeMillis
    sqlserver 新增子段有默认值
    json转换
  • 原文地址:https://www.cnblogs.com/iat14/p/11520199.html
Copyright © 2020-2023  润新知