![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
贪心
Cichard
这个作者很懒,什么都没留下…
展开
-
codeforces1405C. Balanced Bitstring 贪心
1405C 1500 贪心水题,没想到原创 2020-09-19 12:34:08 · 119 阅读 · 0 评论 -
codeforces1175C 贪心+思维
1175C 1600 题意:给定一个序列a,找出一个x使得di=|ai-x|,然后对数组d进行排序,将d(k+1),作为结果,求x的位置使得d(k+1) 思路:有点考思维,看了代码之后都还是有点蒙,首先是我们能想到的是对与x取值的讨论,如果x在[a[i], a[i+k]]区间内,不考虑这个区间之外的数,(为什么这么说呢,因为如果考虑了,那么第k+1大的数就可能不再这个区间内了,那么问题就来了,那结论不就是错误的了吗,但是我是对i进行了一个遍历,之后如果有更小的,会进行更新,也就不存在这样的的问题了)可以得到原创 2020-09-17 19:58:53 · 146 阅读 · 0 评论 -
codeforces1303D 贪心+位运算
1303D 1900 题意:给你一个数n和长度为m的数组,同时这m个数保证都是2的幂次方,问你是否可以通过对m中的数除2的操作,然后相加得到m,如果能打印最小的操作数,如果不能打印-1 思路:从题目中2的幂次方可以联想到这是一个和位运算有关的题目,如果分别把n和m中的数变成二进制来计算,从低位到高位,如果m中的数在二进制,该位为0,而n为1,那么就意味着,m中这个位要向前面的取一,即a[pos]–,而为什么是从低位到高位,而不是高位到低位,因为我们的低位是首先要满足的,而你要最优的操作数,如果从最高位开始,原创 2020-09-16 09:21:59 · 119 阅读 · 0 评论 -
codeforces1395D 贪心
思路清晰很重要,不然写出来的代码一堆的bug 题意:给你n个数,其中如果x>m,那么之后的d个数就没有作用,问你得到的和最多是多少 思路:一开始以为是dp,然而并不是,直接贪心就可以过了,对于a[i]>m的数放在一个数组里,其他数放在另一个数组里,从大到小排序,求前缀和,分别为a[i]和b[i],之后就是贪心的过程了,假设你可以用i个大于m的数,那么就意味着,你用去了day=(i-1)*(d+1)+1天,为什么这样写,因为首先可以想到把一个数放到最后,那么就是说你有一天用的单独的一天,但其他i-原创 2020-08-25 17:07:15 · 146 阅读 · 0 评论