乾燥
直接中国に
説明
衣類の各部分は、乾燥機、水の単位毎分の衣類の自然損耗の各部分を使用せずに、水の一定の単位を持っていますが、あなたはドライヤーを使用している場合、毎分の水のK単位の損失は、残念ながらであればドライヤーで唯一の駅、各ドライヤーだけ衣類乾燥機中、衣類の乾燥N個それが最小になりますどのくらい尋ねるためには?
エントリー
入力の複数のセット
最初の入力ラインN、Nは衣類、衣類の第二水ライン入力AI N個の表現、第3段目は、分当たり乾燥機乾燥水分K表し 100 000,1≤≤1≤N aiを ≤10 ^を9,1≤K≤10 ^ 9つの出力
輸出
Nをドレスアップするのに必要な最小時間を乾燥
サンプル入力
3 2 3 9 5
3 2 3 6 5
サンプル出力
3
2
トピックリンク
https://vjudge.net/problem/POJ-3104
最初のカウントマイナス自然の空気乾燥など、この時間は、乾燥機を使用し、それが唯一のK-1をすることができ、水の毎分のうち、時間の半分は(乾燥時間は自然乾燥します。また、特別な処理を必要とされていないため、そしてk = 1)
その使用scanf関数のprintfに注意してくださいまたはタイムアウトします
ACコード
書式#include <iostreamの> の#include <cstdioを> する#include <fstreamの> の#include <アルゴリズム> 書式#include <cmath> の#include <両端キュー> の#include <ベクトル> の#include <キュー> の#include < 文字列 > の#include <CStringの> #include <地図> の#include <スタック> の#include < 設定 > の#include <sstream提供> の#define IOS ios_base :: sync_with_stdio(0)。cin.tie(0)。 長い長いLL の#define 0x3f3f3f3f INF の#define MEM(X、Y)のmemset(X、Y、はsizeof(X)) の#define MAXN 100000 + 100 使用して 名前空間STD; INT N、K; LL L、R&LT、MID; // 左右 LL A [MAXN]; LL ANS; INT )(解決 { MID =(L + R&LT)/ 2 ; // 予想時間 LL CNT = 0 ; // 実際の時間 のために(LL I = 0 ; iがNを< ; I ++ ) { IF([I] <= MID)// 指定された時間内に自然乾燥させることができる所定の判定時間未満 続けます。 他// 乾燥機を使用する必要 CNT + =([I] -mid + - K- 2)/( - K- 1); // 所要時間 IF(CNT> MID)// 所定の判定時間、故障を超える実際の時間 戻り 0 ; } リターン 1。; } int型のmain()は、 { 一方が(scanfの(" %のD "、&N)は!= EOF) { L = 0 ; //が初期化 R&LT = 0 ; のために(LL I = 0 ; Iは、Nを< ; I ++ ) { scanf関数(" %のLLD "、&A [I]); R&LT = MAX(R&LT、A [I]); } のscanf(" %のD "、&K); IF(K == 1)// K == 1。 、特別な治療 COUT R&LT << << ENDL; 他 { ANS = INF; //は最小時間を回答 しながら(L <= R&LT) { IF(!解決())//が失敗、すなわち小さなが増加するのに必要な時間を予測しますグレート見越し時間 L = MID + 1。; 他//成功、小さなと答えが存在するかどうかを確認するために時間を予測低減 { ANS = 分(MID、ANS); R&LT =半ば1 ; } } のprintf(" %LLDの\のN- " 、ANS); } } 戻り 0 ; }