F csgo(計蒜客 聯盟周賽)

2021-09-26 01:49:59 字數 1275 閱讀 6176

題目描述

著名第一人稱射擊遊戲 csgo 因其優秀的平衡性,爽快的射擊感和科學的戰術配比贏得了世界廣大玩家的好評。 在一局遊戲中,分為兩個陣營,他們的目標就是消滅全部的對方敵人。

現在你是其中的一名玩家,不幸的是,你突然遭遇了許多個站成一橫排,身高不同的敵人。

這種時候,用**瞄準對方的頭部進行 「爆頭」(一擊必殺)是化解險境的唯一方法。

不幸的是,你手中的**由於過於老舊而後坐力巨大。(而且放浪的你還不喜歡壓槍)

也就是說,在一輪掃射中,第一發子彈可以向任意高度水平射出,但是之後每發子彈射出的高度都不能低於前一發子彈射出的高度。(我們假設子彈在飛行中一直沿水平方向飛行,不會下落)

我們假定你無需考慮換彈問題,並且你是一名神槍手,擁有一顆子彈就可以對乙個敵人進行「爆頭」的能力,不會打空槍 。然而放浪的你有乙個壞習慣,就是只喜歡從左向右掃射。

那麼為了快速解決掉前方的所有敵人,請問你至少需要進行幾輪掃射?

輸入格式

本題輸入若干組資料,每組資料分為兩行。

第一行有乙個整數 n,表示你面前遇到敵人的數量(1≤n≤10000)

第二行有 nn 個整數hi  ,(1≤h  i輸出格式

乙個整數,表示最少消滅全部敵人需要的掃射輪數

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

樣例輸入

51 1 1 1 1

51 2 4 3 5

樣例輸出

12

思路:每次輸入乙個身高時看能放到哪個隊尾,要選擇隊尾小於該數並且差距最小的,如果不能就重新開闢佇列,看最後有多少佇列。我的佇列是用vector實現的。

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;

vectorv[m];

int main()}}

if(p>=0&&pv[p].push_back(a);

else

}cout

v[i].clear();

}return 0;

}

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

你參加了某檔電視衝關節目,並走到了最後一關 共有 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...

計蒜客 2019計蒜之道D

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

計蒜客 解碼

蒜頭君自己發明了一種字串的編碼方式,對於只含有大小寫字母的字串,可以用數字來表示括號裡面的串連續出現的次數 數字有可能超過一位數 比如a abcd 2等價於aabcdabcd。特別地,如果數字前面沒有括號,表示緊貼數字的前面的 乙個字母 出現的次數。比如abc2表示abcc。為了降低解碼的難度,蒜頭...