摘要: 题目:货仓选址 link:https://www.acwing.com/problem/content/106/ 分析 code #include <bits/stdc++.h> using namespace std; const int N = 1e5 + 10; int arr[N], n; 阅读全文
posted @ 2022-07-28 16:30 SL霸霸 阅读(418) 评论(0) 推荐(0) 编辑
摘要: 离散化 什么是离散化? 一些数据范围比较大,但是数据的个数不多,将其数字映射成较小的下标 从本质上来看离散化可以看成哈希,是一种特殊的哈希,其保证数据在哈希以后仍然保持原来的顺序 离散化的步骤 排序 去重(排序好了才能去重,可以用stl中的unique去重然后用erase去除) 访问的时候可以通过二 阅读全文
posted @ 2022-07-28 12:22 SL霸霸 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 双指针去重法 思路 代码板子 //返回一个无重序列的后一位的迭代器(便于删除,仅保留无重复序列) vector<int>::iterator unique(vector<int>& t) { int j = 0; for (int i = 0; i < t.size(); ++i) { if (!i 阅读全文
posted @ 2022-07-27 20:15 SL霸霸 阅读(48) 评论(0) 推荐(0) 编辑
摘要: 区间合并的朴素做法 时间复杂度O(n2) 第一层循环遍历遍历区间,然后第二层循环去查找区间看能否合并然后更新,时间复杂度太高了 区间合并的贪心做法 时间复杂度O(nlogn) 步骤: 左端点为关键字然后从小到大排序 当前区间和下一个区间的关系有三种: 核心板子代码 // 将所有存在交集的区间合并 i 阅读全文
posted @ 2022-07-27 20:08 SL霸霸 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 位运算常见的两种操作 1. 求x的二进制表示中第k位是几x >> k & 1(从第0位开始,比如1100第0位是0,第一位是0,第二位是1,第三位是1) #####算法的时间复杂度:O(logn) #####算法详解: 1.先把第k位移到最后一位x >> k 2.再看个位是几(通过&1来判断) x 阅读全文
posted @ 2022-07-25 00:47 SL霸霸 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 参考: https://www.programmercarl.com/ https://www.acwing.com/ 哈希表: 哈希表就是通过哈希函数把x映射成唯一对应的y,y作为key,x作为value通过y可以索引x,其实数组就是一个哈希表,但这个通过哈希函数生成的key可能会发生哈希 通过k 阅读全文
posted @ 2022-07-13 11:35 SL霸霸 阅读(132) 评论(0) 推荐(0) 编辑
摘要: memset函数介绍 简介: memset是以字节为单位对一块内存进行初始化的,在c中位于头文件<string.h>中,c++位于头文件中 函数原型: void *memset(void *s, int c, unsigned long n); 对以s为首地址的n个字节大小的内存,每个字节初始化成c 阅读全文
posted @ 2022-07-13 10:12 SL霸霸 阅读(2481) 评论(0) 推荐(0) 编辑
摘要: 树状数组 阅读全文
posted @ 2022-07-08 14:37 SL霸霸 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 朴素筛:本质就是每一个合数n都可以被2-n-1里的数筛掉,这里就发现了一个问题就是,一个合数可能会被多次筛多次,这步可以进行优化。 埃氏筛:本质就是每一个合数n都可以被2-n-1里的素数筛掉,这里就是对朴素筛进行了优化,因为合数都会被素数筛掉,这样一来确实提升了时间复杂度,但是还是存在重复筛的情况 阅读全文
posted @ 2022-07-05 11:30 SL霸霸 阅读(76) 评论(0) 推荐(0) 编辑