贪心
吹梦到西周啊啊啊
纵有千古,横有八荒;前途似海,来日方长。
展开
-
“菜鸟杯”华中师范大学程序设计新生赛 F-你猜我是签到吗?(贪心+模拟)
你猜我是签到吗题解:很显然,一个形如010的串可以对结果产生2的贡献,10或01对结果产生1的贡献0110,与010产生的贡献是一样的,题意要求二进制数最小,所以应该避免这样的形式从后向前模拟就好了,如果m为奇数,就在1或n的位置的放一个1。为偶数时,如果前一个位置为0且该位置可以放1,就在该位置放1这样会有一个特殊情况,比如3 2 1 2这组样例,输出"QAQ!",但实际上是有解的:101。在赛场上没有想到怎么简便的处理这种情况,赛后一想,好像加个特判就行了:1和n都可填且2和n-1的位置都为0原创 2020-12-20 14:47:29 · 196 阅读 · 1 评论 -
CF1223C. Save the Nature(二分+贪心)
Save the Nature二分票数,用大顶堆来存储票的价格,显然a和b的公倍数位置上应该放最大的价格,其次比较x和y,较大的那个对应的位置上放较大价格,最后把剩余的没放的位置再放剩下的价格,每次从堆中取价格,判断当前票数是否满足价格至少为kCode:#include <bits/stdc++.h>using namespace std;#define ll long long#define pii pair<int, int>#define mem(a, b) me原创 2020-06-05 17:20:48 · 240 阅读 · 0 评论 -
CF486C. Palindrome Transformation(贪心)
Palindrome Transformation题意:给定一个字符串和光标的初始位置,每一步可以左右移动一位或将字符上下加1,求最小步数使之成为回文串分析:1.要使成为回文串,即对应字符相等,无论变左边的 还是变右边的 亦或是左边变一点右边变一点,总步数都是一样的,所以差别就在于移动上2.显然,全部动左边的或者全部动右边的,可以最优3.为方便,统一动左边的,如果初始位置在右边,我们可以将它移到左边的对应位置(不计步数)4.接下来算每一个对应的位置的最小步数5.加上移动的最小步数就是最后的结果原创 2020-05-23 23:58:11 · 243 阅读 · 0 评论 -
牛客小白月赛23 A-膜法记录(贪心+枚举)
题目传送用贪心的思想,先将行全部消灭,在判断列有多少,和b比较一下。每一行可以消或不消,枚举2^n。#include <iostream>#include <cstring>#include <set>using namespace std;const int maxm = 1e5 + 5;int n, m, a, b, flag;char ...原创 2020-03-22 14:47:18 · 244 阅读 · 0 评论 -
POJ-1328 Radar Installation(贪心)
题目传送计算出可以包括该点的左右区间,然后按右区间增序排列,右区间相同按左区间降序排列。以第一个点的右区间为始,依次判断是否包括左区间,若不包括,答案加一,定点更新为当前点的右区间。now的double写成int ,wa了一下午。。。。#include <iostream>#include <algorithm>#include <cmath>us...原创 2020-03-08 18:35:39 · 89 阅读 · 0 评论 -
洛谷 P1338 末日的传说 (数论 贪心)
题目传送当序列长度为n时,产生最多的逆序数为n*(n-1)/2。要将1-n排序,可以按1-n的顺序来一个个的考虑,当i为1时,剩下的n-1个位置可以产生(n-1) * (n-2)/2个逆序数,如果m<=(n-1) * (n-2)/2,就将1放在最前面,如果大于,就将1放在最后面,因为这样可以产生(n-1)个逆序,对结果贡献最大。按照这个思路,逐一考虑即可。#include <i...原创 2020-02-29 14:31:08 · 113 阅读 · 0 评论 -
2020牛客寒假算法基础集训营6 A-配对(贪心)
题目传送现在有正整数集合 A 和 B,每个集合里有 N 个数,你要建立他们间的一一映射将每对配对的数字相加可以得到 N 个和,你要做的就是最大化第 K 大的和1≤K≤N≤100,000 输入的所有数字不超过 10^8分析:当A1<A2,B1<B2时,要使最小的和尽可能大,无疑要A1+B2,A2+B1,所以这题可以将两个序列降序排列,各取前k个数,逆序相加,找最小值。#inc...原创 2020-02-15 23:27:22 · 441 阅读 · 0 评论 -
Codeforces Round #618 (Div. 2) C. Anu Has a Function(进制,位运算,贪心)
题目传送题目大意:定义一个函数:f(x,y) = (x|y)-y 将数组排序,使得最后结果最大。分析:手写几组数据后发现,最后的结果只和第一个数字有关,也就是只需要确定第一个数字就可以了。将所有数字看成2进制,从最高位看起,如果第i位上为1的数只有一个的话,那么这个数必然对答案有贡献,就把它排在第一个,后面任意排。例:11,6,4,0二进制表示为:1011,110,100,...原创 2020-02-10 13:32:08 · 207 阅读 · 0 评论 -
2020牛客寒假算法基础集训营2 F-拿物品 (贪心)
题目传送题目大意:有n个物品,但对A和B来说意义不一样,问:两人都想最大化与对方的分差,都按最优策略怎么取。分析:可以认为两人刚开始都拥有全部,取一个后,使A的a分受到保护,并使B减少b分,所以尽可能拿a+b大的,排序后轮流取就行了。#include <iostream>#include <vector>#include <algorithm>u...原创 2020-02-06 21:17:05 · 189 阅读 · 0 评论 -
Codeforces Round #617 (Div. 3) D Fight with Monsters(贪心)
题目传送题目大意及分析:你和基友一起打野,野怪有点呆不会还手,当你补刀成功时加1分,基友补刀不计分,你还可以发动技能k次,将基友眩晕一回合,自己完成连击,抢buff。你A一下一定造成a点伤害,基友A一下一定造成b点伤害。一定是你打第一下,然后轮流打,野怪的血就是hp=mod(a+b),如果hp=0,则基友拿到了buff,所以要加回去a+b。然后计算需要连击的次数,贪心就行了。#include...原创 2020-02-05 20:46:44 · 171 阅读 · 0 评论