贪心
guoshiyuan484
这个作者很懒,什么都没留下…
展开
-
leetcode 好题分析
常用分析方法:1.调整法:首先是分析要求的结果是和什么量有关的,然后从每个变量的最值进行调整。2.简化条件看看规律3.考虑最后的状态并思考充分条件。(反证法)常用技巧:反悔操作此题我先开始用调整法,发现最后结果和字母的类型以及所处位置相关所以我们考虑先统计每个字母的位置然后从小到大,从右到左放字母。最后发现做法很复杂且不一定做出来。不过发现最后的状态是如果s[i+1]<s[i]那么应该考虑把s[i]放后面除非后面没有和s[i]一样的字母了,所以考虑用栈。...原创 2022-03-13 10:46:23 · 164 阅读 · 0 评论 -
bzoj 1110
这道题我开始的思路是先将容器重小到大排列再将木头重大到小排列然后重大到小的选如6 221 3 3 3 6 12开始选 1 3再选 3 3 6我的算法是这样但明显是错的因为更优解是1 3 3 3 126即全都阔以选;为什么我的是错的而网上的是对的呢?因为我没用完。。如对于6 我只用了4个空间但是网上的做法是能用全部空间的 22 也是一样 所以我们要采用进制的做原创 2017-05-14 10:54:43 · 256 阅读 · 0 评论 -
bzoj1345(区间合并式的贪心)
此题倒着想就好了,从最大那个数开始,这个数对答案的贡献一定最多是2*这个数,因为他还有阔能是边界,然后让这个数做一棵树的根,然后再按照同样的方法处理他两边的哪些数,最后形成一颗树,数列中如果某个数的两边都是比他大的数那么他一定是叶子,叶子对答案的贡献是0,其他情况都不是,对于不是叶子的数,有几个儿子那他对答案的贡献就是儿子数乘以他本身,他最多2个儿子注意。因为一个数是不阔能参与三次合并的(在所有数原创 2017-10-03 10:56:22 · 305 阅读 · 0 评论 -
bzoj1034
//总体思路就是1.最小的一定是要比赛的所以我们从最小的考虑气走2.考虑田忌赛马的策略是本题关键#include#include#includeusing namespace std;int n;int a[100001], b[100001];int getmax(int *a, int *b){ int l = 1; int r = n; int ll = 1; int原创 2017-11-01 20:39:59 · 302 阅读 · 0 评论 -
bzoj1577
先开始在贪心,网络流,dp 方面思考,然后最后确定了是贪心,然后就排了个顺序,由于受dp思想的严重侵害,导致没能想到只要把能上的都上了这种解法而没有解出#include<iostream>#include<cstdio>#include<algorithm>using namespace std;typedef long long ll;int k, ...原创 2018-03-06 21:36:18 · 151 阅读 · 0 评论 -
poj1328
转化成线段后,从左到右贪心即可。这题最坑的是我输入的时候如果发现d#include#include#include#include#includeusing namespace std;const double eps = 1e-8;struct nodee{ int num; double v; int kind;};bool comm(nodee a, nod原创 2018-04-20 19:56:10 · 173 阅读 · 0 评论 -
bzoj1150
这是一道经典题目,不过易错点就是最后注意如果要选最后一个点的话,那么他前一个点就一定不会选了。#include<iostream>#include<cstdio>#include<algorithm>#include<queue>using namespace std;typedef long long ll;struct node{...原创 2018-06-05 16:12:42 · 291 阅读 · 0 评论 -
bzoj4198
一道简单的k叉霍夫曼树,注意要用无符号长整形啊啊!!64位整数!!!不然会re的!!#include<iostream>#include<cstdio>#include<algorithm>#include<queue>using namespace std;typedef unsigned long long ll;struct nod...原创 2018-06-05 16:48:33 · 195 阅读 · 0 评论