今天學習了二分答案演算法
一共過了兩道題目花費了我6個小時
在這個問題之外首先今天學的乙個在一本書上面看到的求a[i]<=k的最大i問題
#include
#include
intqqsort
(int
*a,int start,
int end)
a[i]
=t;qqsort
(a,start,i-1)
;qqsort
(a,i+
1,end);}
intsolve
(int
*a,int start,
int end,
int key)
else
}return end;
}int
main()
int k;
//for(int i=0;i//printf("%d ",a[i]);
scanf
("%d"
,&k)
;qqsort
(a,0
,n-1);
//排序出單調遞增的陣列
//開始二分搜尋 輸入乙個k值求 a[i]>=k的最大i 不存就輸出n
printf
("%d\n"
,solve
(a,-
1,n,k));
//為什麼為-1和n的原因是因為假如k為這個陣列最小的數 那麼如果是end會一直向右移動 一直移動到1 然後-1+1再除以2 就返回結果了
//假如不為-1 那麼而為0最終搜尋範圍是在【1,n】
//也就是將我們搜尋範圍為【n,m】那麼我們就要考慮最壞情況 假如搜尋的結果是n 那麼我們就應該考慮如何得到n 也就是(n+1+n-1)/2==n所有左邊界
//應該為n-1 同理 有邊界應該為m+1
}
寫了很多注釋的地方是我剛開始錯的地方
想了好久終於是想通了 為什麼不從0和n-1開始搜尋
如上注釋(嗚嗚嗚!!)個人理解有錯誤往指出
現在就是今天的ac題
問題 a: 切繩子洛谷鏈結
描述有n條繩子,長度分別為l[i]。如果從他們中切割出k條長度相同的繩子的話,這k條繩子每條最長能有多長?(答案保留小數點後兩位(直接捨掉兩位後的小數),規定1單位長度的繩子最多可以切割成100份)
格式輸入格式
包含多組輸入
輸入n,k,(1<=n,k<=10000)
然後n行,輸入l[i],代表每一條繩子的長度(1<=l[i]<=100000)
輸出格式
切出k條長度相等的繩子最大長度是多少,輸出保留兩位小數
樣例樣例輸入 copy
4 11
8.02
7.43
4.57
5.39
樣例輸出 copy
2.00
ac**如下
#include
intcheck
(int
*a,int n,
int k,
int ans)
if(sum>=k)
return1;
else
return0;
}int
main()
int l=0;
int r=
10000009
;int ans;
while
(r>=l)
else r=mid-1;
}printf
("%.2lf\n",(
double
)r/100);
}}
問題 b: 如何放牛()(沒有搜題)
描述農夫有n個牛欄,m頭牛,然後要讓你把m個牛都放進牛欄裡,讓兩頭牛之前的最大的最小距離
格式輸入格式
多組輸入
輸入n,m (1<=m<=n<=100000)
下面n行是牛欄的位置xi (0 <= xi <= 1,000,000,000)
輸出格式
輸出兩頭牛最大的最小距離
樣例樣例輸入 copy
5 3128
49樣例輸出 copy
3 提示
fj可以將他的3頭奶牛放在位置1,4和8的攤位上,最小距離為3.
大量輸入資料,建議使用scanf
雖然沒有看懂題目 但是看了一下資料
猜測到了這個是求最大化最小值
ac**
#include
long a[
1000005];
intcheck
(long
*a,int n,
int m,
long ans)
//ans為最少距離 m為個數
}// printf("sum%d m%ld %ld",sum,m,ans);
// getchar();
if(sum>=m)
return1;
else
return0;
}int
qqsort
(long
*a,int start,
int end)
a[i]
=t;qqsort
(a,start,i-1)
;qqsort
(a,i+
1,end);}
intmain()
qqsort
(a,0
,n-1);
// for(int i=0;i// printf("%ld ",a[i]);
r++;long l=0;
while
(l<=r)
else
}printf
("%ld\n"
,r);
}}
小結一下
學習了二分感覺自己又棒棒噠 又多一種暴力求解的思路
還有今天 我不曉得我學多久 但是一定有7小時 早上簽到 然後不小心又睡著了 噶!
2023年1月19日總結
python中transpose 類似於matlab中的permute,需要注意的是python中的transpose是從0開始的。舉個例子,矩陣a是12 10 1000的,如果要將矩陣 變為1000 12 10的,在python中,操作 為a a.permute 2 0 1 matlab中的per...
2023年3月20日學習總結
本週講解內容 本週老師還是繼續上一周的話題接著講貪心演算法,主要內容也沒什麼要闡述的,無非就是將乙個問題精簡為乙個最小問題,再找到這個最小問題的最優解,然後以此來找到整個問題的最優解。講了幾個常見情況,例如區間排程 活動安排 重疊區間 工廠利潤 質量合併 取規則下的最小數字等。我學到的 1 如果在排...
2023年1月4日 與父談話總結
2021年的第一篇部落格,先祝大家新年快樂,新的一年,身體健康,萬事如意!晚上跟老爸語音聊了會天,雖然還是像往常一樣的老生常談,但每次聽都會有不一樣的感覺,有時候是不太想聽,有時候是很認真的聽進去了。而這次顯然是後者。我們主要談了三個方面 第一,還是說學習的事情,這是首要的。告誡我還是要堅持到底,不...