3000ms 256mb
鐵憨憨騎士團團長憨中憨有著特殊的能力來激發騎士的鬥志——他會泡好喝的幽蘭拿鐵,一杯幽蘭拿鐵能激發一位騎士的鬥志。
製作一杯拿鐵需要 ?
種原材料,每種原材料各需要 ?1,?2,…,?? 份,憨中憨現有每種原材料各?1,?2,…,??份。
另外,他還有另外 ? 份萬能材料,每乙份萬能材料都能作為任意一種原材料的乙份用於製作奶茶。
現在給你原材料和神秘材料的份數,求憨中憨最多能製作幾杯幽蘭拿鐵。
第一行為兩個整數 ?,? (1≤?≤105,0≤?≤107),分別表示原材料的種類和萬能材料的份數。
第二行為 ? 個整數 ?1,?2,…,?? (1≤??≤104),?? 代表製作一杯奶茶需要第 ? 種材料的份數。
第三行為 ? 個整數 ?1,?2,…,?? (1≤??≤108),?? 代表憨中憨擁有的第 ? 種材料的份數。
乙個整數,表示憨中憨最多能製作奶茶的杯數。
5 7
1 2 1 2 3
5 5 5 5 5
3
把 1 份萬能材料當作第 2 種原材料,
把 1 份萬能材料當作第 4 種原材料,
把 4 份萬能材料當作第 5 種原材料,
共消耗萬能材料 6 份,能製作 3 杯奶茶。
可以證明,剩餘的材料不能製作更多奶茶。
這道題在題意上很好理解,基本的思路就是對奶茶數量進行變化,從而對現有的材料和萬能材料的數量多少進行判斷,直到不夠為止,然後確定最多的奶茶數量。
但是要注意到這道題的資料大小和時間限制,如果不加處理地進行迴圈判斷,很容易時間就會超過10^8,就很容易會爆。
例如如下思路,將奶茶數量從1到最大值進行逐個試探:(tle)
#include
#include
#include
#include
using
namespace std;
long
long n,m;
long
long
*a;long
long
*a2;
long
long
*b;long
long temp1 =0;
long
long ans =1;
intmain()
for(
long
long i =
0;i < n;i++
)while
(temp1 >=0)
else}if
(temp1 >=0)
} ans--
; cout
}
結果就是tle。。。也在意料之中,這個思路沒啥思考難度。
於是我們就要思考了,我們需要在哪個地方進行處理能夠減少它的執行時間呢。我選擇了在奶茶數量的判斷方面,不必從1開始遍歷,其實它會有乙個最小值的,這個最小值就是
m in
(b[i
]÷a[
i]
)min(b[i]÷a[i])
min(b[
i]÷a
[i])
雖然資料小的時候顯不出來什麼,但資料量大時會大大減小執行時間。
從而得到如下**:
#include
#include
#include
#include
using
namespace std;
int n,m;
int*a;
int*a2;
int*a3;
int*b;
int temp1 =0;
int ans =1;
intcmp
(const
void
*a,const
void
*b)int
main()
for(
int i =
0;i < n;i++
)for
(int i =
0;i < n;i++
)qsort
(a3,n,
sizeof
(a3[0]
),cmp)
; ans = a3[0]
;while
(temp1 >=0)
else}if
(temp1 >=0)
} ans--
; cout
}
192 跳躍遊戲
題目描述 給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最後乙個位置。示例 1 輸入 2,3,1,1,4 輸出 true 解釋 從位置 0 到 1 跳 1 步,然後跳 3 步到達最後乙個位置。示例 2 輸入 3,2,1,0,4 ...
19 2 表單標籤庫
表單標籤庫中包含了可以用在jsp頁面中渲染html元素的標籤。為了使用這些標籤,必須在jsp頁面的開頭處宣告這個taglib指令 1 2 taglib prefix form uri 表19.1展示了表單標籤庫中的標籤。表19.1表單標籤庫中的標籤 標籤描述 form渲染表單元素 input渲染元素...
編譯安裝 go lang 1 9 2
最近要用 go 做開發,得先給自己的開發機安裝這個 go lang,選擇了從源 編譯安裝。1 指令碼如本 2 但執行到 make.bash 時出了如下問題,cannot find usr bin go 當然找不到啦,不是正在安裝go嘛。3 除錯,看一下 make.bash 指令碼中是哪行命令出錯了 ...