3.27训练周记

6 篇文章 0 订阅

这周参加了两场比赛(今晚也还有一场),怎么说呢,感觉确实不太好,一场是教育赛6题出了两题(不过当时出了点小状况,在比赛总结里我提到了),第二场是div1 + div 2的只出了一道题,打完这两场说没有感触是不可能的,不过我还是用比赛打得太少了/思维题太多不适应的理由安慰自己,但总归还是得正视自己的不足,之后比赛还是得多参加,很幸运的是,组了队之后,有队友和我一起熬夜打比赛让我感觉不是一个人在战斗,赛后也能和队友一起讨论题目,每个人的思路不一定相同,不同时还能思考他的想法,比如有一题,我上手就写了半个小时的记忆化搜索,其实实际上一个循环外加判断就可以出结果。确实还是自己脑子太死板了,得多加练习。

虽然说这两次比赛结果并不怎么样,但是还是让我学到了一些东西的

1.感觉数据较大时直接开long long

2.设置最大参数和最小参数的时候尽量往大的设置

,或者直接使用 <limits.h>里的LLONG_MAX 和 LLONG_MIN两个宏分别表示long long的最大值和最小值。

3.比赛的时候还是得使用万能头文件 #include<bits/stdc++.h>

本来我的想法是头文件尽量手写,不然以后怕忘记,不过结果比赛吃了好大一瘪。

4.

 ios::sync_with_stdio(false);

cout.tie(NULL);

这两行代码可以解除cin和cout的绑定和缓存提高执行效率。开头可以加上。

5.主要的解题过程最好还是封装在一个函数里,这样调bug的时候比较方便

比赛的事先说到这,接下来总结一下这星期学了啥,虽然说没有学新算法,但是理了理一些stl的具体操作,比如

  1. vector的erase其实只是删除了指定位置的值,并把后面所有元素向后移动,效率很低。
  2. 一些排序的容器,比如set,map,可以添加greater<type>或者less<type> 来调整排序方式。greater和less本质是一个重载了对应运算符的结构体/类,greater重载了>运算符,可以使容器降序排列,less重载了<运算符,升序排列。还有一些其他的类似结构体库文件内可以查看不再赘述。同理,如果排序容器的元素是自定义类或结构体的话,我们也可以重载一个类内运算符来自定义排序方式。
  3. algorithm内的lower_bound和和容器成员函数的lower_bound不太一样,全局的lower_bound参数依次为([起始地址,末地址),目标值),而且返回值减去起始地址才是查询到的下标,但是lower _bound查找的是第一个>=目标值的元素,如果目标值不存在时会返回一个>目标值的值, 如果lower_bound返回值为下标t,目标值为N,我们可以这样判断if(arr[t]==N)来判断是否查找到(同理set和map的find之类的查找也可以类似的判断与end()的关系)而成员函会直接返回该元素的迭代器。需要加以区别
  4. 需要用到降序的时候可使用重载了>的greater<typename>结构体,或者greater<typename>()函数,less同理

这周 还整理了一下二分的模板和相似情况下的边界处理,单独发了一篇博客,这里不再细说

最后,就是感觉自己要学的还有好多,不仅仅是知识点,那些思维也要跟上。现在就想到这么多,,先到这吧。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值