![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
贪心
罚时大师月色
努力让更多小白和我一起共同进步
展开
-
AcWing 507. 积木大赛 (贪心+差分)
AcWing 507. 积木大赛原创 2021-02-25 08:23:55 · 158 阅读 · 1 评论 -
AcWing 907. 区间覆盖 贪心
AcWing 907. 区间覆盖给定N个闭区间[ai,bi]以及一个线段区间[s,t],请你选择尽量少的区间,将指定线段区间完全覆盖。输出最少区间数,如果无法完全覆盖则输出-1。输入格式第一行包含两个整数s和t,表示给定线段区间的两个端点。第二行包含整数N,表示给定区间数。接下来N行,每行包含两个整数ai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示所需最少区间数。如果无解,则输出-1。数据范围1≤N≤105,−109≤ai≤bi≤109,−109≤s≤t≤109输入原创 2021-02-23 15:27:04 · 402 阅读 · 1 评论 -
Acwing 906. 区间分组
906. 区间分组给定N个闭区间[ai,bi],请你将这些区间分成若干组,使得每组内部的区间两两之间(包括端点)没有交集,并使得组数尽可能小。输出最小组数。输入格式第一行包含整数N,表示区间数。接下来N行,每行包含两个整数ai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示最小组数。数据范围1≤N≤105,−109≤ai≤bi≤109输入样例:3-1 12 43 5输出样例:2这道题挺有难度的,先对左边界进行一个排序,然后建立一个小根堆,然后放进去有边界,每原创 2021-02-23 11:22:26 · 218 阅读 · 1 评论 -
Acwing 905. 区间选点
905. 区间选点给定N个闭区间[ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。输出选择的点的最小数量。位于区间端点上的点也算作区间内。输入格式第一行包含整数N,表示区间数。接下来N行,每行包含两个整数ai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示所需的点的最小数量。数据范围1≤N≤105,−109≤ai≤bi≤109输入样例:3-1 12 43 5输出样例:2思路:将每个点的右边界进行排序,每次选取有边界作为一个点原创 2021-02-23 09:01:49 · 176 阅读 · 0 评论 -
Acwing 1262.鱼塘钓鱼
https://www.acwing.com/problem/content/1264/好像没有视频讲解,自己想了想,我用了一个叫堆的东西,把我想要的东西去贪心出来。#include<iostream>#include<queue>#include<algorithm>using namespace std;typedef pair<int,int> PII;const int N=110;int a[N],b[N],s[N];int m.原创 2021-02-08 08:40:42 · 272 阅读 · 0 评论 -
AcWing 1248. 灵能传输
这是我做过最难最有意思的题吧。这里面的规律很有趣,要是没学过前缀和确实不会很容易发现里面的规律。我们把每一个数用前缀和来表示,如果可以选择“传递灵能”的话,我们发现s[i-1]=s[i-1]+a[i]=s[i]s[i]-2a[i]+a[i]=s[i-1]s[i+1]-2a[i]+a[i]+a[i]=s[i+1]由此可见与其说传递灵能,我们可以把他表示为一个s[i]于s[i-1]的互换过程,然后我们想要求相邻的s[i]与s[i+1]的差最小,我们正常的思路是,单调递增,他们之间的差一定是最小的原创 2021-02-04 23:19:14 · 370 阅读 · 2 评论 -
AcWing 1247. 后缀表达式
老师的讲课网址https://www.acwing.com/video/736/第二个图就已经告诉我们只要有一个减号,我们就可以组成至少含一个减号的所有组合比如说一个减号三个加号我们可以组合成1.-+++2.–++3.—+4.----所以代码如下#include<iostream>#include<algorithm>#include<cmath>using namespace std;const int Inf=0x3f3f3f3f;.原创 2021-02-04 21:41:54 · 1442 阅读 · 0 评论 -
AcWing 1239. 乘积最大
输入样例5 3-100000-10000210000010000输出样例999100009输入样例5 3-100000-100000-2-100000-100000输出样例-999999829这道题是典型的贪心,首先我们要考虑一下当选的数为奇数的情况下,若都不是复数,至少选一个非负数,所以有了这个程序 if(k%2) { res=g[r--]; k--; if(res<0) sg=-1; .原创 2021-02-04 18:40:07 · 164 阅读 · 0 评论 -
Acwing 1235. 付账问题
思路这是贪心的题目,首先我们要知道标准差(方差的根)表示的是数据的波动程度,其值越大波动越大。要使得标准差小,我们就要尽可能使得数据都比较接近平均值。那么这题贪心策略应该是这样的:首先算出平均值s/n,把数据从小到大排序,如果某个人的钱低于该值,那么他一定是将钱全部支付,然后其余不够的其他人平摊。但是,由于之前那个人钱不够,那么就会导致剩下人支付的平均值会增大,所以在这个平摊过程中很有可能存在某个人钱又低于这个平均值,又需要剩下的人平摊。如此反复,直到支付完成。代码如下#include&.原创 2021-02-04 16:55:29 · 137 阅读 · 1 评论 -
AcWing 112. 雷达设备
输入样例:3 21 2-3 12 1输出样例:2本题的思路实现求雷达能放的范围,然后对这一区间进行一个排序,然后呢,取最后一个点作为雷达的坐标,因为这样可以覆盖更多的点,如果该点不在下一区间中,这取下一区间的右端点为雷达的坐标。老师的题解https://www.acwing.com/solution/content/1061/图片均转载自yxc老师,yxc老师yyds。讲的很好,建议去学学他的课。#include<iostream>#include<a.原创 2021-02-04 15:27:43 · 136 阅读 · 2 评论