![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
贪心
AC_Arthur
Die luft der Freiheit weht
展开
-
Best Cow Line(POJ-3617)
经典的贪心算法。 贪心算法的特点是总是取最优解,最后得到的也是最优,这一点上与动归不同。动归和搜索都是多策略的,所以贪心的理解难度还是很小的。 #include #include #include #include #include #include #include using namespace std; int n,a; vector ans; int main() { sca原创 2015-04-11 16:43:24 · 796 阅读 · 0 评论 -
11729 - Commando War(贪心)
一道简单的贪心,很容易想到,为了使得所有人执行完任务的总时间最短,需要先安排执行任务时间长的,所以按照J从大大小排序即可。 细节参见代码: #include using namespace std; const int maxn = 1000 + 5; int n,m,kase=0; struct node{ int a,b; bool operator < (const no原创 2015-09-08 15:37:39 · 778 阅读 · 0 评论 -
11636 - Hello World!(水题)
用贪心的思想,每次都复制尽量多的语句,最后一次按需复制即可。 细节参见代码: #include using namespace std; typedef long long ll; const ll INF = 1000000000; const int maxn = 100000+5; int n,m,kase = 0; int main() { while(~scanf("%d",原创 2015-09-13 15:48:17 · 553 阅读 · 0 评论 -
11384 - Help is needed for Dexter
题目链接 经过手动模拟可以发现,由于每个数字都不一样,貌似第一次只能消减一个数字,但是我们可以使得一些数字相等,然后后面就可以减去更多的数字。 那么我们取一半的地方,保留1~n/2,后面的数减去n/2+1,恰好后面的数也变成了1~n/2,那么也就等价于一个1~n/2的序列, 操作次数为一次。所以就不难写出递归程序: f(n) = f(n/2) + 1; 边界是f(1) = 1。 细节参见代原创 2015-10-01 15:05:16 · 742 阅读 · 0 评论 -
10670 - Work Reduction(水题)
对于每一个代理。 我们直接模拟就行了,看看是A方案好还是B方案好。 细节参见代码: #include using namespace std; typedef long long ll; const int INF = 100000000; const int maxn = 100 + 5 ; int T,n,m,l,kase = 0; struct node{ char name[原创 2015-09-15 11:46:24 · 912 阅读 · 0 评论 -
NEERC 2014 Problem B. Burrito King
简单的贪心,很容易证明,先尽量多的买b/a小的比较划算。比赛时YY了一下就想出来了,可是WA到比赛结束,估计是精度导致的,换了int输入然后省略了一些浮点数相等的比较之后就AC了。 以后一定要注意。 细节参见代码: #include #include #include #include #include #include #include #include #include #include原创 2015-09-16 20:50:38 · 816 阅读 · 0 评论 -
FZU 2159 WuYou(贪心)
该题算是比较简单的贪心了, 只要理顺思路, 不是很复杂的。 我们可以按照这样的规则进行: 从前向后扫一遍, 将?和a[i] == b[i]的情况忽略, 当第一次出现a[i] != b[i]的时候, 分情况讨论如下: 1. 如果a[i] 2.如果a[i] > b[i] , 如果a[i]前面没有? 那么显然是输出-1, 如果a[i]前面有?, 那么从i向前扫, 将?变成b[i]-1,原创 2015-12-22 10:10:35 · 857 阅读 · 0 评论 -
UVA 1153 - Keep the Customer Satisfied(贪心)
题目链接:点击打开链接 思路: 我们按照时间从小到大排序, 因为时间最大2e6, 所以从小到大枚举时间, 当一个订单到了最后期限, 我们就看看它能否满足, 如果能就满足它, 如果不能, 我们看一下之前满足的订单中货物最多的一个是否比当前这个大, 如果大,就拿它换当前这个, 为后面节省空间。 用优先队列可以很方便的维护。 细节参见代码: #include #include #inclu原创 2016-09-04 18:16:16 · 551 阅读 · 0 评论