P2909 [USACO08OPEN]牛の車の牛の車

https://www.luogu.com.cn/problem/P2909
题目描述
N(1 <= N <= 50,000)牛が便利番号1 ... NをCowtopiaで高速道路に沿って、別の車で運転しています。牛iは、M個の異なる高レーンのいずれかに駆動することができる(1 <= M <= N)及びS_I(1 <= S_I <= 1,000,000)キロメートル/時の最大速度で移動することができます。

彼らの他の悪い運転の経験の後、牛が衝突を嫌い、それらを避けるために特別な措置をとります。この高速道路、牛に私は(決して0キロ/時以下でも)高速道路上のそれの前に各牛のためのその速度Dによって(0 <= D <= 5000)キロメートル/時間を削減します。したがって、ウシIの前にK牛がある場合、牛は最高の速度で移動する[S_I - D * K、0]。牛が実際に目の前で直接牛よりも速く移動するかもしれませんが、牛のように遅く一度クラッシュが発生しないので、牛は十分に離れて間隔を置いて配置されています

説明、

CowtopiaはLのAA最小速度で走行する高速道路上の誰もが必要となる最低限の速度の法則があります(1 <= L <= 1,000,000)キロメートル/時がそう時々牛のいくつかは、彼らがルールに従った場合、高速道路を取ることができません上記。最小速度制限法に従うながら高速道路をドライブすることができます牛の最大数を見つけるプログラムを書きます。

Nに1の番号を付け、N彼らの唯一の牛であることは、デ・ビヤが高速道路でスピード違反予定の牛を運転しました。高速道路M(1≤M≤N)レーン。私の牛は、独自の制限速度Siの(l≤Si≤1,000,000)を持っています。

悪い運転事故を経た、牛は衝突を避けるために非常に慎重になります。(KDO≤Dを - 各レーンに、フロント場合に運転していた私は牛をkをいくつかの牛、牛、私は彼女の速度は、Siを超えない、すなわち、kDの単位をドロップすること速度制限があります≤5000)、当然のことながら、彼女の速度がゼロになる数が負の場合、およびこと。ニウ・デ・ビヤ未満/(1≤L≤1,000,000)ではないの高速道路の走行車両の速度に、道路法を高速化されます。だから、あなたは高速道路上で、それをどのように多くの牛を計算することができますか?

入力形式

  • 行1:フォー・スペースで区切られた整数:N、M、D、及びL

  • ライン2 ... N + 1:S_I:ラインI + 1は、単一の整数で牛私の初速を説明します

出力フォーマット

  • 行1:高速道路を使用することができる牛の最大数を表す単一の整数

サンプル入力出力
入力#1の複製
。3 5 1 1
。5
。7
。5
の出力は、#1のコピー
2
の説明/ヒント
にする1つのレーンで3頭の牛がある上のドライブ、1の速度低下、および5の最低速度制限が。

2頭は、1速5速と7秒で牛のいずれかで牛を置くことによって、可能です。

#include<bits/stdc++.h>
using namespace std;
#define P 50005
long long N, M, D, L, cnt;//n:奶牛 M:车道 D:下降车速单位 L:车速最低速
int a[P];
int main(){
	cin >> N >> M >> D >> L;
	for(int i=1; i<=N; i++)
		cin >> a[i];
	sort(a+1, a+N+1);//将N头牛的车速从小到大排序 
	for(int i=1; i<=N; i++){
		if(a[i] < L)
			continue;
		int t = cnt / M;//每个车道上已有的奶牛数量 
		if(a[i] - t*D >= L)//与前面奶牛不相撞的情况下,满足最低速即可 
			++cnt;
	}
	cout << cnt;
	return 0;
}
公開された35元の記事 ウォン称賛20 ビュー1591

おすすめ

転載: blog.csdn.net/qq_39053800/article/details/104312865