[Blue Bridge Cup] [algoritmo melhora VIP] fila para buscar problema da água (greedy)

A inscrição assunto
tem fila para r n torneiras individuais para buscar água, encheram baldes de tempo t1, t2 ............ tn é um inteiro e cada um não são iguais, deve ser a forma de organizar o seu tempo buscando a fim de água para torná-los um custo total de mínimo?

O tamanho dos dados e convenções
que 80% dos dados para garantir que n <= 10

Introduza
a primeira fila n, r (n <= 500 , r <= 75)
o pontapé comportamento individual segundo n decorrido tempo Ti (Ti <= 100);
saída
a menos demorada
de entrada de amostra
. 3 2
1 2. 3.
Comp saída Exemplo
7
idéias: o problema é encontrar o tempo que leva um mínimo de tempo igual ao tempo da água receptora esperando +. Água tempo de acesso é fixo, é necessário um mínimo de tempo gasto, apenas para minimizar o tempo de espera nele, para que as alterações de um blog sobre o assunto para desenhar problema da água
código é a seguinte:

#include<bits/stdc++.h>
#define ll long long
using namespace std;

const int maxx=1e3+100;
int a[maxx];
vector<int> p[maxx];
int n,m;

int main()
{
	scanf("%d%d",&n,&m);
	ll Sum=0;
	for(int i=1;i<=n;i++) scanf("%d",&a[i]),Sum+=a[i];
	sort(a+1,a+1+n);
	int tx=0;
	for(int i=1;i<=n;i++)
	{
		p[tx].push_back(a[i]);
		tx=(tx+1)%m;
	}
	ll ans=0;
	for(int i=0;i<m;i++)
	{
		if(p[i].size())
		{
			ll sum=0;
			for(int j=0;j<p[i].size()-1;j++)
			{
				sum+=p[i][j];
				ans+=sum;
			}
		}
	}
	cout<<ans+Sum<<endl;
	return 0;
}

A simples adição tornou-se um tópico que quiserem.
Para reabastecer um ah, ( S ) / ~

Publicado 529 artigos originais · ganhou elogios 27 · vê 40000 +

Acho que você gosta

Origin blog.csdn.net/starlet_kiss/article/details/104902497
Recomendado
Clasificación