Schwertlilien
As a recoder: notes and ideas.

2023.3.10

考柿考完了的第一天。

今天的任务是:

  • Spider(话说我的目的是—)

  • UC/OS-2、与AJ的课程–制定计划

  • 算法–查找

  • 力扣-5个题

  • 开始收集信息-参加夏令营-老师-需要哪些芝士

1.自己准备好自己的各项资料,包括成绩排名证明、荣誉称号、奖学金、科研竞赛奖状、英语成绩、近期一寸照片、身份证扫描、学生证扫描等等。

2.撰写文书:一页纸简历、个人陈述、自我介绍。

3.复习专业课以及准备可能被问到的英语问题及回答。

4.报名夏令营的同时积极联系老师。

资料:成绩排名、各类奖状、身份证学生证扫描

文书:简历(个人陈述),推荐信

二分查找

基本条件是==数组有序,查找的数量是一个==。

需要注意的是[low,high]还是[low,high)or(low,high]。

1
2
3
4
5
6
7
8
while(low<=high){
int mid=low+high>>1;//>>的优先级低于+,向下取整。若是向上取整:low+high+1>>1
if(nums[mid]>target){
high=mid;
}else if(nums[mid]<target){
low=mid;
}else{return mid;}
}

下面是梳理过程:

二分答案

二分答案指的是我想要的答案在一个区间(需要自己去找到这个区间),然后逐步缩小这个区间,得到我们的值。

luogugu上面有典题:木材加工P2440 木材加工

大概题意是给你一些数量的木头,然后把这些木头分别裁成相同长度的小块。比如有11 21cm的两块木头,需要被裁成6块等长的小木块。

我可以在11上切2块,21上切4块。那么切割出来的6块小木块的最长长度是5。我是这么算的:

(11+21)/6=5······2

当然这个例子是很简单的一个例子,可能存在的情况是:

  • 得到的数字远远大于其中某一节木块(1 100切5块),那么我应该选择不使用1这个木块,而是选择把100切5段,得到20.
  • 在相差不是很大的情况下,均分除出来的数字比其中一节木块大,考虑直接使用最小的那节木块的长度来切。

==将最值问题转化为判定问题==

init区间:[1,max(木头)]

  • 长度越长,切出来的个数越少。
  • 当长度x能满足条件时,小于长度x的一定也能满足条件。(low符合)
  • 所以看high这边还有没有符合的。(进行二分)
1
2
3
4
5
6
7
8
9
bool check(int mid){
//验证小段木头的长度为mid时是否可以满足条件
long long sum=0;
for(int i=0;i<n;i++){//len木头数组遍历
sum+=len[i]/mid;//第i根木头除mid
}
return sum>=k;//true false
}

力扣

判断 栈弹出 得到的序列是否有效、Y

搜索
匹配结果数:
未搜索到匹配的文章。