HDU 5037 Frog(2014年北京網絡賽 F 貪心)

  開始就覺得有思路,結果越敲越麻煩。。。?
  題意很簡單,就是說一個青蛙從0點跳到m點,最多可以跳l的長度,原有石頭n個(都僅表示一個點)。但是可能跳不過去,所以你是上帝,可以隨便在哪兒添加石頭,你的策略是讓青蛙跳過去的次數最多,但是你添加了石頭后,青蛙會選擇最少的次數跳過去,問青蛙跳的次數最多是多少。

?

  原有石頭與現在的距離不大于l,就找最遠的那個可以跳的石頭跳過去。接下來就是主要解決現在的位置與接下來的一塊石頭的距離大于l的情況了。模擬:上帝開始放石頭,要讓青蛙一定是這次跳這塊石頭(在上次不能跳),并且跳最近的距離。則它前一個位置 +l+1 與現在的位置 +1的最大值就是放石頭的位置。但是數據范圍太大,純模擬會超時,這時就要注意到每兩次放石頭后跳的距離會重復,最短的距離就是 l+1,但是這兒要特殊處理一下當某一次添加石頭后,它就可以直接跳到后面原有石頭上了(距離不大于l)。還有就是我的代碼需要特判還沒有跳出來在0的時候的情況,具體可以看代碼。

?

代碼寫得很麻煩

?

#include<set>
#include<map>
#include<queue>
#include<stack>
#include<cmath>
#include<vector>
#include<string>
#include<cstdio>
#include<cstring>
#include<stdlib.h>
#include<iostream>
#include<algorithm>
using namespace std;
#define eps 1E-8
/*注意可能會有輸出-0.000*/
#define Sgn(x) (x<-eps? -1 :x<eps? 0:1)//x為兩個浮點數差的比較,注意返回整型
#define Cvs(x) (x > 0.0 ? x+eps : x-eps)//浮點數轉化
#define zero(x) (((x)>0?(x):-(x))<eps)//判斷是否等于0
#define mul(a,b) (a<<b)
#define dir(a,b) (a>>b)
typedef long long ll;
typedef unsigned long long ull;
const int Inf=1<<28;
const double Pi=acos(-1.0);
const int Max=200010;
int rock[Max];
int n,m,l;
int Solve()
{int manx=0,now=0,pre=0;//最大步數 現在位置 前一個位置sort(rock,rock+n);rock[n++]=m;//添加最后一個石頭int ran,tmp,tmpp;for(int i=0;now<m;i++){if(i==n)i=n-1;if(rock[i]-now>l)//相差大于步數 l
        {if(i&&rock[i-1]-now<l&&rock[i-1]>now)//現在的位置最遠可以跳那個原有的石頭
            {manx++;pre=now;now=rock[i-1];}if(rock[i]-now>l)//現在位置與之后的第一個原有石頭大于步數 l
            {ran=rock[i]-l-1;//如果運用上帝鋪的石頭跳到了這個位置后 可能再再跳一步或者兩步就可以直接跳到原有石頭tmp=(ran-now)/(l+1);//注意上帝鋪的石頭跳兩步一定最少跳過l+1的距離if(tmp){manx+=tmp*2;tmpp=now-pre;now+=tmp*(l+1);if(tmpp)pre=now-tmpp;//相差位置不變else//特判開始pre=now-l;}manx++;//現在一定可以在跳一次if(now){tmpp=now;now=max(now+1,pre+l+1);//上帝鋪的石頭使這一次可以跳到的最近距離pre=tmpp;}else//特判開始now=1;if(now+l>=rock[i]);//一步跳入與原有石頭距離不大于步數 l,就可以跳到現在這個原有石頭后者之后的原有石頭else//要再鋪一個石頭
                {manx++;tmpp=now;now=max(now+1,pre+l+1);pre=tmpp;}}}if(rock[i]-now==l)//可能是上一個if遺留的
        {pre=now;now+=l;manx++;}if(i==n-1&&rock[i]-now<l&&rock[i]>now){manx++;return manx;}}return manx;
}
int main()
{int t,coun=0;scanf("%d",&t);while(t--){scanf("%d %d %d",&n,&m,&l);for(int i=0; i<n; i++)scanf("%d",&rock[i]);printf("Case #%d: %d\n",++coun,Solve());}return 0;
}

?

轉載于:https://www.cnblogs.com/zhuanzhuruyi/p/5863603.html

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

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

相關文章

Kafka高性能高吞吐的原因總結

1、磁盤順序讀寫 保證了消息的堆積 順序讀寫 磁盤會預讀,預讀即在讀取的起始地址連續讀取多個頁面&#xff0c;主要時間花費在了傳輸時間,而這個時間兩種讀寫可以認為是一樣的。 隨機讀寫 因為數據沒有在一起&#xff0c;將預讀浪費掉了&#xff0c;需要多次尋道和旋…

日利率

2019獨角獸企業重金招聘Python工程師標準>>> 利率計算 轉載于:https://my.oschina.net/u/3342652/blog/1649028

linux下使用tar命令

解壓語法&#xff1a;tar [主選項輔選項] 文件或者目錄 使用該命令時&#xff0c;主選項是必須要有的&#xff0c;它告訴tar要做什么事情&#xff0c;輔選項是輔助使用的&#xff0c;可以選用。主選項&#xff1a;c 創建新的檔案文件。如果用戶想備份一個目錄或是一些文件&…

Kafka 安裝詳解

注意&#xff1a;確保有JDK1.8版本及以上 官方文檔&#xff1a;https://kafka.apache.org/quickstart 清華鏡像下載&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/ 首先下載安裝包&#xff0c;在linux及Windows都可以使用。 1. Centos 安裝部署 1.1 下載 將下…

【Maui正式版】創建可跨平臺的Maui程序,以及有關依賴注入、MVVM雙向綁定的實現和演示...

前言&#xff1a;Maui終于在2022年8月9日推送出來了。今兒就迫不及待來把玩一下先。A、我本地已有VS2022&#xff0c;不過版本比較老&#xff0c;此處選擇更新。工具 -> 獲取功能和更新里面&#xff0c;可以獲取到新版本更新。B、最新版本是17.3.0&#xff0c;我本地只有17.…

學go語言能做什么工作?

Go語言主要用作服務器端開發&#xff0c;其定位是用來開發“大型軟件”的&#xff0c;適合于很多程序員一起開發大型軟件&#xff0c;并且開發周期長&#xff0c;支持云計算的網絡服務。Go語言能夠讓程序員快速開發&#xff0c;并且在軟件不斷的增長過程中&#xff0c;它能讓程…

WebSQL存儲

2019獨角獸企業重金招聘Python工程師標準>>> WebSQL這種存儲技術&#xff0c;相對于學過數據庫的人來說&#xff0c;還是比較容易理解和上手的&#xff0c;主要就是它的存儲風格和我們一般所學的SQL Server 和Oracle比較像&#xff0c;對于HTML5來說&#xff0c;當然…

軟件工程第一次作業補充

1.關注《構建之法》的作者鄒欣老師的博客&#xff1b;2.花二十分鐘寫一個能自動生成小學四則運算題目的“軟件”&#xff0c;要求除了整數以外&#xff0c;還要支持真分數的四則運算。將代碼上傳至coding.net,并將地址發布至自己的博客。代碼地址&#xff1a; https://coding.n…

抖音服務器帶寬有多大,才能供上億人同時刷?

最近看到一個有意思的提問&#xff1a;抖音服務器帶寬有多大&#xff0c;為什么能夠供那么多人同時刷&#xff1f;今天來給小伙伴們科普一下。 抖音&#xff0c;百度&#xff0c;阿里云&#xff0c;騰訊都是自建的數據中心&#xff0c;都是 T 級別出口帶寬&#xff08;總出口帶…

ASP.NET Core 5.0中的Host.CreateDefaultBuilder執行過程

通過Rider調試的方式看了下ASP.NET Core 5.0的Web API默認項目&#xff0c;重點關注Host.CreateDefaultBuilder(args)中的執行過程&#xff0c;主要包括主機配置、應用程序配置、日志配置和依賴注入配置這4個部分。由于水平和篇幅有限&#xff0c;先整體理解、建立框架&#xf…

404和302

為什么80%的碼農都做不了架構師&#xff1f;>>> 404 php中用header()函數是可以為返回頁面添加404的頭信息的&#xff0c;從而提示瀏覽器該網頁找不到了。 所以可以使用&#xff1a;header("HTTP/1.0 404 Not Found");或者&#xff1a;header("Stat…

oracle sqlplus使用

2019獨角獸企業重金招聘Python工程師標準>>> 1、常用連接方式 sqlplus / as sysdba 無需數據庫進入可用狀態&#xff0c;就可用用該命令登錄&#xff0c;運行startup來啟動。 sqlplus username/pwdhost/service_name&#xff0c;如&#xff1a; sqlplus tiger/scott…

20款IDEA 神級插件 效率提升 30 倍,寫代碼必備

插件目錄 1. Alibaba Java Coding Guidelines 2.GsonFormat 3.A8Translation 4.Maven Helper 5.Free Mybatis plugin 6.Grep Console 7.Lombok 8.Nyan progress bar 9.FindBugs-IDEA 10.Key Promoter X 11.JavaDoc 12.ignore 13.RainbowBrackets 14.Activate-power-mode 15.C…

【溫故知新】C# Linq中 Where使用技巧

微信公眾號&#xff1a;趣編程ACE關注可了解更多的.NET日常實戰開發技巧&#xff0c;如需源碼 后臺回復 源碼 即可;如果覺得對你有幫助&#xff0c;歡迎關注C# Linq中 Where使用技巧hello 大家好&#xff0c;很開心又能重新分享C#編程開發技巧了&#xff0c;之前因為工作和生活…

JS引用類型 -- Array類型

ECMAScript數組與其他語言中的數組都是數據的有序列表&#xff0c;但與其他語言不同的是&#xff0c;ECMAScript數組的每一項可以保存任何類型的數據。而且ECMAScript數組的大小是可以動態調整的&#xff0c;即可以隨著數據的添加自動增長。 創建數組的基本方式有兩種&#xff…

分布式id解決方案

文章目錄 1.分布式id實現方案 1.1.uuid1.2 數據庫主鍵自增1.3 Redis自增1.4 號段模式1.5 雪花算法&#xff08;snowflake&#xff09; 1.5.1 百度&#xff08;uid-generator&#xff09;1.5.2 美團&#xff08;Leaf&#xff09;所謂id就是能夠用作唯一標識的記號。 在我們日常的…

我和大象的十年往事 - 感恩、感謝、加油、騰飛

背景 http://www.idcquan.com/Special/OSCAR2018/index.html 由中國信息通信研究院主辦、中國通信標準化協會支持的"OSCAR云計算開源產業大會"于2018年3月21日&#xff0d;22日在國家會議中心舉行。 非常有幸獲得了“OSCAR尖峰開源人物”獎項。 獎項不敢自居&#xf…

Httpclient發送json請求

一、Httpclient發送json請求 public String RequestJsonPost(String url){ String strresponse null; try{ HttpClient hc new DefaultHttpClient(); HttpPost hp new HttpPost(url); JSONObject jsonParam new JSONObject(); jsonParam.pu…

基于ABP的AppUser對象擴展

在ABP中AppUser表的數據字段是有限的&#xff0c;現在有個場景是和小程序對接&#xff0c;需要在AppUser表中添加一個OpenId字段。今天有個小伙伴在群中遇到的問題是基于ABP的AppUser對象擴展后&#xff0c;用戶查詢是沒有問題的&#xff0c;但是增加和更新就會報"XXX fie…

html (align 、placeholder )

onblur 事件會在對象失去焦點時發生。 onkeyup 事件會在鍵盤按鍵被松開時發生。 ----------------------------------------------------------------------------------------------------------- align 屬性規定單元格中內容的水平對齊方式。 <td align"value"&…