[題目鏈結] :
尺取法:又叫做雙指標,適合用來求一段連續的子區間
可以在o(n)的時間得出類似的求一段連續子區間的解
接下來讓我們來看看模板題
a題:在一段n個正整數的序列中,找個一段連續大於等於m的子串行
題解:直接套模板
#include
#include
#include
using
namespace std;
int a[
100005];
intmain()
int i=
0,j=
0,ans=
100005
,sum=0;
while(1
)if(sumbreak
; ans=
min(ans,j-i)
; sum-
=a[i++];
}if(ans<
100005
)else cout<<
"0"<}return0;
}
b題:求1-n中哪一段子區間的平方和等於s
#include
#include
#include
#include
using
namespace std;
typedef
long
long ll;
struct node
t[1000005];
intmain()
if(sum==n)
sum-
=i*i;
i++;}
cout
int i=
1;i<=ans;i++
) cout
}
二分的複雜度可以將複雜度降為log2 n
需要注意的是應用二分需要是一段具有單調性的區間,每次取l,r中點與所找的元素比較,若過大,則右邊界變為中點,反之則左邊界變為中點,直至找到答案
二分的難點主要在於如何設定判斷條件
看題
c題意:給出n個位置,選出其中m個位置,使得m個位置之間的最短距離最大。
題解:先對位置進行排序,使左邊界為0,右邊界為大於距離最大的可能。然後不斷二分直到符合條件
#include
using
namespace std;
typedef
long
long ll;
ll a[
100005];
int n,c;
bool
check
(int mid)}if
(sum>=c)
return1;
else
return0;
}int
main()
sort
(a+1
,a+1
+n);
ll l=
1,r=a[n]
-a[1];
while
(l<=r)
else r=mid-1;
} cout<1<}
d題:一根棍子橫立與兩面牆之間,當棍子受熱膨脹後會彎成弓形
(可以看做圓弧的一部分),求彎曲的棍子與原棍子的中點的距離。
這道題考察二分與計算幾何,因為所求得的結果是浮點數,而不是整數,要注意誤差r-l>=eps,一般eps1e-6足夠了,但有的毒瘤題需要1e-8或1e-10才能過,而且eps開得太小有可能tle
這題對所求距離進行二分,聽說別的同學對角度進行二分一直過不了。
列出三條方程得到r與所求距離的關係式。
**:
#include
#include
#include
#include
#include
using
namespace std;
double newl;
double l,c,n;
bool
check
(double mid)
intmain()
printf
("%.3f\n"
,r);
}return0;
}
f題:考察二分互動題
這是我做的第一道互動題,題目本身不難,但是與平常所做的題不同的是,角色交換了過來,我問他回答
需要注意的是每次輸入後都要fflush(stdout),清空一下,或者用endl自帶清空
**如下
#include
using
namespace std;
typedef
long
long ll;
intmain()
return0;
}
三分與二分的區別在於二分所解決的是一段單調序列,而三分可以用來解決一段既有單調遞增又有單調遞減的序列。做法與二分差不多,取兩個點為l=l+(r-l)/3.0與r=r-(r-l)/3.0
e題:三分模板題,求乙個n個二次函式在區間[0,100]的最小值中的最小值
這道題本身不難,但是沙雕的我定義了兩次三分點,在剛開始定義一次,在迴圈裡又定義了一次,導致wa了十多次都找不出錯誤,最後去問ksf,才解決的
直接上**:
#include
#include
#include
#include
#include
using
namespace std;
double a[
10005
],b[
10005
],c[
10005];
intmain()
double l=
0,r=
1000
,lm,rm;
while
(r-l>
1e-10)if
(maxlelse l=lm;
}double maxx=a[1]
*lm*lm+b[1]
*lm+c[1]
;for
(int i=
2;i<=n;i++
)printf
("%.4lf\n"
,maxx);}
return0;
}
spring專題 第一部分IOC 一)
ioc簡單介紹 ioc被稱作控制反轉,也被稱為依賴注入 di 是spring中重要的一部分,它是spring框架的重要組成之一,我們可以將ioc比作乙個容器,而它的作用就是幫助我們new 物件,管理物件的。控制反轉理解 那麼我將自己對控制反轉的理解簡單說一下,控制反轉其實是spring中的一種機制,...
Axure RP 第一部分
axure rp是乙個專業的快速原型設計工具。axure 發音 ack sure 代表美國axure公司 rp則是rapid prototyping 快速原型 的縮寫。axure rp是美國axure software solution公司旗艦產品,是乙個專業的快速原型設計工具,讓負責定義需求和規格...
CVPR 2018摘要 第一部分
neuronuggets cvpr 2018 in review,part i 作者 sergey nikolenko aleksey artamonov 翻譯 老趙 校對 李晶 整理 菠蘿妹 neuronuggets cvpr 2018年回顧,第一部分 在neuromation,我們一直在尋找有助...