摘要: 不定长子段和~ 采用前缀和加单调队列来维护。 我们通过 $S_r - S_{l-1}$ 来表示子段 $[l,r]$ 的和。其中, $S_i=S_{i-1}+P_i$(前缀和)。 求出: $$\max \limits_{i\in [1,N]}\Big{S_i-\min \limits_{j\in [i 阅读全文
posted @ 2022-11-12 17:12 robinyqc 阅读(24) 评论(0) 推荐(0)
摘要: 概述 单调队列是一种维护队列的队列。它的思想是在决策集合中及时排除一定不是最优解的选择。时间复杂度 $O(N)$。 它是这么实现的: 在队尾加入元素: 若加入该元素不能使队列单调,不断移除队尾元素。否则在队尾加入给定元素。 队首元素出队: 如果队头元素在原队列中应当出队,就不断出队。 这样,单调队列 阅读全文
posted @ 2022-11-12 16:51 robinyqc 阅读(67) 评论(0) 推荐(0)
摘要: 思路可以看 yxc 的视频 link 这里采用了偷懒的离散化思想,即把 x,y 合并起来考虑。如果分离,效率更高。 code: #include<bits/stdc++.h> using namespace std; int c,n,x[505],y[505],sum[1005][1005]; ve 阅读全文
posted @ 2022-11-12 11:00 robinyqc 阅读(14) 评论(0) 推荐(0)
摘要: /* High Accuracy Calculator *** To name a new number, you may write like this: num a. Then it'll create a 0 in Decimalism *** But it's also OK to writ 阅读全文
posted @ 2022-11-12 10:56 robinyqc 阅读(36) 评论(0) 推荐(0)
摘要: 对于一个序列,如果其包含的元素仅存在两种状态,那么它可以用二进制状态压缩。具体的操作如下: |操作|运算| | : | : | |取出整数 $n$ 在二进制表示下的第 $k$ 位| (n>>k)&1 | |取出整数 $n$ 在二进制表示下的第 $0$~$k-1$ 位(后 $k$ 位)|n&((1<< 阅读全文
posted @ 2022-11-12 10:55 robinyqc 阅读(97) 评论(0) 推荐(0)
摘要: 题目的关键点是:给定 $q$ 次操作,每次操作是以上四种操作,求每次操作后的当前列表的末尾最后一个数(若数组为空输出 -1)。 如果放在 trie 树里,不就是叶子节点吗? 默认根节点为 1,根节点的父亲节点是它自己。记录每个节点的父亲节点,以及自己存的值。当前列表的最后一位(终点)则用指针 now 阅读全文
posted @ 2022-11-12 10:53 robinyqc 阅读(30) 评论(0) 推荐(0)
摘要: 本题关键点是: 对于 $i = 1,2,...,N-1$,满足两条线段 $P_iP_{i+1}$ 和 $P_{i+1}P_{i+2}$ 互相垂直。 因此我们把这道题理解为只有平行于坐标轴的向量计算。可以把所有向量分为两类:纵向的和横向的。那么,横向量 $\vec r$ 之和等于 $\vec x$,纵 阅读全文
posted @ 2022-11-12 10:53 robinyqc 阅读(59) 评论(0) 推荐(0)
摘要: 合理使用 C++ STL,在比赛中有利于减少失误,加快打题速度。这道题使用 STL map 很好做。 根据题意,我们先把数列去重观察。设数列构成大小为 $M$ 的集合 $S={S_1,S_2...,S_M}$。 刚好有 $K$ 个数比目标值大,其实就是说目标值在集合中是第 $K+1$ 大的。 那么题 阅读全文
posted @ 2022-11-12 10:52 robinyqc 阅读(210) 评论(0) 推荐(0)
摘要: ~~话说没人写 vector 高精的吗?~~ 这道题的思路在《算法竞赛进阶指南》中已经指出。具体如下: 这个方法很好,但实际上这道题还需要更深一步的解决:高精度。需要用到如下函数:乘、除、比较大小。使用面向对象编程以减少码量。具体代码如下; #include<iostream> #include<c 阅读全文
posted @ 2022-11-12 10:52 robinyqc 阅读(29) 评论(0) 推荐(0)
摘要: 题目 Farmer John's farm consists of a long row of N (1 <= N <= 100,000)fields. Each field contains a certain number of cows, 1 <= ncows <= 2000. FJ want 阅读全文
posted @ 2022-11-12 10:51 robinyqc 阅读(118) 评论(0) 推荐(0)
摘要: 今年来 S 组摆烂。结果这道题写出了 60 分~~的好成绩~~。这是考场上的代码: #include<bits/stdc++.h> #define ll long long using namespace std; int n,m,q,lg[2505]; ll f[16][2505][2505]; 阅读全文
posted @ 2022-11-12 10:50 robinyqc 阅读(40) 评论(0) 推荐(0)
摘要: 我的翻译! 思路 考虑广搜,棋子第一次到达某个方格用的步数就是这个方格的答案。但不要盲目地搜,需要纸上计算一下位于 $(X,Y)$ 的棋子,如果已知目标点的横坐标 $x$,求目标点的纵坐标 $y$。下面是推导过程: 求出 $x$ 的范围。设 $L=\sqrt M$,因为距离为 $L$,$x$ 是整数 阅读全文
posted @ 2022-11-12 10:50 robinyqc 阅读(91) 评论(0) 推荐(0)
摘要: 思路 题目翻译成数学语言就是让我们求这个式子: $$\max {i ,j\in [1,N],i\neq j} {(A_i+A_j )\in {x|x=2n,n\in \mathbb{N}+}}$$ 我们知道两个数的和为偶数只有两种可能:两个都是奇数或两个都是偶数。所以分类讨论即可。因为只有两个数,对 阅读全文
posted @ 2022-11-12 10:49 robinyqc 阅读(90) 评论(0) 推荐(0)
摘要: Dijkstra 做法:TLE 3个点,70pts (O2) , 复杂度 $O(n^3\ log\ m)$, $\Theta(n^3\ log\ m\ +\ Qn)$ 可优化至 $\Theta(\ n^3\ log\ m\ +\ n)$, 懒得写了。 代码: //Dijkstra Version # 阅读全文
posted @ 2022-11-12 10:48 robinyqc 阅读(30) 评论(0) 推荐(0)
摘要: 这道题虽然是模板题,但对作为线段树萌新的我来说很不友好QAQ 主要是对乘法、加法哪个的懒惰标记先处理这个问题的解决:(懒得写了,引用自题解) 加法优先,即规定好 : $$ tree_{2\cdot root} = (tree_{2\cdot root}+mark_{A,root}) \cdot ma 阅读全文
posted @ 2022-11-12 10:47 robinyqc 阅读(29) 评论(0) 推荐(0)
摘要: 时隔一年,再次做这道题,感觉好很多了233。当时暴力70分,如今新做法终AC。 做法来源于这个题解! 大佬 @StarBird 的做法 但是优化了码量,源自于对0和1的小技巧。代码如下 #include<bits/stdc++.h> #define INF 200010 using namespac 阅读全文
posted @ 2022-11-12 10:45 robinyqc 阅读(211) 评论(0) 推荐(0)
摘要: 这道题啊十分的有趣,其做法很神奇。详见代码: #include<bits/stdc++.h> using namespace std; int n,m,dn,dp[505][505],f[505][505],d[505]; signed main(){ cin>>n>>m; for(int i=2; 阅读全文
posted @ 2022-11-12 10:45 robinyqc 阅读(53) 评论(0) 推荐(0)
摘要: 题目点这里 思路: 首先想到的思路是找到关联的数对 $(x_1,y_1)$ 与 $(x_2,y_2)$ 满足其中任意两个数相等。从中可以知道这几双手套都是同一颜色。 但是数据量大,直接暴搜肯定不行。因此选择进行排序使数据先有序,而且是复杂度为 $O(n)=n·logn$ 的排序,这里选择快排 $x$ 阅读全文
posted @ 2022-11-12 10:41 robinyqc 阅读(61) 评论(0) 推荐(0)