Codeforces Mundial de la Ronda 7 C - permutación particiones (combinatoria)

Significado de las preguntas:

N una situación mucho tiempo para arsenal completo, dividido en k partes, cada uno toma el valor máximo de la suma, y ​​la salida del valor máximo y el número de puntos igual al método de máxima.

ideas:

K toma un valor grande antes de que el índice de almacenamiento, entre cada dos valores de k grandes son k I + 1. - k I . + 1 proceso cabeza de serie, se puede multiplicar.

#include <bits / STDC ++ h.>
 usando  espacio de nombres std; 
typedef largo  largo ll;
const ll mod = 998244353 ;
int main () 
{ 
    int n, k; cin >> n >> k;
    int p [n]; para ( int + i: p) cin >> i;
    int pos [n + n] = { 0 };
    para ( int i = 0 ; i <n; i ++ ) 
        pos [p [i]] = i; 
    vector < int > v; 
    ll resumir =0 ;
    para ( int i = k, t = n; i> = 1 ; i-- ) { 
        suma + = t; 
        v.push_back (pos [t - ]); 
    } 
    Sort (v.begin (), V.END ()); 
    ll ans = 1 ;
    para ( int i = 0 ; i < int (v.size ()) - 1 ; i ++ ) 
        ans = ans * (v [i + 1 ] -v [i])% mod; 
    cout << suma << '  ' << ans << " \ n " ;
    regreso 0 ; 
}

 

Supongo que te gusta

Origin www.cnblogs.com/Kanoon/p/12528965.html
Recomendado
Clasificación