![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
贪心
Lupin123123
这个作者很懒,什么都没留下…
展开
-
Binary String
题目链接 题意:从一个二进制串中删除若干的字符,问最少删除几次才能使这个二进制小于所给的k。 思路:贪心。优先删除1,不够再删0。注意删1要从次高位开始。 cut and paste法证明: 完整代码: #include<bits/stdc++.h> #define FAST ios::sync_with_stdio(false),cin.tie(0),cout.tie(0) #define INF 0x3f3f3f3f typedef long long ll; const int maxn原创 2021-08-26 16:29:50 · 631 阅读 · 0 评论 -
Lexical Sign Sequence
题目链接 贪心+树状数组 题目大意:构造出一个字典序最小的信号序列(只含1,-1)使得k个指定的区间的和大于等于给定值。 思路:可以一开始先让所有empty的部分都成为-1,然后将k个区间按右端点从小到大的顺序排序,去满足每一个区间的时候从后向前把-1改成1。 然后说一下为什么要把区间按右端点从小到大排序,一开始我贪心的想法是优先满足右端点大的区间,当时觉得把1尽量往后填字典序就会小。然而这个贪心是不对的。 完整代码: #include<bits/stdc++.h> #define FAST原创 2021-08-26 12:08:38 · 79 阅读 · 0 评论 -
[Luogu] P2887 Sunscreen G
题目链接 区间与点的匹配问题 题目大意:有n个区间,m个点,一个点只能匹配一个区间,求最大匹配数。 思路:贪心+优先队列。 将点按从小到大排序,区间按左端点从小到大排序,定义一个小根堆。对于每一个点,在所有有可能与其匹配的区间中优先匹配右端点小的,因为右端点大的更可能与更大的点成功匹配。 完整代码: #include<bits/stdc++.h> #define FAST ios::sync_with_stdio(false),cin.tie(0),cout.tie(0) #define INF原创 2021-08-24 21:19:29 · 90 阅读 · 0 评论