P1977 出租車拼車

P1977 出租車拼車

題目背景

話說小 x 有一次去參加比賽,雖然學校離比賽地點不太遠,但小 x 還是想坐 出租車去。大學城的出租車總是比較另類,有“拼車”一說,也就是說,你一個人 坐車去,還是一堆人一起,總共需要支付的錢是一樣的(每輛出租上除司機外最 多坐下 4 個人)。剛好那天同校的一群 Oier 在校門口扎堆了,大家果斷決定拼車 去賽場。

問題來了,一輛又一輛的出租車經過,但里面要么坐滿了乘客,要么只剩下 一兩個座位,眾 Oier 都覺得坐上去太虧了,小 x 也是這么想的。

題目描述

假設 N 位 Oier 準備拼車,此時為 0 時刻,從校門到目的地需要支付給出租

車師傅 D 元(按車次算,不管里面坐了多少 Oier),假如 S 分鐘后恰能趕上比賽,

那么 S 分鐘后經過校門口的出租車自然可以忽略不計了。現在給出在這 S 分鐘當

中經過校門的所有的 K 輛出租車先后到達校門口的時間 T i 及里面剩余的座位 Zi

(1 <= Zi <= 4),Oier 可以選擇上車幾個人(不能超過),當然,也可以選擇上 0 個

人,那就是不坐這輛車。

俗話說,時間就是金錢,這里小 x 把每個 Oier 在校門等待出租車的分鐘數 等同于花了相同多的錢(例如小 x 等待了 20 分鐘,那相當于他額外花了 20 元錢)。

在保證所有 Oier 都能在比賽開始前到達比賽地點的情況下,聰明的你能計 算出他們最少需要花多少元錢么?

輸入輸出格式

輸入格式:

?

每組數據以四個整數 N , K , D , S 開始,具體含義參見題目描述。

接著 K 行,表示第 i 輛出租車在第 Ti 分鐘到達校門,其空余的座位數為 Zi

(時間按照先后順序)。

N <= 100,K <= 100,D <= 100,S <= 100,1 <= Zi <= 4,1<= T(i) <= T(i+1) <= S

?

輸出格式:

?

對于每組測試數據,輸出占一行,如果他們所有人能在比賽前到達比賽地點,

則輸出一個整數,代表他們最少需要花的錢(單位:元),否則請輸出“impossible”。

?

輸入輸出樣例

輸入樣例#1:?復制
2 2 10 5
1 1
2 2
輸出樣例#1:?復制
14

?

?

洛谷題解:

竟然沒人寫題解

f[i][j]表示前i輛車走了j個OIer 狀態轉移方程也不難想?其實很難

f[i][j]=min(f[i-1][j-k]+k*t[i]+d,f[i][j])(1<=k<=min(j,z[i]))

附上代碼

 1 #include<iostream>
 2 #include<cstring>
 3 #define maxn 101
 4 using namespace std;
 5 int n,k,d,s,f[maxn][maxn];
 6 struct node{
 7     int t,z;
 8 }a[maxn];
 9 int main(){
10     memset(f,10,sizeof(f));
11     cin>>n>>k>>d>>s;
12     for(int i=1;i<=n;i++)cin>>a[i].t>>a[i].z;
13     f[0][0]=0;
14     for(int i=1;i<=k;i++)
15         for(int j=0;j<=n;j++){
16             f[i][j]=f[i-1][j];
17             for(int k=0;k<=min(j,a[i].z);k++)
18                 f[i][j]=min(f[i-1][j-k]+k*a[i].t+d,f[i][j]);
19         }
20     if(f[k][n]>=10000)cout<<"impossible";
21     else cout<<f[k][n];
22     return 0;
23 }

?

轉載于:https://www.cnblogs.com/Renyi-Fan/p/7774012.html

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

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

相關文章

leetcode1011. 在 D 天內送達包裹的能力(二分查找)

傳送帶上的包裹必須在 D 天內從一個港口運送到另一個港口。 傳送帶上的第 i 個包裹的重量為 weights[i]。每一天&#xff0c;我們都會按給出重量的順序往傳送帶上裝載包裹。我們裝載的重量不會超過船的最大運載重量。 返回能在 D 天內將傳送帶上的所有包裹送達的船的最低運載…

java集合概念_JAVA集合概念

Java集合是使程序能夠存儲和操縱元素不固定的一組數據。 所有Java集合類都位于java.uti包中。與Java數組不同&#xff0c;Java集合中不能存放基本數據類型&#xff0c;只能存放對象的引用。但是在JDK5.0以后的版本當中&#xff0c;JAVA增加了“自動裝箱”和“自動拆箱”的機制&…

項目計劃總結

項目計劃總結 任務 日期 聽課&#xff08;min&#xff09; 編程&#xff08;min&#xff09; 閱讀課本&#xff08;min&#xff09; 日總結&#xff08;min&#xff09; 2017/3/13 120 70 190 2017/3/14 80 80 2017/3/15 90 30 120 2017/3/16 …

HTML5新特性之Mutation Observer

Mutation Observer&#xff08;變動觀察器&#xff09;是監視DOM變動的接口。當DOM對象樹發生任何變動時&#xff0c;Mutation Observer會得到通知。 要概念上&#xff0c;它很接近事件。可以理解為&#xff0c;當DOM發生變動會觸發Mutation Observer事件。但是&#xff0c;它與…

leetcode230. 二叉搜索樹中第K小的元素(中序遍歷)

給定一個二叉搜索樹&#xff0c;編寫一個函數 kthSmallest 來查找其中第 k 個最小的元素。說明&#xff1a; 你可以假設 k 總是有效的&#xff0c;1 ≤ k ≤ 二叉搜索樹元素個數。示例 1:輸入: root [3,1,4,null,2], k 13/ \1 4\2 輸出: 1解題思路 變量 cnt:統計已經按序遍…

Python操作MongoDB - 極簡教程

2019獨角獸企業重金招聘Python工程師標準>>> Python 連接 MongoDB 安裝PyMongo模塊 pip install pymongo使用MongoClient建立連接 from pymongo import MongoClient # 以下為三種建立連接的方式 #client MongoClient() #client MongoClient(localhost, 27017) #cl…

nuxt.js的核心代碼_Nuxt.js中的通用應用程序代碼結構

nuxt.js的核心代碼by Krutie Patel通過克魯蒂帕特爾(Krutie Patel) Nuxt.js中的通用應用程序代碼結構 (Universal application code structure in Nuxt.js) Nuxt.js中的源代碼結構的簡要摘要 (A brief summary of source code structure in Nuxt.js) Are you new to the Nuxt.…

java 省市區三級聯動_AJAX省市區三級聯動下拉菜單(java版)

此小程序的功能主要是采用異步請求方式從數據庫中調取省市區信息顯示到下拉列表&#xff1a;代碼如下&#xff1a;建立數據庫中的代碼和一些配置文件信息就省略了&#xff0c;主要有JavaScript中的代碼為&#xff1a;$(document).ready(function(){$.get("getProvince.do&…

20155305喬磊2016-2017-2《Java程序設計》第四周學習總結

20155305喬磊2016-2017-2《Java程序設計》第四周學習總結 教材學習內容總結 繼承 繼承就是避免多個類間重復定義共同行為。面向對象中&#xff0c;子類繼承父類&#xff0c;就是把程序中相同的代碼部分提升為父類。extends關鍵字&#xff0c;表示前者會擴充后者的行為&#xff…

leetcode29. 兩數相除(位運算)

給定兩個整數&#xff0c;被除數 dividend 和除數 divisor。將兩數相除&#xff0c;要求不使用乘法、除法和 mod 運算符。 返回被除數 dividend 除以除數 divisor 得到的商。 整數除法的結果應當截去&#xff08;truncate&#xff09;其小數部分&#xff0c;例如&#xff1a;…

【eclipse轉idea的第一天】配置idea

為什么80%的碼農都做不了架構師&#xff1f;>>> 導入maven項目 設置maven(全局) 為了不然才轉idea的碼友們重復我犯過的錯&#xff0c;我這兒截圖步驟說明下&#xff1a; 這里是列表文本這里是列表文本idea的設置有兩種&#xff1a;全局&#xff0c;局部(我這么叫的…

node.js web框架_使用Node.js進行Web爬取的終極指南

node.js web框架So what’s web scraping anyway? It involves automating away the laborious task of collecting information from websites.那么&#xff0c;什么是網絡抓取&#xff1f; 它涉及自動化從網站收集信息的艱巨任務。 There are a lot of use cases for web s…

java局部內部類 final_Java的局部內部類以及final類型的參數和變量

Thinking In Java里面的說法(***正確的說法)&#xff1a; 如果定義一個匿名內部類&#xff0c;并且希望它使用一個在其外部定的對象&#xff0c;那么編譯器會要求其參數引用是final 的。publicclassTester {publicstaticvoidmain(String[] args) {A a newA();C c newC();c.shou…

Vmware 安裝虛擬工具 (二)

打開虛擬機&#xff0c;以root超級用戶登陸&#xff0c;菜單欄選擇虛擬機&#xff0c;install安裝虛擬機 拷貝虛擬工具到 在根目錄下建立文件夾&#xff0c;并將工具拷貝到該文件夾&#xff0c;例如vmtool 打開終端&#xff0c;進入該目錄開始安裝 如圖&#xff0c;進入目錄解壓…

git與svn的區別 ?Git 與 SVN那個更好?

git與svn的區別 &#xff1a; http://www.360doc.com/content/12/1228/20/11220452_256857021.shtml 在版本控制系統的選型上&#xff0c;是選擇Git還是SVN&#xff1f; 對于開源項目來說這不算問題。使用Git極大地提高了開發效率、擴大了開源項目的參與度、 增強了版本控制系統…

強化學習簡介

by ADL通過ADL Reinforcement Learning is an aspect of Machine learning where an agent learns to behave in an environment, by performing certain actions and observing the rewards/results which it get from those actions.強化學習是機器學習的一個方面&#xff0…

leetcode1111. 有效括號的嵌套深度(棧)

給你一個「有效括號字符串」 seq&#xff0c;請你將其分成兩個不相交的有效括號字符串&#xff0c;A 和 B&#xff0c;并使這兩個字符串的深度最小。 不相交&#xff1a;每個 seq[i] 只能分給 A 和 B 二者中的一個&#xff0c;不能既屬于 A 也屬于 B 。 A 或 B 中的元素在原字…

利用Arcgis for javascript API繪制GeoJSON并同時彈出多個Popup

1.引言 由于Arcgis for javascript API不可以繪制Geojson&#xff0c;并且提供的Popup一般只可以彈出一個&#xff0c;在很多專題圖制作中&#xff0c;會遇到不少的麻煩。因此本文結合了兩個現有的Arcgis for javascript API擴充庫&#xff0c;對其進行改造達到繪制Geojson并同…

java 線程簡介_java多線程介紹

java多線程介紹多線程的基本實現進程指運行中的程序&#xff0c;每個進程都會分配一個內存空間&#xff0c;一個進程中存在多個線程&#xff0c;啟動一個JAVA虛擬機&#xff0c;就是打開個一個進程&#xff0c;一個進程有多個線程&#xff0c;當多個線程同時進行&#xff0c;就…

webpack入門——構建簡易版vue-cli

用vue-cli1/2搭建一個vue項目時&#xff0c;可以看到有很多關于webpack配置的文件。我們不需要知道那些繁瑣的配置文件有什么作用&#xff0c;只需在控制臺輸入npm run dev&#xff0c;項目自動啟動&#xff0c;我們就可以愉快的寫業務代碼了。 雖然vue-cli幫我們做好了一切&am…