贪心
一只谜谜怪
怀着永远进步的心,追逐希望与梦想
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
pat甲级 1070 Mooncake (25 分) (贪心)
题目链接:传送门思路:物品是可分割的,于是每次加上单价最高的物品即可。代码:#include <bits/stdc++.h>using namespace std;const int maxn = 1005;struct node { double d; double p; bool operator < (const node b)const { ...原创 2019-11-15 13:37:25 · 192 阅读 · 0 评论 -
pat甲级 1067 Sort with Swap(0, i) (25 分) (思维)
题目链接:传送门思路:自己的瞎搞的假算法得了8分。。(这里就不贴了),然后看了题解,对于序列中的数字a[i],必定有数占用了他原来的位置,存在一条占用链:如:i 占用 j的位置,j占用k的位置,k占用i的位置。(占用链一定是一个环,应该可以证明)具体思路就是:因为只能用0交换,如果0不在自己的位置(则0占据了别的数的位置),先通过交换使它在0位置(与它交换的全部的数字都会回到自己的位置),然后...原创 2019-11-14 13:52:33 · 178 阅读 · 0 评论 -
pat甲级 1037 Magic Coupon (25 分) (贪心)
题目链接:传送门思路:把两个给出的组存入数组,从小到大排序,然后先从0下标开始计算负数,两两配对,然后算正数,同理。 有一个需要注意的点我本来是只是从0-n-1扫描一遍,把正数加入答案的,扣了几分,因为配对顺序可能会错,本来应该最大的正数相乘,而这样做结果可能会变小。代码:#include <bits/stdc++.h>using namespace std;typede...原创 2019-11-12 17:11:19 · 215 阅读 · 0 评论 -
pat甲级 1033 To Fill or Not to Fill (25 分) (思维 贪心)
题目链接:传送门思路:本来想dp,然后得了11分,因为没有考虑在前一个加油站可以加满油的情况。 首先每个位置取最小的油价保存,然后在计算时分两种情况,设当前位置为t。(1)前方有价格更低的加油站p,直接选取这个加油站p,然后记录走到这个加油站要花费的钱.(2)前方没有价格更低的加油站,为了到达需要选取一个价格相对最小的站p1,这里可以先在当前加油站t加满油,再去目标加油站p1,所以算的时候...原创 2019-11-12 17:00:49 · 257 阅读 · 0 评论 -
pat甲级 1038 Recover the Smallest Number (30 分)
题目链接:传送门思路:让任意两个子串所构成的串字典序最小即可,比价条件是a + b < b + a,测试数据可能水了,用错误的排序方法也能满分,两种代码都贴在下面。代码:(正解)#include <bits/stdc++.h>using namespace std;const int maxn = 1e4 + 5;string s[maxn];bool c...原创 2019-11-12 16:45:34 · 237 阅读 · 0 评论 -
Codeforces Round #591 (Div. 2, based on Technocup 2020 Elimination Round 1) C. Save the Nature(二分)
题目链接:https://codeforces.com/contest/1241/problem/C思路:题目的答案具有单调性,(如果3是答案的话,小于3的数都不是答案),所以可以二分,直接二分位置即可,因为要满足res >= k 的最小答案,所以位置一定是%a,或者%b ,或者%(a + b)为 0的位置,然后对每个位置采用贪心的思路,让最大的数字*最大的倍率。代码:#include...原创 2019-10-08 10:21:53 · 144 阅读 · 0 评论 -
Codeforces Round #579 (Div. 3) D2. Remove the Substring (hard version) (贪心)
题目链接:https://codeforces.com/contest/1203/problem/D2思路:先用一个子串t中的字符在主串s中的最靠右位置pos[i],根据这个最靠有位置,遍历一遍s字符串,每次最大删除长度就是当前位置到pos[i](因为尽可能靠右,所以是尽可能大的)的距离。代码:#include <bits/stdc++.h>using namespace s...原创 2019-08-18 02:02:39 · 215 阅读 · 0 评论 -
Codeforces Round #579 (Div. 3) E. Boxers (贪心)
题目链接:https://codeforces.com/contest/1203/problem/E思路:一开始想的是记录数字出现次数,看每个数字的三种变化能否产生新数,但是这样容易多算或者少算答案。 可以使用贪心的思想,将数组以非增排序,然后从最大的数开始取三种变化,设置一个数组当前最大值,如果最大值比新数大,就更新最大值,并让答案加1代码:#include <bits/stdc...原创 2019-08-17 07:11:01 · 258 阅读 · 0 评论 -
Codeforces Round #571 (Div. 2) D. Vus the Cossack and Numbers(贪心)
题目链接:https://codeforces.com/contest/1186/problem/D思路:正的全向下取整,负的全向上取整,然后如果值不相等在根据情况把负数变大或者吧正数变小即可。代码:#include <bits/stdc++.h>using namespace std;const int maxn = 1e5 + 5;int a[maxn];vec...原创 2019-08-21 17:58:41 · 143 阅读 · 0 评论 -
打codeforces时出现的沙雕错误
Codeforces Round #554 (Div. 2) B. Neko Performs Cat Furrier Transform思路:题中数据范围最大不超过1e6,化为二进制长度不超过20位,所以可以每次把最靠近最高位的0变成1,直接模拟即可错误点:我的代码中模拟过程使用for循环时,只有奇数操作需要i++,偶数不需要,直到最后都没发现,实现掉分更正后代码#include <...原创 2019-04-25 15:43:16 · 538 阅读 · 0 评论 -
Codeforces Round #515 (Div. 3) B. Heaters
题目链接:http://codeforces.com/contest/1066/problem/B思路:先把题目给出的数据转化为区间,是一个区间长度不变的最少区间覆盖问题c++代码:使用队列:#include &lt;iostream&gt;#include &lt;vector&gt;#include &lt;algorithm&gt;#include &lt;c原创 2018-10-16 13:10:29 · 212 阅读 · 0 评论 -
Educational Codeforces Round 43 (Rated for Div. 2) C. Nested Segments
题目大意:给出n个区间段[l,r],区间a[i]包含于a[j]当且仅当li>=lj&&ri<=rj,任意输出一对区间ai和aj,使ai包含于aj。题目链接:http://codeforces.com/contest/976/problem/C思路:先排序,先选最早开始的前提下最早结束的区间,然后顺序搜索c++代码: #include <iostream&...原创 2018-10-12 13:26:00 · 168 阅读 · 0 评论 -
Educational Codeforces Round 51 (Rated for Div. 2) C. Vasya and Multisets
题目大意:给出一个多重集(集合里可以包含多个相同的数),并定义在集合中只出现一次的数为nice number,要求把这个多重集分成两个多重集A,B,并且这两个集合中的nice number要相同,题目链接:http://codeforces.com/contest/1051/problem/C思路:分三种情况:情况一:如果多重集中的nice number(只出现一次的数)为偶数,则对半分给两个...原创 2018-10-04 23:48:49 · 258 阅读 · 0 评论 -
codeforces 1023 C - Bracket Subsequence
题目描述:http://codeforces.com/contest/1023/problem/Cc++代码:#include <iostream>#include <stack>using namespace std;stack <int> sr;int main() { int n,k; cin >> n >...原创 2018-08-23 14:39:42 · 221 阅读 · 0 评论
分享