zoukankan      html  css  js  c++  java
  • D

    无奈,二十行代码看了几个小时。。 还不知道理解的对不对。。真完蛋。。

    思路:

    仔细想想,感觉难在怎么建立数据结构,存取状态。。

    用set来保存状态,set<pair<int,int>> A,B,其中A.first保存的是数字的值,sceond保存的是数字位置。

    set<pii> B的first保存的是要求的最小组数,second保存的是位置。

    最主要的还是dp的思想,从前一最优状态求现在的最优状态

    上代码

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstdlib>
     4 #include<cstring>
     5 #include<string>
     6 #include<queue>
     7 #include<algorithm>
     8 #include<map>
     9 #include<iomanip>
    10 #include<climits>
    11 #include<string.h>
    12 #include<numeric>
    13 #include<cmath>
    14 #include<stdlib.h>
    15 #include<vector>
    16 #include<stack>
    17 #include<set>
    18 #define FOR(x, b, e)  for(int x=b;x<=(e);x++)
    19 #define REP(x, n)     for(int x=0;x<(n);x++)
    20 #define mp            make_pair
    21 #define INF 1e7
    22 #define MAXN 100010
    23 #define maxn 1000010
    24 #define Mod 1000007
    25 #define N 1010
    26 using namespace std;
    27 typedef long long LL;
    28 
    29 set<pair<int,int> > sa,sb;
    30 int dp[MAXN],a[MAXN];
    31 int n, x, s, l;
    32 int main()
    33 {
    34     cin >> n >> s >> l;
    35     FOR(i, 1, n) cin >> a[i];
    36     dp[0] = 0;
    37     FOR(i, 1, n) {
    38         //每次加入一个数字
    39         sa.insert(mp(a[i],i));
    40         //第i位置,若不符合题意,则删去当前位置最左端的状态、数字
    41         while (sa.rbegin()->first - sa.begin()->first > s) {
    42             sb.erase(mp(dp[x],x));
    43             x++;
    44             sa.erase(mp(a[x],x));
    45         }
    46         //满足要求的话,作为有效状态加入集合sb中
    47         if (i >= l && sa.size() >= l && dp[i-l] >= 0)
    48             sb.insert(mp(dp[i-l],i - l));
    49         if (sb.empty()) 
    50             dp[i] = -1;
    51         else 
    52             dp[i] = sb.begin()->first + 1;
    53     }
    54     cout << dp[n] << endl;
    55     return 0;
    56 }
  • 相关阅读:
    jmeter jsr223脚本引用变量的问题
    apk反编译
    JS时间对像
    无缝滚动
    带详情图片轮播
    飘动文字2
    飘动的文字1
    抖动图片2
    点击图片图片上下抖动
    点击div掉下和上升
  • 原文地址:https://www.cnblogs.com/usedrosee/p/4388231.html
Copyright © 2011-2022 走看看