随笔分类 - 贪心
摘要:开头死磕磕不出贪心策略,然后晚上回去后,突然想到如果我用一个vis数组要标识当天有没有用过,然后对于每个作业,我都选用它的deadline作为做作业的时间,那不就过了么。额,然后我早上就过来试试,然后发现第一组数据都过不了,突然觉得自己脑子进水,无奈我已经对师弟开下海口,说想出了贪心策略。我顿时觉得丢不起这个脸,><我一定要死磕出来!然后硬着头皮做,左想想右想想,连树状数组都打上去了,还是没有想出来。然后一怒,哪有老师那么变态把做作业的deadline设置在若干年以后的,这deadline的值绝对不会超过1000,然后暴力,把每个作业都尽可能在离deadline最近的、没有用过的一
阅读全文
摘要:区间选点中的区间完全覆盖问题;求解思路如下。1:先根据给出的点的坐标和半径取出其能覆盖的线段范围;假如区间长度8,可选的覆盖线段[2,6],[1,4],[3,6],[3,7],[6,8],[2,4],[3,5]2将每一个区间按照左端点递增顺序排列,拍完序后为[1,4],[2,4],[2,6],[3,5],[3,6],[3,7],[6,8]3设置一个变量表示已经覆盖到的区域。再剩下的线段中找出所有左端点小于等于当前已经覆盖到的区域的右端点的线段中,右端点最大的线段在加入,直到已经覆盖全部的区域4过程:假设第一步加入[1,4],那么下一步能够选择的有[2,6],[3,5],[3,6],[3,7],
阅读全文
摘要:此题意思给定点集S={(xi,yi)i=1.2.3...n},求用圆心在x轴上,半径为d的圆覆盖S所需的圆的最少个数。1.先把给出的岛的坐标(xi.yi)和半径r转化为在x轴上的区间,即当d-yi>=0时,圆心位于x轴上的区间为Ii=[ xi-sqrt(d^2-yi^2) , xi + sqrt( d^2 - yi^2 )],则转化为区间选点问题。2.S中点(xi,yi),对应一个在x轴上的区间Ii=(li,ri),按照区间右端点ri从小到大排序,在区间集合中选择一个索引最小的区间,把选择的区间和与其相交的所有区间作为一组从T中删除,直到T为空集,此时搜到的组数最大#include<
阅读全文
摘要:最后是用了最大覆盖方法做的,不会超时,前面注释部分贪心策略估计也许应该错了,求大神帮忙指出 #include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<cstring>#include<string>using namespace std;/*struct point{ int x,y;}p[220];bool cmp(point a,point b){ if(a.y==b.y) return a.x>b.x; return
阅读全文
摘要:很裸的贪心:按价值从大到小sort一下,然后枚举当前最大价值最多往包里放多少(更新m),累加起来就是结果#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<cstring>#include<string>using namespace std;struct point{ int v,w;}p[15];bool cmp(point a,point b){ return a.v>b.v;}int main(){ int
阅读全文
摘要:我表示没看懂题目,最后是让队友去看才知道讲的是啥,这英语。。。~ ~题目意思:田忌要和大王赛马,规定赢一场得200钱,输一场输200钱,题目给出n组数据(马的速度),求田忌最多得多少钱贪心的思想(sort一下,把田忌的马和大王的马从小到大排列):1、田慢>王慢,赢王慢一场2、田慢<王慢,输王快一场3、田慢=王慢 :1、田快>王快,赢王快一场 2、田快<王快,田慢输王快一场 3、田快=王快:1、田慢<王快,输王快一场 2、田慢=王快,跳出循环#include<iostream>#include<cstdio>#inc...
阅读全文
摘要:http://acm.nyist.net/JudgeOnline/problem.php?pid=91阶乘的分布:i的阶乘>sum{j的阶乘 | j=1,2,...,i-1}#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<cstring>#include<string>using namespace std;int main(){ int t,n,i,j; int re[10]={1,1,2,6,24,120,7
阅读全文
浙公网安备 33010602011771号