日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

问题 G: 果汁店的难题(贪心)

發布時間:2024/9/3 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 问题 G: 果汁店的难题(贪心) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題 G: 果汁店的難題
時間限制: 1 Sec 內存限制: 128 MB

[提交][狀態][討論版]
題目描述
炎熱的夏天,來上一杯現榨的冰爽果汁想想都是一件愜意的事情!話說小王就看準了這一商機,在學校附近開了這么一家果汁店,但是最近他碰到了一個不大不小的難題:小王的果汁店里準備了K臺榨汁機,當然每臺榨汁機只能榨一種果汁,在某個時段內,一個客人點了某種果汁,如果恰好有某臺果汁機榨過這種果汁,那么就直接給客人用這臺果汁機接著榨就可以了,但是如果點的是一種新的果汁就需要找一臺干凈的果汁機來用,問題就出在這,如果這時候還有空的果汁機還好,如果沒有的話小王就需要將某臺剛才用過的拿去清洗,清洗的話呢就得浪費很多的時間和很多的水,小王是個很有經濟頭腦的人,他想知道在排隊客人需求已知的情況下最少需要清洗多少次果汁機?假定開始時所有果汁機都是干凈的,為了方便描述,我們將果汁編號為1(橙汁),2(蘋果汁),3(葡萄汁)…

[友情提示:本店不售賣混合果汁]

輸入

每組測試數據第一行包括兩個整數K,N(1<=K<=10,1<=N<=100), 其中,K表示小王準備了K臺干凈的榨汁機,N表示排隊等待的有N個客人,接下來N行,每行一個整數表示一個客人點的果汁種類Xi(1<=xi<=100).

輸出
輸出在當前的請求序列下,小王最少需要清洗果汁機的次數

樣例輸入

2 7 1 2 3 1 3 1 3

樣例輸出

1

提示
/*
貪心,只要有機器空閑或者說當前需要打的果汁有臺機器打了,就繼續打下去,暫時不需要清洗。
當前要打的果汁找不到可以用的機器了,此時就必須找一臺清洗出來,用來打當前的的果汁。
此時,到底選哪臺來清洗呢?
很顯然,先看看從當前位置看到隊列后面有沒有人要這種果汁,如果沒有人要了,毫無疑問可以洗這臺機器。如果 用著的機器所打的果汁類型 都還有人要呢?那么要找哪種是最相對其他種更后面的那種果汁。即第一個需要現在用著的果汁機所對應的的果汁 排在隊列中 相對其他種 更后面的。這種果汁機是要拿出來清洗來解決當前機器不足的問題。
有點繞。。。
直接上代碼。
可能很多人對同一種果汁有需求,所以用set存當前果汁機的情況。
*/
ac_code:

#include <bits/stdc++.h> using namespace std; set<int>s; int a[105]; int main() {int k,n;cin>>k>>n;for(int i = 0; i < n; i++){cin>>a[i];}int ans = 0;for(int i = 0; i < n; i++){if(s.size() < k) //還有機器空閑{s.insert(a[i]);}else{if(s.count(a[i]))//當前要打的果汁在機器中有,直接打{s.insert(a[i]);}else{//開始找已有的果汁機中哪種在當前隊列中需求最后int pos = -1, aim,flag;for(set<int>::iterator it = s.begin(); it != s.end(); it++){flag = 1; //標記當前隊列對這種果汁是否有需求for(int j = i; j < n; j++){if(a[j]==*it){flag = 0; //有需求if(j > pos) //需求更后的是哪種{pos = j;aim = a[j];}break;}}if(flag) //沒有需求就直接清洗這臺{aim = *it;break;}}//cout<<aim<<endl;//更新果汁機的情況s.erase(aim); ans++;s.insert(a[i]);}}}cout<<ans<<endl;return 0; }

總結

以上是生活随笔為你收集整理的问题 G: 果汁店的难题(贪心)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。