• HDU5696 区间的价值


    传送门

    一句话题意:求1~n长度区间最大值与最小值之乘积的最大值(保证数据随机)

    Time cost: 45min

    Solution:

    比较基本的题 

    首先统计答案可以针对每个点更新所有长度 这样可以单调

    然后...然后就不会了

    发现是数据随机 所以可以乱搞

    对于每个点作为最大值 类似尺取法的方式更新最小值和答案

    这样一般情况下复杂度随数据波动性变化 单调性越强越凉

    Code:

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 #include<cmath>
     5 #include<queue>
     6 #include<iostream>
     7 #define B puts("GGGGGGG");
     8 #define ms(a,b) memset(a,b,sizeof a)
     9 #define rep(i,a,n) for(int i = a;i <= n;i++)
    10 #define per(i,n,a) for(int i = n;i >= a;i--)
    11 #define inf 2147483647
    12 using namespace std;
    13 typedef long long ll;
    14 ll read() {
    15     ll as = 0,fu = 1;
    16     char c = getchar();
    17     while(c < '0' || c > '9') {
    18         if(c == '-') fu = -1;
    19         c = getchar();
    20     }
    21     while(c >= '0' && c <= '9') {
    22         as = as * 10 + c - '0';
    23         c = getchar();
    24     }
    25     return as * fu;
    26 }
    27 const int N = 110003;
    28 //head
    29 int n;
    30 ll a[N],dp[N];
    31 int main() {
    32     // freopen("in.in","r",stdin);
    33     while(~scanf("%d",&n)) {
    34         ms(dp,0);
    35         rep(i,1,n) a[i] = read();
    36         rep(i,1,n) {
    37             dp[1] = max(dp[1],a[i] * a[i]);
    38             int l = i,r = i;
    39             ll minn = a[i];
    40             while(1) {
    41                 if(r-l+1 == n) break;
    42                 if(l > 1 && (r == n || a[l-1] > a[r+1])) minn = min(minn,a[--l]);
    43                 else minn = min(minn,a[++r]);
    44                 if(a[l] > a[i] || a[r] > a[i]) break;
    45                 dp[r-l+1] = max(dp[r-l+1],a[i] * minn);
    46             }
    47         }
    48         rep(i,1,n) printf("%lld
    ",dp[i]);
    49     }
    50     return 0;
    51 }
  • 相关阅读:
    [TJOI2013]循环格
    [CQOI2017]小Q的表格
    【51nod 1514】 美妙的序列
    【bzoj3456】 城市规划
    [SHOI2010]最小生成树
    CF438E The Child and Binary Tree
    bzoj 4712: 洪水
    POJ-3069 Saruman's Army---区间选点
    POJ-3617 Best Cow Line---字符串贪心
    HDU-1850 Being a Good Boy in Spring Festival---尼姆博奕的运用
  • 原文地址:https://www.cnblogs.com/yuyanjiaB/p/10040679.html
Copyright © 2020-2023  润新知