Description 思路 如果我们知道某一个站$b_i$到对$a_i$的贡献是多少,那么就可以用贪心求解(因为这样我们就知道$b_i$对$a_{i+1}$的贡献,从而知道$b_{i+1}$对$a_{i+1}$...)。所以可以考虑二分$b_i$对$a_i$的贡献。 可以把$b_i$对$a_i$的 ...
分类:
Web程序 时间:
2020-06-27 00:33:03
阅读次数:
167
这题是典型的贪心。 我们用一个变量canReach表示最远能到达的距离,canReach的初始值为0。 遍历数组,当遍历到位置x时,如果x小于等于canReach,说明当前位置可以从起点经过若干步跳跃到达, 因此我们可以用canReach = max(canReach, x + nums[x])更新 ...
分类:
其他好文 时间:
2020-06-27 00:21:21
阅读次数:
48
A: 现有两种购物方式 1.花单价a元购买 2.花c元购买b个物品 给出数据后问 1.购买多少个物品可以使得用方式1的花费严格小于方式2 2.购买多少个物品可以使得用方式2的花费严格小于方式1 若不存在输出-1 直接贪心 由于b>=2 ,购买一个必然是最优,如果这都不行那更大也不行 第二个询问也是同 ...
分类:
其他好文 时间:
2020-06-26 23:54:38
阅读次数:
111
题目链接:https://codeforces.ml/contest/1360/problem/G 题意:在一个n行m列的矩阵中 问是否存在每行有a个1 每列有b个1的矩阵 思路:首先判断能否能放 如果能放的话 要构造的话就要考虑贪心的构造 列和行同时考虑的话很难做 那么考虑首先满足每一行放a个1 ...
分类:
其他好文 时间:
2020-06-26 14:21:33
阅读次数:
53
/* * 方法一 贪心法 O(n) * * 当叠加的和小于0时,就从下一个数重新开始, * 同时更新最大和的值(最大值可能为其中某个值), * 当叠加和大于0时,将下一个数值加入和中, * 同时更新最大和的值,依此继续。 * * 举例: nums = [-2,1,-3,4,-1,2,1,-5,4] ...
分类:
编程语言 时间:
2020-06-26 12:27:32
阅读次数:
54
目标 带权重的有向图上单源最短路径问题。且权重都为非负值。如果采用的实现方法合适,Dijkstra运行时间要低于Bellman-Ford算法。 思路 选择一个节点开始蔓延 计算自身到连接它的一级节点之间的距离, 全部作为候选集 在候选集中,找到距离最短的,对应的那个节点 删除这个节点在候选集中的信息 ...
分类:
编程语言 时间:
2020-06-26 10:40:55
阅读次数:
63
题目链接:https://codeforces.com/contest/1265/problem/A 题意 给出一个由 a, b, c, ? 组成的字符串,将 ? 替换为 a, b, c 中的一个字母,问能否字符串中所有相邻字母都不同。 题解 除非一开始字符串就不合法,否则一定可以构造出合法的字符串 ...
分类:
其他好文 时间:
2020-06-25 19:19:42
阅读次数:
58
题目: 有 \(n\) 个整数,将其分配给 \(k\) 个人,每个人要求获得的数的个数为 \(w[i]\),每个人的幸福值为受的数的最大值和最小值之和。求所有人幸福值的和的最大值。 $1≤n≤2?105,1≤k≤n,?109≤a_i≤10^9,1≤w_i≤n,w_1+w_2+…+w_k=n$ 分析: ...
分类:
其他好文 时间:
2020-06-25 17:27:51
阅读次数:
80
Dijkstra算法算是贪心思想实现的,首先把起点到所有点的距离存下来找个最短的,然后松弛一次再找出最短的,所谓的松弛操作就是,遍历一遍看通过刚刚找到的距离最短的点作为中转站会不会更近,如果更近了就更新距离,这样把所有的点找遍之后就存下了起点到其他所有点的最短距离。(贪心算法每次都找到最优解,不回退 ...
分类:
编程语言 时间:
2020-06-25 12:21:33
阅读次数:
58
#include <bits/stdc++.h> #define ll long long #define fr first #define sc second #define pii pair<int, int> #define all(v) v.begin(), v.end() using na ...
分类:
其他好文 时间:
2020-06-25 09:24:44
阅读次数:
104