D 全都拿走(計蒜客 聯盟周賽)

2021-09-26 01:47:55 字數 1296 閱讀 3001

你參加了某檔電視衝關節目,並走到了最後一關:共有 n件物品給你挑選,且對物品 i,其** value[i]滿足關係: i∀i∈[1,n],value[i]∈[1,n],且∀i∈[1,n],∀j∈[1,n],i!=j 有 value[i] != value[j]。給你 k 次將這些物品砍價的機會,每次砍價可以選擇任意 pp 件物品)(p≤n),將它們同時砍掉 c 元,但物品在被砍價後其**不能為負數。若你在使用 q(q≤k) 次機會後,所有物品的**都被減為 0元,則你可以將所有物品帶走。請問你能把這些物品帶走嗎?因為情況非常緊急,你只有 2000ms2000ms 的機會思考,若能則輸出"yes",若不能輸出則"no"(雙引號不需輸出)。

輸入格式

單組輸入,每組輸入的第一行包含兩個數 n,k(k(n∈[1,200,000],k∈[1,10,000]),分別為 n 件物品,k 次砍價機會。第二行為 n 個數,為 n 件物品分別的**。

輸出格式

如題意進行輸出你是否能將所有物品帶走。

輸出時每行末尾的多餘空格,不影響答案正確性

樣例輸入

2 1樣例輸出

no樣例解釋

對(2,1)你只有一次砍價機會,若你選擇砍 1 元,則物品**可能砍為(2,0)或(1,1)或(1,0),不滿足帶走的條件;若你選擇砍 2 元,則物品**則變為(0,1),也不滿足帶走的條件。你無法選擇砍 2元以上,因為砍價後物品**一定會變為負數。

故你無法在一次砍價內將所有物品砍為 0 元,輸出 "no"

思路: 因為i∀i∈[1,n],value[i]∈[1,n],並且不允許重複,所以當n為3時,a[i]只能是1 2 3,只是順序不同而已。

首先我們先找出1~n的中位數mid,讓1~n中能減mid的減去mid,其中1~n的最大值就變成了n/2,一直向下直到n變為0.

其實就是每次將大於中位數的都減去中位數。

ac**:

#include #include #include #include #include #include #include #include #include #include #include #include #include #define eps 0.0000000001

#define inf 0x3f3f3f3f

const int m=1e4+10;

using namespace std;

typedef long long ll;

int main()

if(ans>k)

cout<<"no"

cout<<"yes"

}

F csgo(計蒜客 聯盟周賽)

題目描述 著名第一人稱射擊遊戲 csgo 因其優秀的平衡性,爽快的射擊感和科學的戰術配比贏得了世界廣大玩家的好評。在一局遊戲中,分為兩個陣營,他們的目標就是消滅全部的對方敵人。現在你是其中的一名玩家,不幸的是,你突然遭遇了許多個站成一橫排,身高不同的敵人。這種時候,用 瞄準對方的頭部進行 爆頭 一擊...

計蒜客 2019計蒜之道D

題意 現在給定你乙個字串 s ss 以及乙個整數 k kk,請求出 s ss的字典序最小的長度為 k kk的子串行。資料範圍 0 s 5000000 00 s 5000 000 樣例輸入 helloworld 5樣例輸出 ellld思路 假如我們先不考慮長度為k的限制我們應當怎麼做?我們以樣例為例子...

計蒜客初賽3練習賽

計蒜客初賽5之前選了初賽3的題強行練手,確實這道題對思維的要求不低,要求轉換思路,價值挺大。初賽5成功晉級後,將未完成的 補完,完結此次初賽之旅。思路 這題明顯是個模擬題,模擬兩個小車的位置。不過,一開始準備寫個程式專門判斷小車位置,考慮到小車方向,時間,並單獨處理碰撞和碰牆情況,由於還看存在半點碰...