[ブルーブリッジカップ] [アルゴリズムが改善VIP]キューの水問題をフェッチする(貪欲)

主題の説明は
水をフェッチするためにR N個々のタップにキューに入れられており、それらはT2 ............ TN、時間t1のバケットを充填した整数であり、それぞれは等しくない、それらは合計コストにする水の順序をフェッチ自分の時間を配置する方法であるべきです最小?

データサイズ及び規則
データの80%がそのNを確保する<= 10

入力した
最初の行を、N、R(N <= 500 、R <= 75)
、第2のn個人の行動キック時間Ti(チタン<= 100)が経過し、
出力
最小時間のかかる
サンプル入力
3 2
1 2 3。
COMP出力例
7つの
アイデア:問題は、それが水は+を待っている受信時間に等しい時間の最小値をとる時間を見つけることです。水のアクセス時間が固定され、我々はそれに待機時間を最小限に抑えるために、費やした時間の最小値を必要とし、そのテーマに関するブログへの変更があること、水問題の描画するには
、次のようにコードを次のとおりです。

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

単純な加算は、彼らが喜ば話題になっています。
ああを給油する、(O)/〜

公開された529元の記事 ウォン称賛27 ビュー40000 +

おすすめ

転載: blog.csdn.net/starlet_kiss/article/details/104902497