題目 整數選擇

2022-05-31 13:27:13 字數 958 閱讀 1976

這是乙個經典問題。原來的問題是關於樹林中的樹葉的,這裡量化一下,改為整數選擇問題。現有n個隨機的正整數依次出現在你的面前。當每個數字出現時,你可以選擇或放棄。一旦選擇,不可更改;如果放棄,則不可返回重新選擇。若前n-1個數均未選擇,則必須選擇第n個數。你的任務是,設計一種選擇方案,使得在給定n的情況下,選擇的數盡可能大。

我們提出這樣乙個較優的簡單方案。可能存在較為複雜的方案使得選擇到較大數的概率更大,但為了簡化問題,我們只考慮以下方案中的「加權平均值」,即所有可能選擇的數及其出現概率的乘積之和。

首先由n確定乙個m。對前m個數,只記錄其最大值max。對後n-m個數,若存在某數大於max,則選擇此數。若前n-1個數均未選擇,則選擇第n個數。

你的程式需要計算出使得「加權平均值」最大的m。顯然,0<=m輸入一行,乙個整數n。資料範圍:1<=n<=10000.

輸出一行,乙個整數m。

題解:這道題很神奇。

view code

1 #include

2using

namespace std;34

int main()5 9

if(n==1000)

10 num=1500;

1112

for(i=1;i<=11;i++)

13

23for(k=i;k<=n;k++)

24

28 tot+=t;

29 }

30if(tot>ans)

31

35 }

36 cout<1

<37 system("

pause

");38

return

0;39

40 }

題目 翻轉整數

這道題我覺得應該用二進位制位移來做比較快,但是懶得想了就寫了乙個最普通的方法 static const auto io speed up class solution 結果超過了99.69 真滴好奇比這個還慢的是怎麼做的。之所以說這個最簡單,是因為從返回型為int和要求64位可以得到leetcode...

題目1190 大整數排序

題目描述 對n個長度最長可達到1000的數進行排序。輸入 輸入第一行為乙個整數n,1 n 100 接下來的n行每行有乙個數,數的長度範圍為1 len 1000。每個數都是乙個正數,並且保證不包含字首零。輸出 可能有多組測試資料,對於每組資料,將給出的n個數從小到大進行排序,輸出排序後的結果,每個數占...

leetcode題目7 整數反轉

給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例1 輸入 123 輸出 321 示例2 輸入 123 輸出 321 示例3 輸入 120 輸出 21 注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這個假設,如果反轉後整數...