第三次oj貪心

2021-10-16 21:15:22 字數 2465 閱讀 3831

貪心演算法主要思路

①建立數學模型模擬問題

②拆分問題尋找區域性最優解

③集合區域性解

description

乙個旅行家想駕駛汽車以最少的費用從乙個城市 到另乙個城市(假設出發時油箱是空的)。給定兩個城市之間的距離d1、汽車油箱的容量c(以公升為單位)、每公升汽油能行駛的距離d2、出發點每公升汽油**p 和沿途油站數n(n可以為零),油站i離出發點的距離di、每公升汽油**pi(i=1,2,……n)。計算結果四捨五入至小數點後兩位。如果無法到達目的 地,則輸出「no solution」。

input

第一行為4個實數d1、c、d2、p與乙個非負整數n;

接下來n行,每行兩個實數di、pi。

output

如果可以到達目的地,輸出乙個實數(四捨五入至小數點後兩位),表示最小費用;否則輸出「no solution」(不含引號)。

sample input

275.6 11.9 27.4 2.8 2

102.0 2.9

220.0 2.2

sample output

26.95

#include

using

namespace std;

double d[

1000001

],p[

1000001

],d1,v,c,p1,cost,oilremain,dis;

int n,sta,i;

intmain()

flag=1;

//標記找到

sta=i;

//防止sta受影響

break;}

}if(!flag)

//找到的話繼續do迴圈找是否還有更便宜的,沒找到則繼續 }}

while

(sta;printf

("%.2lf\n"

,cost)

;return0;

}

description

回文串,是一種特殊的字串,它從左往右讀和從右往左讀是一樣的。

小龍龍認為回文串才是完美的。現在給你乙個串,它不一定是回文的,請你計算最少的交換次數使得該串變成乙個完美的回文串。

交換的定義是:交換兩個相鄰的字元

例如: mamad

第一次交換 ad : mamda;

第二次交換 md : madma;

第三次交換 ma : madam (回文!完美!)

input

第一行是乙個整數n,表示接下來的字串的長度(n ≤ 8000)。

第二行是乙個字串,長度為n.只包含小寫字母。

output

如果可能,輸出最少的交換次數。

否則輸出impossible。

sample input

5mamad

sample output

#include

using

namespace std;

int i,j,n,flag,ans;

string a;

intmain()

flag++

; ans+

=n/2

-i;//如有無法配對字元最後再交換(可直接不交換)

}else

if(a[i]

==a[j]

) l--

;//又配好一對,匹配範圍縮小

break;}

}}cout

}

小明正在玩乙個「翻硬幣」的遊戲。

桌上放著排成一排的若干硬幣。我們用 * 表示正面,用 o 表示反面(是小寫字母,不是零)。

比如,可能情形是:oo*oooo

如果同時翻轉左邊的兩個硬幣,則變為:oooo***oooo

現在小明的問題是:如果已知了初始狀態和要達到的目標狀態,每次只能同時翻轉相鄰的兩個硬幣,那麼對特定的局面,最少要翻動多少次呢?

我們約定:把翻動相鄰的兩個硬幣叫做一步操作,那麼要求:

input

兩行等長的字串,分別表示初始狀態和要達到的目標狀態。每行的長度<1000。

output

乙個整數,表示最小操作步數。

sample input

oo

sample output

主要思想

兩種狀態中只能有雙數不一樣狀態的硬幣,然後兩兩配對挨個翻

#include

using

namespace std;

intmain()

else

if(flag==

0&&a[i]

!=b[i]

)//尾

} cout

}

第三次作業

2 12有600 mb 兆位元組 的資料,需要從南京傳送到北京。一種方法是將資料寫到磁碟上,然後託人乘火車這 些磁碟捎去。另一種方法是用計算機通過長途 線路 設資訊傳送的速率為2.4kb s 傳送此資料。試比較這兩種方法的優劣。若資訊傳送速率為33.6kb s,其結果又如何?解 當傳送速率為2.4k...

第三次作業

1 有600mb 兆位元組 的資料,需要從南京傳送到北京 一種方法是將資料寫到磁碟上,然後託人乘火車將這些磁碟捎去。另一種方法是用計算機通過長途 線路 設資訊傳送的速率為2.4kb s 傳送此資料,試比較這兩種方法的優劣。若資訊傳送的速率為33.6kb s,其結果又如何?解 假定連續傳送且不出錯。若...

第三次作業

p67 2 12 有600mb的資料,需要從南京傳送到北京。一種方法是將資料寫到磁碟上,然後託人乘火車將這些磁碟捎去。另一種方法是用計算機通過長途 線路 設資訊傳送的速率是2.4kbps 傳送此資料。試比較這兩種方法的優劣。若資訊傳送速率為33.6kbps,其結果又如何?解 1 t 600 1024...