上一页 1 ··· 5 6 7 8 9 10 下一页
摘要: 这道题最核心就是二分W,然后对于每一个W都构建一个前缀和数组,但要注意ans不能开太小,我开INT_MAX都不行,其次就是二分左右端点的变化,如果s-y>0说明满足要求的点多了,这时候我们要提高标准,就是让W增大,及让beign=W+1,反之让end=W-1;如果s=y,此时ans=0;这时候我们可 阅读全文
posted @ 2025-02-10 20:53 郭轩均 阅读(35) 评论(0) 推荐(0)
摘要: 本题要构建两个st表,一个储存区间最大值,一个储存区间最小值,我们的思路是先构建k个最长的的子序列 这样就可以求出最小的极差的最大值(有点绕口),这个怎么理解呢,因为当你扩大区间时,区间的极差只可能比原来更大,因为如果扩进了一个大值那么极差不变,如果扩进了一个比原先区间最小值还小的值的话,极差就会变 阅读全文
posted @ 2025-02-10 16:04 郭轩均 阅读(29) 评论(0) 推荐(0)
摘要: 由于本题是一个环,所以可以开三倍的空间,要找i就可以转化成i+n,然后从前后查找(之前没遇到过,可以积累),本体的核心就是st表的处理和二分查找,我原本想直接用二分查找寻找[1,pos-1]和[pos+1,3*n]中>=b[i]并且与pos最近的值,但发现值的大小不是有序排列,所以不行,但是我们可以 阅读全文
posted @ 2025-02-09 20:56 郭轩均 阅读(62) 评论(0) 推荐(0)
摘要: 这道题要用带权并查集,感觉没听懂只能先把自己能懂得写了; 数组b[i]表示i与根节点的关系,//0 : 同类 1:吃 2:被吃#include r1 == r2 && b[x] != b[y]说明x和y在同一集合,但他们与根节点的关系不是一样的,说明他们不是同类,是假话 #include<set> 阅读全文
posted @ 2025-02-09 15:41 郭轩均 阅读(43) 评论(0) 推荐(0)
摘要: 并查集还是不熟,还得练 #include<iostream> #include<set> #include<map> #include<algorithm> #include<vector> #define int long long const int N = 1e6; using namespa 阅读全文
posted @ 2025-02-08 21:31 郭轩均 阅读(11) 评论(0) 推荐(0)
摘要: (题目大骗子,最后一个序号后面明明可以有空格),我原本想的是将map中的两个值都定义成string类型 ,但发现不对,然后发现题目说序号能重复,也就是说一个单词多次出现在一个句子时,只用统计一次,然后我就修改,但还是不对,也不知道为什么,我就按照答案的写法将两个值定义为string 和set就ac了 阅读全文
posted @ 2025-02-08 17:27 郭轩均 阅读(27) 评论(0) 推荐(0)
摘要: 这道题应该没法用双指针做,应为当i增大,j减小时A-B都是减小,我们可以将问题转化为A=B+C, 也就是当遍历到a【i】时求数组中有多少个数等于a【i】+c(最开始由于n和t取成一样的变量名了,导致卡了一会) 一下是二分查找的代码 #include<iostream> #include<set> # 阅读全文
posted @ 2025-02-08 16:38 郭轩均 阅读(32) 评论(0) 推荐(0)
摘要: 首先要注意score的范围,所以要用long long int,其次OK两个字母都是大写,并且插入和修改后都要输出Ok #include<iostream> #include<set> #include<map> #define int long long using namespace std; 阅读全文
posted @ 2025-02-08 15:49 郭轩均 阅读(51) 评论(0) 推荐(0)
摘要: 由于题目保证木材的长度互不相同所以很自然的想到要用set op=1时 使用find函数查找length 如果it==s.end(),说明仓库里没有该长度的木材,应该insert 反之输出“Already Exist” op=2时 使用lower_bound 函数查找第一个大于等于length的木材, 阅读全文
posted @ 2025-02-08 15:18 郭轩均 阅读(60) 评论(0) 推荐(0)
摘要: 总的来说这是一道简单的哈希算法,由于是字符串,所以哈希编码时只用乘26就行了 阅读全文
posted @ 2025-02-07 21:50 郭轩均 阅读(20) 评论(0) 推荐(0)
上一页 1 ··· 5 6 7 8 9 10 下一页