C. Racing (pensando + codicioso)

Aunque es un inicio de sesión, la pregunta es bastante buena.

Idea: Primero que nada, puedes ver que no tiene nada que ver con el orden, así que ordena.

La secuencia después de la clasificación es la siguiente:

  Partitura original a1 a2 a3 a4 a5 a6 a7

  Aumentar puntuación: 7 6 5 4 3 2 1

Si desea maximizar a1, deje a1 + 7. Al mismo tiempo, dado que la secuencia es un solo aumento, codicioso hace que la puntuación de aumento disminuya. Si en este momento hay una puntuación total mayor que él, entonces nunca será un campeonato.

¿Y a4? También somos codiciosos de dejar a4 + 7, y prestamos atención a sumar 7. En este momento, el número delante de a4 debe ser menor que a4, y la puntuación agregada debe ser menor que a4, por lo que no necesitamos considerarlo. Para hacer que el número detrás de a4 sea lo más pequeño posible, entonces, de la misma manera, deje que el que tenga más puntos de bonificación se coloque antes de a4, y el último con menos puntos de bonificación, que es decreciente.

Cómo determinar rápidamente si el nuevo valor formado al agregar un valor fijo a la siguiente secuencia es mayor que el valor actual + n.

Puede st / árbol de segmento de línea. Pero la experiencia de ayer muestra que: simplemente tome el valor máximo del sufijo .

   

#include<iostream>
#include<vector>
#include<queue>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<cstdio>
#include<algorithm>
#define debug(a) cout<<#a<<"="<<a<<endl;
using namespace std;
const int maxn=3e5+1000;
typedef long long LL;
LL a[maxn],b[maxn];
LL sum[maxn];
int main(void)
{
  cin.tie(0);std::ios::sync_with_stdio(false);
  LL n;cin>>n;
  sum[n+1]=0;
  for(LL i=1;i<=n;i++){
    cin>>a[i];
  }
  sort(a+1,a+1+n);
  for(LL i=1;i<=n;i++){
    b[i]=n-i+1;
  }
  for(LL i=n;i>=1;i--){
    sum[i]=max(sum[i+1],b[i]+a[i]);
  }
  LL ans=1;
  for(LL i=1;i<=n-1;i++){
    if(a[i]+n>=sum[i+1]){
        ans++;
    }
  }
  cout<<ans<<endl;
return 0;
}

 

Supongo que te gusta

Origin blog.csdn.net/zstuyyyyccccbbbb/article/details/112981822
Recomendado
Clasificación