tyvj 1059 過河 dp

P1059 過河
時間: 1000ms / 空間: 131072KiB / Java類名: Main

背景

NOIP2005?提高組?第二道

描述

在河上有一座獨木橋,一只青蛙想沿著獨木橋從河的一側跳到另一側。在橋上有一些石子,青蛙很討厭踩在這些石子上。由于橋的長度和青蛙一次跳過的距離都 是正整數,我們可以把獨木橋上青蛙可能到達的點看成數軸上的一串整點:0,1,……,L(其中L是橋的長度)。坐標為0的點表示橋的起點,坐標為L的點表 示橋的終點。青蛙從橋的起點開始,不停的向終點方向跳躍。一次跳躍的距離是S到T之間的任意正整數(包括S,T)。當青蛙跳到或跳過坐標為L的點時,就算青蛙已經跳出了獨木橋。?

  題目給出獨木橋的長度L,青蛙跳躍的距離范圍S,T,橋上石子的位置。你的任務是確定青蛙要想過河,最少需要踩到的石子數。?

  對于30%的數據,L?<=?10000;?
  對于全部的數據,L?<=?10^9。

輸入格式

輸入的第一行有一個正整數L(1?<=?L?<=?10^9),表示獨木橋的長度。第二行有三個正整數S,T,M,分別表示青蛙一次跳躍 的最小距離,最大距離,及橋上石子的個數,其中1?<=?S?<=?T?<=?10,1?<=?M?<=?100。第三行 有M個不同的正整數分別表示這M個石子在數軸上的位置(數據保證橋的起點和終點處沒有石子)。所有相鄰的整數之間用一個空格隔開。?

輸出格式

輸出只包括一個整數,表示青蛙過河最少需要踩到的石子數。?

測試樣例1

輸入

10
2 3 5
2 3 5 6 7

輸出

2

思路:因為只有100個點,數字很大,需要壓縮路徑,兩點之間的距離不能變,取了(1-10)的最小公倍數;

   簡單dp一下;代碼搓。。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define esp 0.00000000001
const int N=1e3+10,M=1e6+10,inf=1e9+10,mod=1000000007;
int a[N];
int step[N];
int dp[M];
int flag[M];
int gcd(int x,int y)
{return y==0?x:gcd(y,x%y);
}
int main()
{int lcm=1;for(int i=2;i<=10;i++)lcm=lcm*i/gcd(lcm,i);int x,y,z,i,t;int L,st,en,m;while(~scanf("%d",&L)){memset(flag,0,sizeof(flag));for(i=0;i<=M;i++)dp[i]=inf;scanf("%d%d%d",&st,&en,&m);dp[0]=0;for(i=1;i<=m;i++)scanf("%d",&a[i]);a[m+1]=L;sort(a+1,a+2+m);for(i=1;i<=m+1;i++){if(a[i]-a[i-1]>=2520)step[i]=step[i-1]+2520+(a[i]-a[i-1])%2520;elsestep[i]=step[i-1]+a[i]-a[i-1];flag[step[i]]=1;}flag[step[m+1]]=0;for(i=0;i<=step[m+1];i++){for(t=i+st;t<=i+en;t++)if(flag[t])dp[t]=min(dp[i]+1,dp[t]);elsedp[t]=min(dp[i],dp[t]);}int ans=inf;for(i=step[m+1];i<=step[m+1]+en;i++)ans=min(ans,dp[i]);printf("%d\n",ans);}return 0;
}

?

轉載于:https://www.cnblogs.com/jhz033/p/5713756.html

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

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

相關文章

20155204 2016-2017-2 《Java程序設計》第8周學習總結

學號 2016-2017-2 《Java程序設計》第X周學習總結 教材學習內容總結 想要取得channel的操作對象&#xff0c;可以使用channels類&#xff0c;它定義了靜態方法newChannel()。Buffer的直接子類們都有一個alloocate()方法&#xff0c;可以讓你指定Buffer容量。1.java.util.loggin…

HALCON示例程序train_characters_ocr.hdev使用SVM分類器訓練字體

HALCON示例程序train_characters_ocr.hdev使用SVM分類器訓練字體 小哥哥小姐姐覺得有用點個贊唄&#xff01; 示例程序源碼&#xff08;加注釋&#xff09; 藍色字體均為算子解釋鏈接&#xff0c;可以前往查看解答 關于顯示類函數解釋 read_image (Image, ‘ocr/chars_tra…

《信息系統安全等級保護定級報告》

《信息系統安全等級保護定級報告》一、XXX信息系統描述簡述確定該系統為定級對象的理由。從三方面進行說明&#xff1a;一是描述承擔信息系統安全責任的相關單位或部門&#xff0c;說明本單位或部門對信息系統具有信息安全保護責任&#xff0c;該信息系統為本單位或部門的定級對…

安裝DirectX SDK時出現Error Code:s1023 的解決方案

&#xfeff;&#xfeff;安裝DXSDK_Jun10時&#xff08;下載地址&#xff1a;http://www.microsoft.com/en-us/download/confirmation.aspx?id6812 ) 出現下圖所示錯誤 Error Code:s1023 計算機上有安裝過更新版的Microsoft Visual C 2010 Redistributable&#xff0c;打開“…

Linux下C++ UDP Socket例子

這里我們給出了linux下C的socket代碼如下&#xff1a; #include <iostream> #include <stdio.h> #include <sys/socket.h> #include <unistd.h> #include <sys/types.h> #include <netinet/in.h> #include <stdlib.h> #include <…

使用ES6的Promise完美解決回調地獄

相信經常使用ajax的前端小伙伴&#xff0c;都會遇到這樣的困境&#xff1a;一個接口的參數會需要使用另一個接口獲取。 年輕的前端可能會用同步去解決&#xff08;笑~&#xff09;&#xff0c;因為我也這么干過&#xff0c;但是極度影響性能和用戶體驗。 正常的前端會把接口寫在…

halcon file_exists 檢查文件是否存在

目錄file_exists&#xff08;算子&#xff09;描述參數file_exists&#xff08;算子&#xff09; file_exists - 檢查文件是否存在。 file_exists&#xff08;:: FileName&#xff1a;FileExists&#xff09; 描述 運算符file_exists檢查指示的文件是否已存在。 如果是這種…

頂級數據庫行會Percona阿里全面解析下一代云數據庫技術

摘要&#xff1a; 幾年前&#xff0c;數據庫管理系統的企業市場似乎還如同銅墻鐵壁&#xff0c;除了老牌廠商外&#xff0c;其他廠商休想打進來。隨著移動互聯、物聯網技術的發展&#xff0c;多終端應用的時代悄然而至。結構化與非結構化數據的爆發&#xff0c;推動人類社會進入…

怎樣推斷兩個日期在一周內

怎樣推斷兩個日期在一周內。首先&#xff0c;須要搞清楚一周內究竟是什么含義。國內一般是以周一作為每周的第一天&#xff0c;而西方普遍以周日作為每周的第一天。 下面&#xff0c;我們以西方的標準來處理這個問題。 常見的日期結構&#xff1a; struct DateTime { int year;…

TCP/UDP 網絡編程實例

TCP服務器&#xff1a;TCP_Server.c#include<stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <netdb.h> #include <sys/types.h> #include <sys/stat.h> #include <netinet/in.h> #in…

MFC 雙擊控件 提示重載函數已存在

&#xfeff;&#xfeff;VS2013 界面雙擊按鈕控件&#xff0c;提示重載函數已存在&#xff0c;一般情況下&#xff0c;雙擊控件都是可以跳到代碼處的&#xff0c;為什么現在不能了&#xff1f; 這涉及到VS2013的自動生成問題 。 原因&#xff1a;雙擊控件跳到代碼處時&#x…

PHP常用函數總結

數學函數1.abs(): 求絕對值$abs abs(-4.2); //4.2 數字絕對值數字2.ceil(): 進一法取整echo ceil(9.999); // 10 浮點數進一取整3.floor(): 舍去法取整echo floor(9.999); // 9 浮點數直接舍去小數部分4.fmod(): 浮點數取余5.pow(): 返回數的n次方echo pow(-1, 20); // 1 基礎…

C#指定窗口顯示位置的方法

小哥哥小姐姐覺得有用點個贊唄&#xff01; C#指定窗口顯示位置的方法 1.使用StartPosition MainForm mainform; mainformnew MainForm (); dlgCtrl.StartPosition FormStartPosition.Manual;下面是FormStartPosition里邊的定義與解釋 // 指定窗體的初始位置。public …

OpenFileDialog對話框Filter屬性

OpenFileDialog對話框的Filter屬性說明&#xff1a; 首先說明一個示例&#xff0c;分析一下Filter屬性的構成&#xff1a;“ Excel文件|*.xls ”&#xff0c;前面的“Excel文件”成為標簽&#xff0c;是一個可讀的字符串&#xff0c;可以自定定義&#xff0c;“|*.xls”是篩選器…

c++中的::符

&#xfeff;&#xfeff;::是域運算符&#xff0c;一個用法是&#xff0c;如果在局部有一個變量n&#xff0c;還有一個全局變量n&#xff0c;即兩個同名&#xff0c;你要想訪問全局的就要寫::n,寫n就是局部變量.另外一個就是控制命名空間&#xff0c;例如C中的cin和cout屬于st…

x264_param_default

void x264_param_default( x264_param_t *param ) { /* 開辟內存空間*/ memset( param, 0, sizeof( x264_param_t ) ); /* CPU自動檢測 */ param->cpu x264_cpu_detect(); param->i_threads X264_THREADS_AUTO; /* 并行編碼線程為0 */ param->b_determini…

MySQL基礎原創筆記(一)

對表的增刪改操作&#xff1a; 創建表&#xff1a; create table student ( id int primary key auto_increment, name varchar(10) character set utf8 not null, sex char(2) default ‘M’, constraint fk_student_score foreign key(id) references score(id)…

C# 修改項目文件夾名稱完全版

目錄步驟1、打開項目&#xff0c;修改文件名稱2、更改命名空間名稱3、在解決方案中用txt1000替換所有test5004、使用記事本打開項目文件&#xff08;.sln文件&#xff09;修改路徑5、更改項目文件夾名稱6、刪除之前的殘留文件7、大功告成&#xff01;&#xff01;&#xff01;&…

js中遍歷注冊事件時索引怎么獲取

注意&#xff1a;這種寫法&#xff0c;是有問題的。注冊事件是在頁面加載完畢以后就完成了&#xff0c;但此時并沒有觸發事件。事件觸發是由用戶在頁面上點擊時才會觸發&#xff0c;所以說當用戶點擊時&#xff0c;才會執行事件處理函數&#xff0c;那么此時的i已經變成了4&…

spring 優點

spring 的優點&#xff1f;1.降低了組件之間的耦合性 &#xff0c;實現了軟件各層之間的解耦 2.可以使用容易提供的眾多服務&#xff0c;如事務管理&#xff0c;消息服務等 3.容器提供單例模式支持 4.容器提供了AOP技術&#xff0c;利用它很容易實現如權限攔截&#xff0c;運行…