贪心
文章平均质量分 63
Brightess
湖南城市学院在读,大四学生
展开
-
2018-2019 ACM-ICPC, China Multi-Provincial Collegiate Programming Contest(A、B、C、H)
2018-2019 ACM-ICPC, China Multi-Provincial Collegiate Programming Contest(A、B、C、H)原创 2022-10-29 11:22:51 · 514 阅读 · 0 评论 -
AtCoder Beginner Contest 271 C Manga(贪心 set 注意事项)
贪心 set 注意事项原创 2022-10-02 16:02:31 · 565 阅读 · 0 评论 -
Codeforces Round #822 (Div. 2) C Removing Smallest Multiples(复杂度为调和级数级别的暴力)
复杂度为调和级数级别的暴力原创 2022-09-24 15:23:11 · 383 阅读 · 0 评论 -
优先队列解贪心后悔类问题(HDU 1789、AcWing 145、洛谷 P4053)
贪心后悔类问题 优先队列解法原创 2022-06-17 12:21:44 · 119 阅读 · 0 评论 -
AcWing 149. 荷马史诗(“打补丁” 填充 k 叉哈夫曼树 贪心求最深节点深度最小值)
类似于 合并果子,但是 合并果子 是 每次合并 堆( 叉哈夫曼树),而本题是 每次最多合并 堆。( 叉哈夫曼树)共有两问:首先我们分析 哈夫曼树 的一个经典性质:但是如果按上面的性质,面对下面的情况中会存在一些问题:假设一棵哈夫曼树 共有 个节点,每次合并 个节点,造成的影响是 总节点数每次少 。当 最后一次合并的时候,我们只会 合并 堆,稍作思考,下面这棵树显然不是最优的原因:这棵树 最高处只有 叉,我们其实可以 将其下方任意一个节点取下来并作为最高处节点的子节点。这样 代价一定会变的更小原创 2022-06-14 10:24:26 · 182 阅读 · 0 评论 -
Codeforces Round #793 (Div. 2) B - AND Sorting
题目来源B AND Sorting点此进入题面题意:给出一个排列,给定一个数 X ,每次操作只能交换 i & j = X 两个位置 的数字,问:X 最大为多少,能通过这种操作 让序列变得有序。思路:如果一个数 p[i] ≠ i,那么一定要交换,所以必须有 X & p[i] = X。令 Y = 所有不在它原本位置的 p[i] 的按位与,则 X ≤ Y。实际上可以让 X = Y。因为我们可以把 Y 这个数字拿来当中介。如果要交换 p[i],p[j],我们可以先让 p[i] 和 Y原创 2022-05-23 18:20:51 · 152 阅读 · 0 评论 -
Educational Codeforces Round 128 (Rated for Div. 2) C - Binary String(双指针 前缀和 二分答案求最大值最小问题)
题目来源C Binary String点此进入题面题意:你有一个 字符串 s 由字符 0 和 1 组成。你必须从 字符串的开头 删除几个(可能是 0 个)字符,然后从 字符串的末尾 删除几个(可能是 0 个)字符。删除后,字符串可能会变为空。删除的成本 是 以下两个值 的 最大值:字符串中 剩余的字符 0 的个数;从字符串中 删除的字符 1 的个数。要求:算出可以达到的 最低移除成本 是多少?思路:代码:#de原创 2022-05-22 00:46:57 · 282 阅读 · 0 评论 -
Codeforces Round #791 (Div. 2) A - AvtoBus(暴力 贪心 数学)
题目来源A AvtoBus点此进入题面题意:给定一个数 n,如果它能被 m 个 4 或 6 组合而成,输出 m 的最小值和最大值。如果不能被若干 4 或 6 组成,输出 -1。思路:首先,当 n 为奇数 或 n 小于 4 的时候,显然是不能被 4 和 6 组合而成的,这需要进行特判。具体思路见代码注释。代码:#define _CRT_SECURE_NO_WARNINGS 1#pragma GCC optimize("Ofast")#pragma GCC optimize("inli原创 2022-05-18 17:02:54 · 143 阅读 · 0 评论 -
2022牛客寒假1 Baby‘s first attempt on CPU(树状数组做法 + 贪心)
题目描述一共有 n 个语句。若语句 i 向语句 j 调用(j < i),则这里两个语句之间必须 至少间隔三个语句(其中包括了 空语句 和 非空语句),否则会出现问题。题目输出给定语句调用表。你要插入最少数量的空白语句,来满足所有语句调用没有问题。题目可能较难理解,我们根据样例进行进一步解释:样例输入:4 //第一行包括一个整数 n ,表示 程序原有语句总数0 0 01 0 00 1 00 0 0// 上面 n 行,第 i 行描述了第 i 条程序语句,每行有 3 个数字...原创 2022-04-27 21:35:57 · 287 阅读 · 0 评论 -
AcWing 896. 最长上升子序列 II(贪心 + 二分 lower_bound)
本题是AcWing 895. 最长上升子序列的数据强化版,数据范围n<=1e5,可知原来O(n^2)的做法已经行不通了。因此我们至少应当将时间复杂度控制在O(nlogn)以内。思路:贪心 + 二分贪心思想:对于 最大上升子序列,结尾元素越小,越 有利于后面接上其他的数,也就 变得更长。贪心策略:建立一个 q 数组,元素 q[i] 表示 长度为 i 的 LIS 结尾元素 的 最小值,因此我们只需要维护 q 数组即可。具体措施:设 原数组为 a,q 数组中元素 q[i] 表示 长度为 i 的.原创 2022-03-26 16:50:44 · 415 阅读 · 0 评论 -
Codeforces Round #763 (Div. 2)
A. Robot Cleaner#include<bits/stdc++.h>using namespace std;int t;int n,m;int rb,cb,rd,cd;// robot dirty cellconst int N = 110,M = 110;int dr,dc;int g[N][M];inline bool judge(int a,int b){ if(a==rd||b==cd) return true; return fa原创 2021-12-30 20:34:53 · 438 阅读 · 0 评论 -
Educational Codeforces Round 120 (Rated for Div. 2)
A. Construct a Rectangle给定三根木棍,长度为 [公式] ,问可不可以折断一根,拼一个边都是整数的矩形?可以输出YES否则NO。题解两种情况,一种是折断一根的两条边是对边,另一种就是邻边。对边的情况:两外两条边相等,这条边为2的倍数邻边的情况:另外两条边加起来等于这条边#include<bits/stdc++.h>using namespace std;typedef pair<int,int> pii;#define x first原创 2021-12-30 20:17:36 · 424 阅读 · 0 评论 -
Codeforces Round #674 (Div. 3) C题(贪心)
题意:两个操作,一个是给序列任意位置+1,一个是赋值某一个元素加到后面。问你最少多少步和能>=n。思路:贪心贪心策略:先自增到某个数x,然后赋值这个x若干次直到超过n。所以只需要枚举[1,sqrt(n)]之间的因数,枚举x作比较即可。贪心策略的证明:假设现在我们经过a-1次操作,构造出了一个a,那么我们现在想得到一个b,设(b>a),所以我们现在需要1+(b-a)次变化,可以得到数列:ab(先复制一次a,然后将那个复制的a操作b-a次变成b)那么如果我直接将a操作b-a次变成b,然..原创 2021-12-14 17:47:28 · 995 阅读 · 0 评论 -
AcWing 125. 耍杂技的牛(贪心)
农民约翰的 N 头奶牛(编号为 1…N)计划逃跑并加入马戏团,为此它们决定练习表演杂技。奶牛们不是非常有创意,只提出了一个杂技表演:叠罗汉,表演时,奶牛们站在彼此的身上,形成一个高高的垂直堆叠。奶牛们正在试图找到自己在这个堆叠中应该所处的位置顺序。这 N 头奶牛中的每一头都有着自己的重量 Wi 以及自己的强壮程度 Si。一头牛支撑不住的可能性取决于它头上所有牛的总重量(不包括它自己)减去它的身体强壮程度的值,现在称该数值为风险值,风险值越大,这只牛撑不住的可能性越高。您的任务是确定奶牛的排序,使原创 2021-10-17 14:53:17 · 84 阅读 · 0 评论 -
AcWing 148. 合并果子(Huffman Tree 贪心)
在一个果园里,达达已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。达达决定把所有的果子合成一堆。每一次合并,达达可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过 n−1 次合并之后,就只剩下一堆了。达达在合并果子时总共消耗的体力等于每次合并所耗体力之和。因为还要花大力气把这些果子搬回家,所以达达在合并果子时要尽可能地节省体力。假定每个果子重量都为 1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使达达耗费的体力最少,并输原创 2021-10-17 00:52:52 · 138 阅读 · 0 评论 -
AcWing 905,908,906,907(经典区间问题 贪心)
AcWing 905.区间选点、908.最大不相交区间数量905 区间选点给定 N 个闭区间 [ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。输出选择的点的最小数量。位于区间端点上的点也算作区间内。输入格式第一行包含整数 N,表示区间数。接下来 N 行,每行包含两个整数 ai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示所需的点的最小数量。数据范围1≤N≤105,−109≤ai≤bi≤109输入样例:3-1 12 43 5输出样原创 2021-10-17 00:43:59 · 206 阅读 · 0 评论