ZOJ3385 - Hanami Party (貪心)

題目鏈接:

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3385


題目大意:

妖夢要準備一個party,所以需要許多食物,初始化妖夢的烹飪技能為L,每天妖夢有兩種選擇,一是選擇當天做L個食物,二是提升自己的烹飪技能為L+1

但是幽幽子非常能吃,每天幽幽子都要吃Ai的食物,當沒食物吃后幽幽子會非常生氣,甚至想把妖夢批判一番。所以現在妖夢要保證做出的食物每天夠幽幽子吃的情況下盡量的多。


解題過程:

好久好久之前比賽的題,一直沒補,當初知道是貪心和棧,感覺這樣的思維題加簡單的數據結構的題非常難……也可能是直接接觸的題太少吧。


題目分析:

首先用棧去貪心的模擬,在能保證夠幽幽子吃的情況下,最多能夠將技能提高到幾級。

假設每天都提高等級并且將天數入棧,當當前剩下的食物不夠幽幽子吃的話,將上一次提升等級的地方換成做食物。如果還是不夠幽幽子吃的話,那么就是無解的。

因為提高等級是一個持久性的加成,當然是越早提升越好,所以每次將提高等級換做做食物的地方都是最晚的地方。

這樣求解出最高可以升到幾級后,再去求下最大能達到多少食物。

同樣效仿上面的操作,每次取出最近的提升等級的地方換成做食物,去維護一個最大值。

不過有可能有這樣的一個情況,在租個替換掉提升等級時,可能某個地方替換掉提升等級后食物就不夠幽幽子吃了。但是這種情況,求出的結果肯定比維護的最大值要小,因為現在食物不夠吃了,并且等級還低了,那么最后算出的剩余一定是更小的。


AC代碼:

#include <stdio.h>
#include <stack>
using namespace std;typedef long long LL;int main() {LL N, L;while (~scanf("%lld %lld", &N, &L)) {LL sum = 0;bool flag = true;stack<LL> ss;for (int i = 1; i <= N; i++) {LL eat;//每天要吃的食物數scanf("%lld", &eat);if (!flag)continue;ss.push(i);L++;//如果當前剩余的食物不夠的話,去替換掉之前提升等級while (sum < eat && !ss.empty()) {LL t = ss.top();L--;ss.pop();//將提升等級替換成做食物是很容易維護的,首先讓等級減一,加上等級,然后當從提升等級那天到至今的提升等級的加成減去sum += L - (i-t);}if (sum < eat) {flag = false;continue;}sum -= eat;}if (!flag) {printf("Myon\n");continue;}LL ans = sum;//求出最大值,類似上面的過程while (!ss.empty()) {LL t = ss.top();L--;ss.pop();sum += L - (N - t);ans = max(ans, sum);}printf("%lld\n", ans);}
}

轉載于:https://www.cnblogs.com/ACMFish/p/7222821.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/392311.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/392311.shtml
英文地址,請注明出處:http://en.pswp.cn/news/392311.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

sklearn.fit_兩個小時后仍在運行嗎? 如何控制您的sklearn.fit。

sklearn.fitby Nathan Toubiana內森圖比亞納(Nathan Toubiana) 兩個小時后仍在運行嗎&#xff1f; 如何控制您的sklearn.fit (Two hours later and still running? How to keep your sklearn.fit under control) Written by Gabriel Lerner and Nathan Toubiana加布里埃爾勒納…

RabbitMQ學習系列(二): RabbitMQ安裝與配置

1&#xff0e;安裝 Rabbit MQ 是建立在強大的Erlang OTP平臺上&#xff0c;因此安裝RabbitMQ之前要先安裝Erlang。 erlang&#xff1a;http://www.erlang.org/download.html rabbitmq&#xff1a;http://www.rabbitmq.com/download.html 注意&#xff1a; 1.現在先別裝最新的 3…

帝國CMS淺淺滴談一下——博客園老牛大講堂

封筆多月之后&#xff0c;工作中遇到了很多很多的問題&#xff0c;也解決了一些問題&#xff0c;下面我把一些得出的經驗&#xff0c;分享給大家&#xff01; 會帝國cms的請離開&#xff0c;這篇文章對你沒什么用 1、什么是帝國CMS&#xff1f;---博客園老牛大講堂 多月之前&am…

matlab cdf,Matlab 簡單計算PDF和CDF | 學步園

通信的魅力就是在于隨機性中蘊含的確定性&#xff0c;這也就是為什么你隨便拿出一本通信方面的教材&#xff0c;前面幾章都會大篇幅的講解隨機過程&#xff0c;隨機過程也是研究生必須深入了解的一門課&#xff0c;特別是對于信號處理以及通信專業的學生。在實際工作中&#xf…

leetcode 1232. 綴點成線

在一個 XY 坐標系中有一些點&#xff0c;我們用數組 coordinates 來分別記錄它們的坐標&#xff0c;其中 coordinates[i] [x, y] 表示橫坐標為 x、縱坐標為 y 的點。 請你來判斷&#xff0c;這些點是否在該坐標系中屬于同一條直線上&#xff0c;是則返回 true&#xff0c;否則…

mysql常用操作(一)

【數據庫設計的三大范式】1、第一范式&#xff08;1NF&#xff09;&#xff1a;數據表中的每一列&#xff0c;必須是不可拆分的最小單元。也就是確保每一列的原子性。 例如&#xff1a;userInfo:山東省煙臺市 18865518189 應拆分成 userAds山東省煙臺市 userTel188655181892、第…

pmp 成本估算準確高_如何更準確地估算JavaScript中文章的閱讀時間

pmp 成本估算準確高by Pritish Vaidya通過Pritish Vaidya 準確估算JavaScript中篇文章的閱讀時間 (Accurate estimation of read time for Medium articles in JavaScript) 介紹 (Introduction) Read Time Estimate is the estimation of the time taken by the reader to rea…

Android數據適配-ExpandableListView

Android中ListView的用法基本上學的時候都會使用&#xff0c;其中可以使用ArrayAdapter&#xff0c;SimpleAdapter&#xff0c;BaseAdapter去實現&#xff0c;這次主要使用的ExpandableListView展示一種兩層的效果&#xff0c;ExpandableListView是android中可以實現下拉list的…

JavaWeb 命名規則

命名規范命名規范命名規范命名規范 本規范主要針對java開發制定的規范項目命名項目命名項目命名項目命名 項目創建&#xff0c;名稱所有字母均小寫&#xff0c;組合方式為&#xff1a;com.company.projectName.component.hiberarchy。1. projectName&#xff1a;項目名稱2. com…

多元概率密度_利用多元論把握事件概率

多元概率密度Humans have plenty of cognitive strengths, but one area that most of us struggle with is estimating, explaining and preparing for improbable events. This theme underpins two of Nassim Taleb’s major works: Fooled by Randomness and The Black Swa…

nginx php訪問日志配置,nginx php-fpm 輸出php錯誤日志的配置方法

由于nginx僅是一個web服務器&#xff0c;因此nginx的access日志只有對訪問頁面的記錄&#xff0c;不會有php 的 error log信息。nginx把對php的請求發給php-fpm fastcgi進程來處理&#xff0c;默認的php-fpm只會輸出php-fpm的錯誤信息&#xff0c;在php-fpm的errors log里也看不…

阿里的技術愿景_技術技能的另一面:領域知識和長期愿景

阿里的技術愿景by Sihui Huang黃思慧 技術技能的另一面&#xff1a;領域知識和長期愿景 (The other side of technical skill: domain knowledge and long-term vision) When we first start our careers as software engineers, we tend to focus on improving our coding sk…

leetcode 721. 賬戶合并(并查集)

給定一個列表 accounts&#xff0c;每個元素 accounts[i] 是一個字符串列表&#xff0c;其中第一個元素 accounts[i][0] 是 名稱 (name)&#xff0c;其余元素是 emails 表示該賬戶的郵箱地址。 現在&#xff0c;我們想合并這些賬戶。如果兩個賬戶都有一些共同的郵箱地址&#…

es6重點筆記:數值,函數和數組

本篇全是重點&#xff0c;撿常用的懟&#xff0c;數值的擴展比較少&#xff0c;所以和函數放一起&#xff1a; 一&#xff0c;數值 1&#xff0c;Number.EPSILON&#xff1a;用來檢測浮點數的計算&#xff0c;如果誤差小于這個&#xff0c;就無誤 2&#xff0c;Math.trunc()&am…

SMSSMS垃圾郵件檢測器的專業攻擊

Note: The methodology behind the approach discussed in this post stems from a collaborative publication between myself and Irene Anthi.注意&#xff1a; 本文討論的方法背后的方法來自 我本人和 Irene Anthi 之間 的 合作出版物 。 介紹 (INTRODUCTION) Spam SMS te…

php pdo 緩沖,PDO支持數據緩存_PHP教程

/*** 作者&#xff1a;初十* QQ&#xff1a;345610000*/class myPDO extends PDO{public $cache_Dir null; //緩存目錄public $cache_expireTime 7200; //緩存時間&#xff0c;默認兩小時//帶緩存的查詢public function cquery($sql){//緩存存放總目錄if ($this->cache_Di…

mooc課程下載_如何使用十大商學院的免費課程制作MOOC“ MBA”

mooc課程下載by Laurie Pickard通過勞里皮卡德(Laurie Pickard) 如何使用十大商學院的免費課程制作MOOC“ MBA” (How to make a MOOC “MBA” using free courses from Top 10 business schools) Back when massive open online courses (MOOCs) were new, I started a proje…

leetcode 1584. 連接所有點的最小費用(并查集)

給你一個points 數組&#xff0c;表示 2D 平面上的一些點&#xff0c;其中 points[i] [xi, yi] 。 連接點 [xi, yi] 和點 [xj, yj] 的費用為它們之間的 曼哈頓距離 &#xff1a;|xi - xj| |yi - yj| &#xff0c;其中 |val| 表示 val 的絕對值。 請你返回將所有點連接的最小…

Nagios學習實踐系列

其實上篇Nagios學習實踐系列——基本安裝篇只是安裝了Nagios基本組件&#xff0c;雖然能夠打開主頁&#xff0c;但是如果不配置相關配置文件文件&#xff0c;那么左邊菜單很多頁面都打不開&#xff0c;相當于只是一個空殼子。接下來&#xff0c;我們來學習研究一下Nagios的配置…

在Salesforce中處理Email的發送

在Salesforce中可以用自帶的 Messaging 的 sendEmail 方法去處理Email的發送 請看如下一段簡單代碼&#xff1a; public boolean TextFormat {get;set;} public string EmailTo {get;set;} public string EmailCC {get;set;} public string EmailBCC {get;set;} public string …