摘要:
题目简化和分析: 选择 $n$ 个朋友,满足以下条件: 工资差异 $<d$ 友谊和最大(题目翻译不太清楚) 现在面临两个问题 求差异值 求友谊和 所以我们理应想到~~线段树~~双指针。 排序后满足工资从小到大,友谊和可以用前缀和实现。 每次往后加一个人。 用 while 循环,增加左端点,使得工资差 阅读全文
题目简化和分析: 选择 $n$ 个朋友,满足以下条件: 工资差异 $<d$ 友谊和最大(题目翻译不太清楚) 现在面临两个问题 求差异值 求友谊和 所以我们理应想到~~线段树~~双指针。 排序后满足工资从小到大,友谊和可以用前缀和实现。 每次往后加一个人。 用 while 循环,增加左端点,使得工资差 阅读全文
posted @ 2022-08-02 20:51
RVG
阅读(35)
评论(0)
推荐(0)
摘要:
题目简化和分析: $a_{i}\ge a_{i-1}$ 已经满足直接跳过 $a_{i}<a_{i-1}$ 我们就要将其的差进行二进制的分解,使得 $a_{i-1}=a_i$ 我也不知道一开始我怎么想的还开了个 $f$ 数组。 $f_i=f_{i-1}+(2^{f_{i-1}}=i)$ 这部妥妥的 M 阅读全文
题目简化和分析: $a_{i}\ge a_{i-1}$ 已经满足直接跳过 $a_{i}<a_{i-1}$ 我们就要将其的差进行二进制的分解,使得 $a_{i-1}=a_i$ 我也不知道一开始我怎么想的还开了个 $f$ 数组。 $f_i=f_{i-1}+(2^{f_{i-1}}=i)$ 这部妥妥的 M 阅读全文
posted @ 2022-08-02 08:23
RVG
阅读(28)
评论(0)
推荐(0)

数学 乘法逆元 递推求乘法逆元 #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef double db; const int N=3000010; ll inv[N],n,p; int main() {
题目简化和分析: 明确一点这是一棵树。 为了保证每个工业城市的设置效益最大,应该设在最深的节点。 从深到浅,可以使用优先队列去实现。 设置一个的价值为 $dep_u-siz_u-1$。 关于作者一开始想反了,设置旅游城市,虽然可以做,但非常麻烦,于是看了别人大佬思路才明白。 错误原因在于,有可能儿子
题目简化和分析: 属于一种贪心思维,我们想如果要使得和最大,那么就必须保证最大的数乘的次数越多越好,并且排序没有限制,快速累加每个位置出现的次数,所以应该使用~~线段树~~差分。 然后排序最大乘最大累加。 Solution: #include<bits/stdc++.h> using namespa
题目简化和分析: 给您一个序列,您要在其中选择若干个数使得: 相邻两数异号 长度最大,总和最大 我们可以牢牢抓住长度且总和最大,这一特性。 说明我们必须在每一个连续的同号的子串中被迫选择最大的,以满足这一属性。 例如,样例 $1,2,3,-1,2$ 被我们分割成了 $1,2,3$ 和 $-1,-2$
题目简化和分析: 为了更加快速的求出答案,好像没前缀和快速。 为了大家更好的理解线段树,我们使用了线段树。 如果您并不了解线段树,可以转战模板。 因为我们知道线段树可以快速求区间和,于是我们建两棵树。 一个是原来数组,一个是排好序的数组。 每次查询分别用不同的线段树区间和就行了。 Solution:
题目简化和分析: 给您一个数组,在其中选择若干个数使得: 任意前缀和 $\ge 0$ 数量尽可能的大 我们可以使用贪心策略,策略如下: 如果当前数为非负,必喝。 而毒药尽可能的多喝,如果喝没了,就把最小的吐了。 以上操作可以采用优先队列去优化。 重载运算符 struct node{ ll v; bo
题目简化和分析: k叉树,乍一看好像是树论,但我们通过分析条件,发现它每个阶段要做的事情一样,皆为:$1\sim k$ 中选数字,这就很明显是DP。 $\mathit{f}_{i,0}$ 表示和为 $i$,但不满足至少一边 $\ge d$。 $\mathit{f}_{i,1}$ 表示和为 $i$,并
浙公网安备 33010602011771号