记25_7_8
总结今天的 60 min 记单词时间很高效,复习 200 词花了10分钟,学习 400 新单词花了 50min,看来只要记单词专注力高就能更高效,背的也就越多hhhh~~~~ 以后更新要求:一天至少背 60 min && 学习300新单词,二者均要达标!!!!
记25_7_7
总结今天背单词途中忘记退出应用了,导致时间多算大概 280 min了(不是有意的啊啊啊~~~)所以 +60 min 就到 340 min了,也算打卡了吧(下次注意呜呜呜)
ac_835Trie字典树
题目描述 题目大意&链接给定一个字符串集合,需要支持两种操作(需要高效存储和查找字符串,否则会超时): 插入字符串(操作符为 I) 查询某个字符串出现的次数(操作符为 Q) 输入输出样例:输入: 5I abcQ abcQ abI abQ ab 输出: 101 详情:ac_835Trie字典树 解题思路本题使用Trie 树(字典树)来高效处理字符串的插入和查询操作。Trie 树的核心思想是利用字符串的公共前缀来减少查询时间,从而达到插入和查询的时间复杂度均为 O (m)(m 为字符串长度)。 数据结构设计:可以看下面代码注释 // Trie(字典树): 高效存储和查找字符串集合的数据结构const int N = 100010;int son[N][26]; //存储从节点 P 沿着 i 这条边走到的子节点int cnt[N]; //存储以节点 p 结尾的单词插入次数int idx; //给每个节点编号(节点数)char str[N]; ...
记25_7_6
总结英语背了一个小时单词
ac_154滑动窗口
题目描述 题目大意&链接给定一个长度为 n 的数组,和一个大小为 k 的滑动窗口,滑动窗口从数组的最左端移动到最右端,每次移动一个位置,要求输出每个窗口中的最小值和最大值。 输入输出样例:输入: 8 31 3 -1 -3 5 3 6 7 输出: -1 -3 -3 -3 3 33 3 5 5 6 7 详情:ac_154滑动窗口 解题思路单调队列:队列中的元素保持单调递增或单调递减: 对于最小值问题,维护一个单调递增队列:队列头部是当前窗口的最小值,新元素入队时,删除队列中所有比它大的元素,以保持队列单调递增。 int hh = 0, tt = -1;for (int i = 0; i < n; i++){ //判断队头元素是否还在队列里面,不应该在,则弹出队头元素(保持 k 个元素) if (hh <= tt && i - k + 1 > q[hh]) hh++; //队列不为空且队尾元素大于等于 x 时,弹出队尾元素(使队列具有单调性) while (hh <= tt...
ac_830单调栈
题目描述 题目大意&链接给定一个长度为 n 的整数数列,要求输出每个数左边第一个比它小的数,如果不存在则输出 -1。 输入输出样例:输入: 53 4 2 7 5 输出: -1 3 -1 2 2 详情:ac_830单调栈 解题思路维护一个栈,栈中元素保持单调递增的顺序。遍历数列时,对于当前元素 x,不断弹出栈顶元素直到栈顶元素小于 x 或者栈为空。 完整代码#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;const int N = 100010;int stk[N], tt;int main(){ int n; cin >> n; while (n--) { int x; scanf("%d", &x); //栈不为空且栈顶元素大于等于 x 时,弹出栈顶元素(使栈具有单调性) while (tt &&...
记25_7_5
总结英语背了一个小时单词
记25_7_4
总结校集训侥幸拿了 NO.1 哈哈哈~~ 英语背了一个小时单词
记25_7_3
总结英语背了一个小时单词
ac_801二进制中1的个数
题目描述 题目大意&链接求出给定数列中每个数的二进制表示中 1 的个数。 输入输出样例:输入: 51 2 3 4 5 输出: 1 1 2 1 2 详情:ac_801二进制中1的个数 解题思路这题求二进制数就是采用“除基取余”法: 将一个数除以2得到的余数作二进制数的数值位(低位),循环进行直到这个数除以2商是0,它的余数为最高位,这样的余数组成的数就是这个数的二进制数: int tmp = q[i], cnt = 0;while(tmp != 0){ if(tmp % 2 == 1) cnt++; tmp/=2;}printf("%d ", cnt); 完整代码#include<iostream>using namespace std;const int N = 1e6 + 10;int n;int q[N];int main(){ scanf("%d", &n); for(int i = 0; i < n; i++)...