![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
贪心
AKone123456
这个作者很懒,什么都没留下…
展开
-
B. Johnny and Grandmaster----------------------思维(贪心)
题意:给定n个数和p,现在你需要将n个数分成两个集合A,B 使得两个集合差值绝对值最小解析:一贯的套路我们把pk[i] 当成p进制下,第k[i]位为1.那么就出现了一个性质 25 > 20 + 21 + 22 + 23 +24所以我们按照k[i] 从大到小排第一步找到最大的k[i] ,ans+=pk[i] 相当于把k[i] 放到A集合中第二步 ans-=pk[i] 相当于把k[i]放到B集合中, 直到ans=0 再回到第一步去即可最后还有一个问题,就是an..原创 2020-11-17 16:49:04 · 282 阅读 · 1 评论 -
D. Johnny and Contribution---------------------------思维(贪心)
题意:给定n个点,m条边。每个点都有一个权值ai。问你如何遍历图,使得当前节点为u,与u相连的节点集合{v1,v2,v3,v4,v5…}求出mex{v1,v2,v3,v4…v5} 为 x 判断 a[u]是否等于x 。如果存在序列输出,如果不存在输出-1解析:肯定是贪心的从小到大遍历。所以我们只要把ai排好序。当轮到i节点时,判断与i节点相邻的数的mex是否等于a[i] 如果不等于直接输出-1 即可 。剩下的模拟即可#include<bits/stdc++.h>us..原创 2020-11-17 15:36:39 · 251 阅读 · 0 评论 -
A. Knapsack------------------------------------思维(贪心)
题意:给定n个数和w,每个数都有一个权值ai. 问你如何选择使得权值之和在[(w+1)/2,w] 之间。如果满足输出选择数的下标。如果不行输出-1解析:贪心,从大到小贪。例:n=6 w=121 1 1 1 1 11如果从小到大贪,这个样例会输出-1.必须从大到小贪#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e6+1000;ll w;struct node..原创 2020-11-16 19:44:17 · 430 阅读 · 2 评论 -
Greedy Sequence---------------------------------思维(主席树+贪心)
解析:假设当前位置为x 距离不超过k那么我们可以在[x-k,x] 和 [x,x+k] 去找小于a[x]且最大的数那么可以利用主席树去解决因为要找最大的,所以我们贪心地先遍历到右子树,否则再去左子树#pragma GCC optimize(3 , "Ofast" , "inline")#pragma GCC optimize("Ofast")#pragma GCC target("avx,avx2,fma")#pragma GCC optimization("unroll-loops"...原创 2020-10-26 15:45:47 · 215 阅读 · 0 评论 -
Training Plan-------------------------思维(区间dp)
解析:f[i][j]:表示第i天,选j道题怎么才能使得最小呢,我们一定要先排个序对于第一天来说,我可以选择的题数1~n,所以先预处理第一天选j题的情况。到这里已经两重循环了,但是状态转移方程还没出来,我们要寻找分界点。分界点假设f[2][j]:表示第2天,选了j道题。那么第一天选的题数可以表示f[1][1~j-1]所以再写一个循环,枚举前一天选的题数状态方程:f[i][j]=...原创 2020-03-10 21:58:15 · 148 阅读 · 0 评论 -
问题 B: 奎奎发红包------------------------------思维(贪心)
题目描述情人节又到了,又到了一年一度发红包的时间。经大家研究决定,今年让奎奎自愿发红包。俱乐部有n个人(0<n<100000),每个人都有一个单身值v[i]与亲密度ti,单身值越大的人,在情人节的时候就越羡慕奎奎,奎奎就需要给他更大的红包来安慰他。 由于一个寒假没有见到奎奎,领红包的时候大家都想跟奎奎py,花费时间t[i],先py后给红包噢。大家都厌倦了等待,如果一个人等了时间t...原创 2020-03-09 21:44:03 · 117 阅读 · 0 评论 -
耍杂技的牛-------------------------贪心
农民约翰的N头奶牛(编号为1…N)计划逃跑并加入马戏团,为此它们决定练习表演杂技。奶牛们不是非常有创意,只提出了一个杂技表演:叠罗汉,表演时,奶牛们站在彼此的身上,形成一个高高的垂直堆叠。奶牛们正在试图找到自己在这个堆叠中应该所处的位置顺序。这N头奶牛中的每一头都有着自己的重量Wi以及自己的强壮程度Si。一头牛支撑不住的可能性取决于它头上所有牛的总重量(不包括它自己)减去它的身体强壮程度...原创 2020-02-23 18:07:39 · 274 阅读 · 0 评论 -
问题 J: Ski Course Design----------------------------------思维
题目描述Farmer John has N hills on his farm (1 <= N <= 1,000), each with an integer elevation in the range 0 … 100. In the winter, since there is abundant snow on these hills, FJ routinely operates...原创 2020-02-22 23:06:32 · 346 阅读 · 2 评论 -
CTU Open Contest 2019 Beer Marathon-----------------思维(贪心)
题意:在一条直线上有一堆烧烤摊,烧烤堆得位置随机拜访。题目要求任何相邻烧烤摊得距离必须为k。问烧烤摊最小移动多少,使得任何相邻烧烤摊得距离为k解析:首先对n堆烧烤摊位置排序。理想的位置: a ,a+k,a+2k,a+3k,a+4k…a+(n-1)k那么移动的距离就是 |x[i]-a| ,|x[i+1]-k+a|, |x[i+2]-2k+a|,…|x[i+n-1|-(n-1)k+a|发...原创 2020-02-22 22:53:31 · 391 阅读 · 0 评论 -
区间覆盖---------------------贪心区间问题
给定N个闭区间[ai,bi]以及一个线段区间[s,t],请你选择尽量少的区间,将指定线段区间完全覆盖。输出最少区间数,如果无法完全覆盖则输出-1。输入格式第一行包含两个整数s和t,表示给定线段区间的两个端点。第二行包含整数N,表示给定区间数。接下来N行,每行包含两个整数ai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示所需最少区间数。如果无解,则输出-1。数据范围1...原创 2020-02-23 17:27:49 · 248 阅读 · 0 评论 -
区间分组--------------------------------区间贪心问题
给定N个闭区间[ai,bi],请你将这些区间分成若干组,使得每组内部的区间两两之间(包括端点)没有交集,并使得组数尽可能小。输出最小组数。输入格式第一行包含整数N,表示区间数。接下来N行,每行包含两个整数ai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示最小组数。数据范围1≤N≤105,−109≤ai≤bi≤109输入样例:3-1 12 43 5输出样例:...原创 2020-02-23 16:55:18 · 241 阅读 · 0 评论 -
最大不相交区间数量--------------------区间贪心问题
给定N个闭区间[ai,bi],请你在数轴上选择若干区间,使得选中的区间之间互不相交(包括端点)。输出可选取区间的最大数量。输入格式第一行包含整数N,表示区间数。接下来N行,每行包含两个整数ai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示可选取区间的最大数量。数据范围1≤N≤105,−109≤ai≤bi≤109输入样例:3-1 12 43 5输出样例:2...原创 2020-02-23 16:09:33 · 527 阅读 · 0 评论 -
区间选点-----------------------------区间贪心问题
给定N个闭区间[ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。输出选择的点的最小数量。位于区间端点上的点也算作区间内。输入格式第一行包含整数N,表示区间数。接下来N行,每行包含两个整数ai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示所需的点的最小数量。数据范围1≤N≤105,−109≤ai≤bi≤109输入样例:3-1 12...原创 2020-02-23 15:54:59 · 226 阅读 · 0 评论