[Coupe Blue Bridge] [algorithme améliore VIP] file d'attente pour aller chercher problème de l'eau (gourmand)

Description du sujet
a mis en attente à r n robinets individuels pour chercher de l' eau, ils ont rempli des seaux de temps t1, t2 ............ tn est un entier et chacun ne sont pas égaux, devrait être la façon d'organiser leur temps à aller chercher l' ordre de l' eau pour les rendre un coût total de minimum?

Taille des données et conventions
dont 80% des données pour assurer que n <= 10

Entrer
la première rangée n, r (n <= 500 , r <= 75)
la seconde n Sortie de comportement individuel temps écoulé Ti (Ti <= 100), la
sortie
du moins de temps d'
entrée échantillon
. 3 2
1 2. 3.
Comp sortie Exemple
7
idées: le problème est de trouver le temps qu'il faut un minimum de temps égal au temps de l'eau + réception d' attente. temps d'accès à l' eau est fixé, nous avons besoin d' un minimum de temps passé, pour minimiser le temps d'attente sur elle, de sorte que les changements à un blog sur le sujet à tirer problème de l' eau
code est le suivant:

#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;
}

Un ajout de simples est devenu un sujet qu'ils s'il vous plaît.
Pour faire le plein d' un ah, ( O ) / ~

Publié 529 articles originaux · louange gagné 27 · vues 40000 +

Je suppose que tu aimes

Origine blog.csdn.net/starlet_kiss/article/details/104902497
conseillé
Classement