一、前言
sheepice的CSDN博客地址:CSDN地址
欢迎大家来到一周一总结的栏目!!希望能够和大家一起努力!
二、算法学习
这周因为课内要准备复习,所以好像这周对课外的东西没有看特别多,所以还是以算法学习为主吧!上周认识到了ACwing这个网站,然后知识付费了一下,和朋友购买了一个算法的课程,还挺不错的,基本是模板题目但是还是常做常新!
下面是这周的一个算法小结(选取一些之前没有写过博客的模板粘上去):
①快速排序:随机选择某个数,然后利用递归的思想,让那一个随机选择的数的左右两边分别是大于他的和小于他的,然后利用双指针和交换的方法!
#include<bits/stdc++.h>
using namespace std;
const int N = 100000 + 5;
void quick_sort(vector<int> & q, int l, int r) {
if(l >= r) return;
int m = (l + r) >> 1;
int mid = q[m];
int sd = l - 1, ed = r + 1;
while(sd < ed) {
do sd++; while(q[sd] < mid);
do ed--; while(q[ed] > mid);
if(sd < ed) swap(q[sd], q[ed]);
}
quick_sort(q, l, ed);
quick_sort(q, ed + 1, r);
}
int main() {
int n;
cin >> n;
vector<int> ss;
int num;
for(int i = 0; i < n; i++) {
cin >> num;
ss.push_back(num);
}
quick_sort(ss, 0, n - 1);
for(int i = 0; i < n; i++) cout << ss[i] << " ";
}
作者:sheepice
链接:https://www.acwing.com/activity/content/code/content/3347542/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
②归并排序(加求逆序对) + 树状数组求逆序对:
两种方式都尝试了一遍,具体代码链接如下:
③一维,二维前缀和 + 一维,二维差分
④离散化操作(解决了区间和以及区间合并):这里之后会总结一篇博客的!
本周(其实就这两天)刷算法挺上头的,只能说能力在慢慢提升,之前以为刷的题越多越好,但是其实应该是巩固最起码的模板题目,然后再谈刷题,所以非常推荐y总的《算法基础课》,虽然有点小贵,但是钱得花在刀刃上,不是吗哈哈哈!
附上这两天的刷题记录,上面真的总结到位了:
三、运动
本周的话,采用了一种运动方式,和家人们一起运动打卡,然后也一起听着歌,跑跑步啥的,真的非常的不错!
四、小倾诉
这周的话,有过不愉快的交谈。其实起因就是自己一直坚持一个比较虚伪的自己吧。明明运气的不公让你觉得自己的努力白费了两年,然后就会为了满足自己内心深处的那一点点自尊和不甘,编出一个让自己心安理得的谎言。然后被狠狠地揭穿了,其实那一刻我内心是无比的内疚和自责的,一个怪自己明明早就已经接受了现实,却还是无法放下过去。一个怪自己明明知道那么多道理,却还是在人面前加厚着自己的外衣。不过真的感谢用火把纸烧出洞的人吧,也许没有这么一个人出现的话,以后永远没有办法去正视在那一方面的自己吧!只可惜很多事情一旦发生,还是会产生各种各样的不堪的后果。这个谎言以后也不会再说了,虽然没有伤害他人,但是却真正地虚伪了不是自己的“我”,希望自己再多努力努力,之后不再嫉妒努力,而是享受那些一起拼搏的日子吧!