vijos p1002——過河(noip2005提高組T2)

描述

在河上有一座獨木橋,一只青蛙想沿著獨木橋從河的一側跳到另一側。在橋上有一些石子,青蛙很討厭踩在這些石子上。由于橋的長度和青蛙一次跳過的距離都是正整數,我們可以把獨木橋上青蛙可能到達的點看成數軸上的一串整點: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

樣例輸入1

10
2 3 5
2 3 5 6 7

樣例輸出1

2

限制

1s

由于路徑太長,所以可以剪去一些不必要的路徑。
可以發現,當路徑長度剪去n個s*t時,對后面是沒有影響的,但是當s=1,t=2,L=6時,會發現是不能剪完的,必須要留出一個s*t。
還有s=t的特判,此時走過的路徑是固定的,單獨處理即可。
DP轉移方程:
ans[i]=min(ans[i-j]+k[i],ans[i]);(i為pos,j為步長)
 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cmath>
 4 #include<cstring>
 5 #include<algorithm>
 6 #include<cstdlib>
 7 using namespace std;
 8 long long l,s,t,m;
 9 long long map[1000005];
10 long long k[1000005];
11 long long pos[105];
12 long long ans[1000005];
13 long long min(long long x,long long y)
14 {
15     if(x<y)return x;
16     return y;
17 }
18 int main()
19 {
20     for(int i=0;i<=1000004;i++)
21     ans[i]=99999999;
22     scanf("%I64d%I64d%I64d%I64d",&l,&s,&t,&m);
23     long long mod=s*t;
24     for(int i=1;i<=m;i++)
25     scanf("%I64d",&pos[i]);
26     sort(pos+1,pos+m+1);
27     int temp=0;
28     for(int i=1;i<=m;i++)
29     {
30         long long cha=pos[i]-pos[i-1];
31         long long qwe=cha;
32         cha%=mod; qwe/=mod;
33         temp+=cha;
34         if(qwe!=0)
35         temp+=mod;
36         k[temp]=1;
37     }
38     temp+=s*t;
39     if(s==t)
40     {
41         long long u=0;long long v=s;int an=0;
42         while(u<=temp)
43         {
44             u+=v;
45             if(k[u])an++;
46         }
47         printf("%d",an);
48         exit(0);
49     }
50     for(int i=0;i<=s-1;i++)
51     ans[i]=0;
52     for(int i=s;i<=temp;i++)
53     {
54         for(int j=s;j<=t;j++)
55         {
56             if(i-j<0)break;
57             if(i-j>0&&i-j<s)continue;
58             ans[i]=min(ans[i-j]+k[i],ans[i]);
59         }
60     }
61     printf("%I64d",ans[temp]);
62 }

?

轉載于:https://www.cnblogs.com/937337156Zhang/p/6044183.html

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

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

相關文章

JNI學習

1. 目前調用關系已經搞清楚&#xff0c;需要編譯一個so或者dll的動態庫給java調用。 2. env有很多方法現在還不清楚&#xff0c; 獲得屬性句柄。 JNI方法描述符&#xff0c;主要就是在括號里放置參數&#xff0c;在括號后面放置返回類型&#xff0c;如下&#xff1a;&#xff0…

【項目實戰】——USB雙路繼電器電腦控制燈的開關(Python)

環境&#xff1a;window10、Python3.7.9 依賴庫&#xff1a;pyserial 硬件&#xff1a;220V燈帶、220V吊燈、USB雙路繼電器、電筆 1、安裝Python第三方庫pyserial 2、清楚插座的零火線&#xff08;用電筆去測試&#xff0c;燈亮為火線&#xff09; 3、清楚燈的零火線&#…

字符串去掉空格

2019獨角獸企業重金招聘Python工程師標準>>> String s1s.trim().replaceAll("\\s*", ""); 轉載于:https://my.oschina.net/u/2842177/blog/1587850

cntk-notes

cntk Embedding layer “Embedding” refers to representing words or other discrete items by dense continuous vectors. This layer assumes that the input is in one-hot form. E.g., for a vocabulary size of 10,000, each input vector is expected to have dimensio…

ubuntu安裝配置elasticSearch(vagrant)

安裝jdk sudo apt-get install python-software-properties sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java8-installer sudo update-alternatives --config java 安裝elasticSearch mkdir /usr/local/elasticsearch/ su…

深入理解javascript函數進階系列第一篇——高階函數

前面的話 前面的函數系列中介紹了函數的基礎用法。從本文開始&#xff0c;將介紹javascript函數進階系列&#xff0c;本文將詳細介紹高階函數 定義 高階函數(higher-order function)指操作函數的函數&#xff0c;一般地&#xff0c;有以下兩種情況 1、函數可以作為參數被傳遞 2…

ANSYS WORKBENCH——參數化建模以及參數優化(結果導出為Excel)

目錄 1、打開軟件workbench 2、找到static structure,雙擊打開 3、選擇材料 4、參數化建模 ?

centos 安裝軟件

1&#xff09;一種是軟件的源代碼&#xff0c;您需要自己動手編譯它。這種軟件安裝包通常是用gzip壓縮過的tar包&#xff08;后綴為.tar.gz&#xff09;。2&#xff09;另一種是軟件的可執行程序&#xff0c;你只要安裝它就可以了。這種軟件安裝包通常被是一個RPM包&#xff08…

【圖像處理】——傅里葉變換、DFT以及在圖像上的應用

目錄 1、傅里葉變換 2、DFT 1)一維離散傅里葉變換: 離散傅里葉變換例子

JAVA開發Web Service幾種框架介紹

下面分別介紹一個這幾種Web Service框架的基本概念 1、JWS是Java語言對WebService服務的一種實現&#xff0c;用來開發和發布服務。而從服務本身的角度來看JWS服務是沒有語言界限的。但是Java語言為Java開發者提供便捷發布和調用WebService服務的一種途徑。 2、Axis2是Apache下…

基于CMake構建MSVC_CUDA及MinGW編譯環境下的的OpenCV項目

前言 第一次搭建OpenCV開發環境的時候各種報錯&#xff0c;內心那個煩啊&#xff0c;簡直了。當時只能針對某個特定的錯誤去尋找特定的解決方法&#xff0c;在OpenCV構建過程中出現最多的問題就是各個模塊文件的下載問題&#xff0c;本質上這類問題的解決思路都是一樣的&#…

OC Autorelease

implementation ViewController - (void)viewDidLoad {[super viewDidLoad];__unsafe_unretained NSObject *obj1 [ViewController getObj];NSLog("%",obj1); // 運行OK__unsafe_unretained NSObject *obj2 [ViewController getObj];NSLog("%",obj2); //…

【opencv】——鋼管計數(霍夫圓變換 + 閾值 + canny)

目錄 方法一:霍夫圓變換 + canny 方法二 閾值 + 尋邊 對圖中的鋼管進行計數 方法一:霍夫圓變換 + canny

svn服務器搭建-SuSE Linux Enterprise Server 11 SP3

svn存儲版本數據也有2種方式&#xff1a;1.bdb&#xff1b;2.fsfs。因為BDB方式在服務器中斷時&#xff0c;有可能鎖住數據&#xff08;搞ldap時就深受其害&#xff0c;沒法根治&#xff09;&#xff0c;所以還是FSFS方式更安全一點&#xff0c;我也選擇這種方式。下載相關軟件…

Swift 2.0初探:值得注意的新特性

轉眼間&#xff0c;Swift已經一歲多了&#xff0c;這門新鮮、語法時尚、類型安全、執行速度更快的語言已經漸漸的深入廣大開發者的心。我同樣也是非常喜愛這門新的編程語言。 今年6月&#xff0c;一年一度的WWDC大會如期而至&#xff0c;在大會上Apple發布了Swift 2.0&#xff…

Android 自定義WebView彈窗及屏蔽彈窗

額&#xff0c;還是那個WebView的問題&#xff0c;內核已換成騰訊X5內核&#xff0c;所以接下來的內容會有一些X5內核的方法。但我們的H5是不能改的&#xff0c;還是只有委屈我們自己。先看看H5自帶的彈窗 這樣子的彈窗在不同的手機上呈現的可能是不同的效果&#xff0c;效果不…

【圖像處理】——Python實現two_pass方法來進行連通域的提取

目錄 一、相關知識 1、two_pass算法思想 2、并查集算法 二、自定義的two_pass算法

C++ 多線程使用future傳遞異常

如果 std::async 調用的函數拋出異常&#xff0c;那么這個異常會被存儲在值的位置&#xff0c;同時 future 變為 ready ,如果調用 get() 會重新拋出存儲的異常。 Note: 標準并沒有指定原來的異常對象是被重新拋出或者拷貝后拋出&#xff0c;不同的編譯器會做不同的選擇。 對于 …

期貨黃金與現貨黃金比較

現貨黃金與期貨黃金是目前市場上最熱門的黃金投資方式&#xff0c;與國內任何的金融投資品相比&#xff0c;都具有一定的優勢。 其實金投網小編覺得現貨黃金與期貨黃金最主要的不同點是這個&#xff1a;期貨黃金做的是國內市場&#xff0c;同股票市場一樣&#xff0c;里面有莊家…

DNS域傳送漏洞

0x00 相關背景介紹 Dns是整個互聯網公司業務的基礎&#xff0c;目前越來越多的互聯網公司開始自己搭建DNS服務器做解析服務&#xff0c;同時由于DNS服務是基礎性服務非常重要&#xff0c;因此很多公司會對DNS服務器進行主備配置而DNS主備之間的數據同步就會用到dns域傳送&#…