Codeforce ---------灌水システム

アルカディは彼の唯一の花に水を望んでいます。残念ながら、彼はNN花のために設計された非常に悪い散水システムを持っているので、それはNN穴とパイプのように見えます。Arkadyは、最初の穴から流れる水を使用することができます。
Arkady穴の一部をブロックし、次いでパイプへの水のAAリットルを注ぐことができます。その後、水が比例し、それらのサイズS1、S2、...、SNS1、S2、...、Snに非ブロックされた穴から流出します。非ブロック孔のサイズの合計がSSであり、そしてii番目のホールがブロックされていない場合、換言すれば、水のsi⋅ASsi⋅ASリットルそれから流出します。
アルカディは、水の少なくともBBリットルが最初の穴から流出させるためにブロックする必要があります穴の最小数は何ですか?
穴の数、に注ぐ水のArkadyの体積- InputThe最初の行は三つの整数は、AA、BB(1≤n≤1000001≤n≤100000、1≤B≤A≤1041≤B≤A≤104)をnnを含有しますシステム、そして彼は最初の穴から脱出したいボリューム。
穴の大きさ- 2行目はNN整数S1、S2、...、SNS1、S2、...、SN(1≤si≤1041≤si≤104)が含まれています。
Arkadyはブロックべき穴の数-単一整数をOutputPrint。
実施例
インプット
4 10 3
2 2 2 2
出力
1
入力
4 80 20
3 2 1 4
出力
0
入力
5 10 10
1000年1 1 1 1
出力
4
题目大意:一个水管有N个水孔、一共有L水、最少需要B L水
水の第1の開口サイズ、および水のそれぞれの順次入力アパーチャサイズ、水の第1の出力は、ホールをブロックすることができ、水の穴はブロックの最小数は、最初の水孔リットル最小Bから出力することができる必要。水の穴から水が各出力水の細孔径の割合に依存します

#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
const int N = 1e5 + 10;
int q[N];
int main(){
 int n, a, b, c;
 scanf("%d%d%d",&n, &a, &b);
 scanf("%d",&c);
 int sum = c;
 for (int i = 0; i < n - 1; i ++){
  scanf("%d",&q[i]);
  sum += q[i]; 
 }
  sort(q , q + n - 1);
 reverse(q, q + n - 1);
  int ans = 0;
 if (a * c / sum >= b)   ans = 0;
 else{
  for (int i = 0; i < n - 1; i ++){
   if (a * c / sum >= b)   break;
   sum -= q[i];
   ans ++;
  }
 }
 printf("%d\n",ans);
  return 0; 
}
公開された106元の記事 ウォン称賛67 ビュー5440

おすすめ

転載: blog.csdn.net/qq_45772483/article/details/104741568