Regalo de Ava

Descripción del título
Ava es una pequeña gata atigrada que se hace llamar Loli y vive en un mundo de fantasía. Hoy es el cumpleaños de Ava e invitó a sus amigos a la fiesta de cumpleaños.
Cada uno de sus amigos trajo un regalo a la casa de Ava. Como estos regalos eran demasiados, Ava los puso a todos en la habitación y salió a cortar el pastel.
Ava apagó las velas después de cumplir su deseo de cumpleaños, en ese momento escuchó un fuerte ruido en la habitación. Cuando corrí, descubrí que todos los regalos se habían convertido en un montón de cenizas. ¡El regalo que alguien le dio a Ava fue una bomba!
Ava estaba muy triste porque recordó el tamaño y la forma del regalo y descubrió que la bomba podría haber venido de más de un amigo. En primer lugar, recuerda el volumen Vi correspondiente a cada regalo. Ava concluyó basándose en su sentido común que
el volumen de una bomba es K, por lo que un regalo con un volumen menor que K no debe contener una bomba. Si el volumen de un regalo es V, se pueden cargar bombas V / K como máximo.
Cuando una persona da un obsequio que contiene una bomba, ya sabe que todo se convertirá en un montón de cenizas, por lo que no enviará nada fuera de la bomba. Entonces, si una persona regala una bomba y el volumen del regalo es V, entonces debe regalar bombas V / K.
Ava también descubrió que debe haber al menos bombas P que puedan causar tal daño.
Ava estaba inmersa en el dolor de la traición de su amigo y no tenía intención de calcular. Le gustaría pedirle que la ayude a calcular cuántas situaciones posibles cumplen las condiciones. Es decir, cuántas listas diferentes de personas que envían bombas, de manera que cada una de ellas ha enviado al menos una bomba, y la suma del número de bombas enviadas por todos es mayor o igual a la P. Decimos que las dos listas son diferentes, si y solo si hay al menos una persona que no aparece en una lista y aparece en la otra lista.

Ingrese
un número n en la primera línea para indicar el número de amigos. Hay n números en la segunda línea y el i-ésimo número Vi representa el volumen de obsequios entregados por cada persona. Los dos números K y P en la tercera fila indican el volumen de una bomba y al menos P bombas

Salida
5
5 4 3 3 1
1 5

Entrada de muestra
25

dp question El
estado de establecimiento f [i] [j] representa el número de planes para que la primera i persona envíe j bombas
1. La i-ésima persona no envía bombas f [i] [j] = f [i-1] [j];
2. La i-ésima persona envía una bomba. Si la bomba enviada es mayor que p, entonces todo se convierte en p
f [i] [min (p, j + a [i] / k)] = (f [i] [min (p, j + a [i] / k)] + f [i-1] [j]);

#include<bits/stdc++.h>
#define mod 998244353
using namespace std;
long long dp[3500][3500];
int n,p,a[3500],k;
int main()
{
    
    
    cin>>n;
    for(int i=1;i<=n;i++)cin>>a[i];
    cin>>k>>p;
 
    dp[1][0]=dp[1][a[1]/k]=1;
    for(int i=2;i<=n;i++)
    for(int j=0;j<=p;j++)
    {
    
    
     dp[i][j]+=dp[i-1][j];//不装
     if(a[i]/k)dp[i][min(p,j+a[i]/k)]=(dp[i][min(p,j+a[i]/k)]+dp[i-1][j])%mod;//zhuang
    }
    cout<<dp[n][p];
    return 0;
}

Supongo que te gusta

Origin blog.csdn.net/yhhy666/article/details/108222007
Recomendado
Clasificación