wtpavssite

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2026春季下学期第四周

周一

今天学了

1.定义数组的时候如果使用的类型 数组名 [size]的形式的时候无法使用resize函数

2.max,min函数比较的时候最好先统一参数的类型,不然可能报错

3.在构造函数的时候如果需要在这个函数内部初始化变量和容器,可以使用:member(value)语法具体写法是在 函数的参数之后函数体之前写上:加需要初始化的列表,比如说cal(int x):a(val),v(10,0){...}则是在cal这个类里面构造了一个cal函数并在一开始就初始化了a的值是val,一个v数组大小10,每个值为0

4.iota函数传入两个数组的迭代器,代表开始和结束,第三个参数传入一个值,让开始为这个值,然后下一个位置的数字一次加一(这个函数只能控制步长为1)

上午和晚上一共补了三道题还学了一些其他的,大概晚上八点半我开始做RL的学习。

周二

下午打天梯赛做了11个错了两个,一个海盗一个朋友圈,剩下的没写。

周三

今天学了

1.pow的返回值是double类型,在转为int的时候可能会有精度却是,比如7.99999会变成7,除开这个问题,在pow的结果很大的时候是使用科学计数法来表示比如1e19之类,在OJ上可能就会WA

2.结构化绑定是在c++17开始有的语法,用auto或者具体的类型来获取一个类如pair的数据,比如有个pair<int,int>p,那么我们可以写auto [x,y]=p。

3.双链表的思想是用两个数组来记录某个点i的左邻居和右邻居,可以用在闭合环和动态合并和删除的场景

周四

今天学了

1.vector.assign(n,value)可以把vector数组重置为n个大小每个都是value的值,而resize函数在原来的数组没有n个大小的时候写vector.resize(n,value)会导致之前的数据没有被清除,后面新的才是value

今天补题,然后天梯赛海盗的那道题我一直觉得对于每个人来说,只要给其他的人下一轮能得到的钻石,应该是可以最小化花费的。可是他们好像不是这样想的。问了AI,Ai说这是两个不同的模型,我的模型是利益相同倾向不杀人,而另一种模型是,利益相同,倾向于杀人。我感觉有点牵强的解释是,如果是我的模型,那么就相当于把自己的性命交给了别人,这在博弈者看来是不好的

周五

下午来打牛客周赛146的重现赛,能感觉到这种比赛打起来其实有点吃力。我觉得平时要多写这种比如CF,牛客这些思维性强一点的,打了一个半小时做出来两个,有两个有思路但是不对

周六

今天学了

1.C++里面负数的取模操作得到的也是负数

2.无论是普通函数还是构造函数都可以在传入参数的地方写一个初始化参数,意思是当没有传入参数的时候,会有一个默认参数。

3.perator是一个结构体或者类的操作重构操作符,比如是operator表示当两个类型为(比如X)X的数据执行操作的时候,会执行这个operator*重构的函数的内容。需要注意的是,operator只能用作类的成员函数的重载来使用,全局函数不能使用

4.二元运算的重构中我们默认将左边的数字看作函数的调用者,用this来指代,右数是传入的参数用other来指代

5.成员函数的operator重构中const写的位置代表的意思不同比如const写在最前面const Z operator()...{...}意思是这个函数的返回值是const无法修改,而像这样的Z operator() const{...}代表这个函数的this指针指向的对象是const,成员函数和普通函数的区别就是成员函数在传入参数的时候,会隐形的传入一个this指针指向这个函数的调用者,但是需要注意的是,类里面(或者结构体)里面只有非静态成员函数有this指针,而静态成员函数没有

6.构造函数里面的初始化内容只能在初始化的时候赋值,如果想用另一个值只能再创建一个新的对象

7.费马小定理:在模的世界里面两个互质的数a,p。(a^(p-1) = 1 (mod p),那么我们可以根据这个求出数的逆元,a^ (-1)=a^(p-2)

8.我们知道endl会刷新缓冲区,\n不会,但是使用define将endl设置成后者之后再使用endl是不会刷新缓冲区的

9.lower_bound和upper_bound的函数的前两个参数是容器的迭代器,表示查找的范围,第三个参数输入需要比较的数字,这两个函数的返回值也是迭代器。这两个函数的时间复杂度都是O(nlogn)

10.lambda语法再探:
方括号(...)...{...},方括号里面代表的意思是捕捉列表,其中可以传入的有'&','=',this指针,或者什么也不传入,其中&代表引用传递,=代表值传递,this指针代表可以访问这个类里面的成员变量或者函数,什么都没有代表这个lambda语句不能访问外部的变量。需要注意的是[]代表的只是我们怎么读取外部的数据,而真正的类似函数的传入参数需要靠()。
()里面的传入参数的逻辑是和普通全局函数的逻辑是一样的,只是在递归调用的时候因为lambda语句没有自己的名字,如在全局dfs里面直接写dfs()写下一层的逻辑就可以了,所以我们习惯在lambda语句的第一个的参数那里写一个auto&&self,递归调用的时候就写self(self,...)传入正常的参数就可以了。讲解一下这个auto&&意思是万能引用,既可以引用左值又可以引用右值,而这里的lambda的递归调用里面的self就是左值,所以递归调用的时候直接写就可以了
{}里面的函数体就正常写,需要注意的是lambda语句的返回值不是像全局函数的那样写在最前面,而是在()和{}之间写一个->再写类型,像结构体的指针,为什么使用这个符号的原因是c++的符号表已经写满了,只能用之前用过的

周日

今天学了
1.multiset和set的区别就是前者可以存在重复的数字

posted on 2026-03-23 12:01  wt_pav  阅读(8)  评论(0)    收藏  举报