
贪心算法
wly_sh
这个作者很懒,什么都没留下…
展开
-
[贪心算法]「一本通 1.1 练习 5」钓鱼
[一本通 1.1 练习 5」钓鱼P1717 钓鱼简洁题意:有 nnn(<=100) 个湖,走到下一个湖要 5×ti5\times ti5×ti分钟 时间,钓鱼一次用 5 分钟时间,每个湖第一次钓 FiFiFi ,每钓一次鱼,下次钓的鱼数减少 DiDiDi,给定时间 HHH小时(<=20),求可钓最大鱼数.题解:这个太暴力了吧f [ i ] [ j ]f \ [\ i \ ] \ [ \ j \ ]f [&nb原创 2020-06-12 20:32:26 · 377 阅读 · 0 评论 -
[贪心算法]「一本通 1.1 练习 4」家庭作业
「一本通 1.1 练习 4」家庭作业简洁题意:nnn 个作业有时限 tititi 与奖励 wiwiwi,若在限时内完成获得奖励。请求出 能获得的最大奖励。题解:这道题就是【一本通 1.1 例 5」智力大冲浪 的并查集优化连续的 一段被用过的时间归入一个并查集,一次跳一个集,直到找到空位csp-s2019 day1T2括号树 用上了这个优化我好想是自己想出来的?让 l[i]l[i]l[i] 记录这个点所属并查集最左边的点的左边。l[i]l[i]l[i] 一定是空白的 ,不然已被加入同一个并原创 2020-06-11 22:12:33 · 551 阅读 · 0 评论 -
[贪心算法]「一本通 1.1 练习 2」数列分段 / [二分与三分]「一本通 1.2 练习 1」数列分段 II
P1181 数列分段Section I luogu[一本通 1.1 练习 2」数列分段简洁题意:给n个数分组,每组和不超过m,求最小组数题解:从头开始枚,能塞进一组就塞#include<cstdio>/*从前开始尽可能让每组分满 假设第1组有a,a+b<=m则化为一组,a+b>m则不化 .若a+b<=m , b+c<=m 但是 a+b+c>m , 那当然选a,b一组,因为c+d<b+c+d */int main(){ int n,m原创 2020-06-11 21:46:16 · 299 阅读 · 0 评论 -
[贪心算法]「一本通 1.1 练习 1」数列极差
「一本通 1.1 练习 1」数列极差简洁题意:n个数,每次把两个数a,b换成 a×b+1a\times b+1a×b+1。最后求出的值中,最大值与最小值的差题解:最小值:sort一遍,每次找最大的两个数乘(最大的两个数乘还是最大)最大值:每次找最小的两个数乘(用堆维护)乘的次数越多,总和越大,所以最大的数要留到后面#include<queue>#include<cstdio>#include<algorithm>using namespace std;原创 2020-06-11 21:33:30 · 236 阅读 · 0 评论 -
[贪心算法]「一本通 1.1 例 5」智力大冲浪
[一本通 1.1 例 5」智力大冲浪P1230 智力大冲浪luogu简洁题意:nnn(<=500)个任务有时限 tititi 与罚款 wiwiwi,初始奖励为mmm,任务若没在限时内完成要从奖励扣下罚款。请安排任务顺序 求出 能获得最大奖励的顺序 与 最大奖励。题解:由于每项任务的范围是 [1,ti][1,t_i][1,ti]使罚款降序,把任务在范围内从后往前按排,尽量减少冲突,留下更多空间。暴力O(n2)O(n^2)O(n2)安排不下直接扔到最后面//完成一个的时间相等,从最大罚原创 2020-06-11 21:27:22 · 726 阅读 · 0 评论 -
[贪心算法]「一本通 1.1 例 3」喷水装置
「一本通 1.1 例 3」喷水装置简洁题意:给一个矩阵,有n个圆心在宽垂直平分线上的圆,问覆盖矩阵的最少圆数题解:圆显然能转化成线段l=c−sqrt(r2−(k/2)2),r=c+sqrt(r2−(k/2)2)l=c-sqrt(r^2-(k/2)^2),r=c+sqrt(r^2-(k/2)^2)l=c−sqrt(r2−(k/2)2),r=c+sqrt(r2−(k/2)2)然后就是这道题啦#include<cstdio>#include<cmath>#include原创 2020-06-11 20:32:21 · 173 阅读 · 0 评论 -
[贪心算法]「一本通 1.1 例 2」种树
P1250 种树luogu「一本通 1.1 例 2」种树简洁题意:给定h(<=5000)个可覆盖区间 (区间范围3×1043 \times10^43×104) ,每个单位可种一树,每个区间需种够 aia_iai 棵树,求最少树数题解 :贪心,按右端点升序排序,尽量把树在范围内从后往前种,这样就更可能被包含在后面的区间里。#include<cstdio>#include<cstring>#include<algorithm>using namespa原创 2020-06-11 20:20:17 · 423 阅读 · 0 评论 -
[贪心算法]「一本通 1.1 例 1」活动安排 「一本通 1.1 练习 3」线段
#10000. 「一本通 1.1 例 1」活动安排简洁题意:给定n个区间,求最多互不覆盖区间数题解:贪心,使结束时间(右端点)升序,能加就加,尽可能在ans相同情况下剩下更大空间。#include<cstdio>#include<algorithm>using namespace std;struct node{int s,e;}a[1010];bool cmp(node x,node y){ return x.e<y.e; }int main(){ int原创 2020-06-11 20:03:34 · 203 阅读 · 0 评论