《2023年11月9日》[連續030天]
內容:a.
a.輸入n(n<=100,000)個整數,找出其中的兩個數,它們之和等於整數m(假定肯定有解)。題中所有整數都能用int表示:
思路:解法1:兩重迴圈,列舉,複雜度是o(n^2);大約為100億,超時!
解法2:
1)將陣列排序,複雜度是o(n*log(n))底數是2;
2) 對陣列中的每個元素a[i],在陣列中二分查詢m-a[i]。複雜度是log(n),最壞查詢n-2,這部分的複雜度也是o(n*log(n)) ;
解法3:
1)將陣列排序,複雜度是o(n*log(n));
2) 查詢的時候,設定兩個變數i和j,i初值說0,j初值是n-1.看a[i]+a[j],如果大於m,就讓j-1,如果小於m,就讓i+1;,直至a[i]+a[j]=m;
總複雜度說o(n*log(n));
b.農夫john建造了一座長畜欄,它包括n(2<=n<=100,000)個隔間,這些小隔間的位置為x(0),.....,x(n-1)(0<=x(i)<=1,000,000,000)
john的c(2<=c<=n)頭牛每頭到乙個隔間。使任意兩頭牛之間的最小距離經可能大,則最大的最小距離說多少?(百練 2456)
總時間限制:
1000ms
記憶體限制:
65536kb
思路:解法1:
1)排序;
2)把第一頭放在x(0);
3)若第k頭牛放在x(i), 則找到x(i+1)到x(n-1)中第乙個位於[x(i)+d,1,000,000,000]中的x(j),第k+1頭牛放在x(j)。找不到,就d=d-1,轉2)重複;
複雜度 1,000,000,000/c*n,即 1,000,000,000,超時!
解法2:
1)排序;
2)在[l,r]內用二分法嘗試「最大最近距離」d=(l+r)/2(l,r初值為[1, 1,000,000,000/c])
若d可行,則記住該d,然後在新[l,r]中繼續嘗試(l=d+1)
若 d不可行,則在新[l,r]中繼續嘗試(r=d-1)
複雜度 log(1,000,000,000/c)*n;
明日計畫:學習stl排序演算法sort;
Day030 Linux常用的命令 1
a 一切皆檔案 b 配置檔案儲存為純文字格式 2.互動的方式 介面 cli介面 3.1 cd change directory cd 改變當前目錄到指定目錄 3.2 pwd printing working directory pwd 列印當前的工作目錄 3.3 ls list ls 檢視當前目錄的...
03 0 超速判斷 10
時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 楊起帆 浙江大學城市學院 模擬交通警察的雷達測速儀。輸入汽車速度,如果速度超出60 mph,則顯示 speeding 否則顯示 ok 輸入格式 輸入在一行中給出1個不超過500的非負整數,...
030 反射的理解
1.如果明確的知道乙個類的名稱,呼叫這個類方法的時候,就new乙個物件直接去呼叫 比如 a類有乙個方法 loadsomething 使用的時候 new a loadsomething 2.如果在開發中想傳入不同的類,讓傳入的類都去呼叫loadsomething 方法 此時,因為不知道後面會傳入什麼類...