随笔分类 -  基础算法---贪心

1
摘要:1.钓鱼(简化移动时间) 算是经典的题目了 约翰 钓鱼h小时(1≤h≤16,h*12个单位时间,5分钟为一个单位时间), 有n个池塘(2≤n≤25),分布在一条直线上,依次为L1,L2,…,Ln,从池塘Li到池塘Li+1要花去约翰ti个单位时间。约翰出发点为L1。 约翰可以任选若干个池塘垂钓,并且在 阅读全文
posted @ 2017-10-27 17:11 keshuqi 阅读(506) 评论(0) 推荐(0)
摘要:题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所 阅读全文
posted @ 2017-10-06 15:37 keshuqi 阅读(359) 评论(0) 推荐(0)
摘要:Description 斜堆(skew heap)是一种常用的数据结构。它也是二叉树,且满足与二叉堆相同的堆性质:每个非根结点的值都比它父亲大。因此在整棵斜堆中,根的值最小。但斜堆不必是平衡的,每个结点的左右儿子的大小关系也没有任何规定。在本题中,斜堆中各个元素的值均不相同。 在斜堆H中插入新元素X 阅读全文
posted @ 2017-02-26 17:35 keshuqi 阅读(260) 评论(0) 推荐(0)
摘要:Description 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳。作为一名青春阳光好少年,atm 一直坚持与起床困难综合症作斗争。通过研究相关文献,他找到了该病的发病原因:在深邃的太平洋海底中,出现了一条名为 drd 的巨龙,它掌握着睡眠之精髓,能随意 阅读全文
posted @ 2017-02-23 09:05 keshuqi 阅读(301) 评论(0) 推荐(0)
摘要:Description 有n根木棍, 第i根木棍的长度为Li,n根木棍依次连结了一起, 总共有n-1个连接处. 现在允许你最多砍断m个连接处, 砍完后n根木棍被分成了很多段,要求满足总长度最大的一段长度最小, 并且输出有多少种砍的方法使得总长度最大的一段长度最小. 并将结果mod 10007。。。 阅读全文
posted @ 2017-01-29 00:47 keshuqi 阅读(517) 评论(0) 推荐(0)
摘要:Description Lweb 面对如山的英语单词,陷入了深深的沉思,“我怎么样才能快点学完,然后去玩三国杀呢?”。这时候睿智 的凤老师从远处飘来,他送给了 Lweb 一本计划册和一大缸泡椒,他的计划册是长这样的: ————— 序号 单词 ————— 1 2 …… n-2 n-1 n ————— 阅读全文
posted @ 2017-01-28 10:10 keshuqi 阅读(819) 评论(0) 推荐(0)
摘要:Description Input 第1行包含5个整数,依次为 x_0,a,b,c,d ,描述小H采用的随机数生成算法所需的随机种子。第2行包含三个整数 N,M,Q ,表示小H希望生成一个1到 N×M 的排列来填入她 N 行 M 列的棋盘,并且小H在初始的 N×M 次交换操作后,又进行了 Q 次额外 阅读全文
posted @ 2017-01-26 23:04 keshuqi 阅读(324) 评论(0) 推荐(0)
摘要:【题目描述】 给定二维平面上n个整点,求该图的一个直线斯坦纳树,使得树的边长度总和尽量小。 直线斯坦纳树:使所有给定的点连通的树,所有边必须平行于坐标轴,允许在给定点外增加额外的中间节点。 如下图所示为两种直线斯坦纳树的生成方案,蓝色点为给定的点,红色点为中间节点。 【输入格式】 第一行一个整数n, 阅读全文
posted @ 2017-01-20 22:54 keshuqi 阅读(652) 评论(0) 推荐(0)
摘要:Description 很久很久之前,森林里住着一群兔子。有一天,兔子们突然决定要去看樱花。兔子们所在森林里的樱花树很特殊。樱花树由n个树枝分叉点组成,编号从0到n-1,这n个分叉点由n-1个树枝连接,我们可以把它看成一个有根树结构,其中0号节点是根节点。这个树的每个节点上都会有一些樱花,其中第i个 阅读全文
posted @ 2017-01-10 17:53 keshuqi 阅读(228) 评论(0) 推荐(0)
摘要:Description 写电子邮件是有趣的,但不幸的是经常写不好看,主要是因为所有的行不一样长,你的上司想要发排版精美的电子邮件,你的任务是为他编写一个电子邮件排版程序。 完成这个任务最简单的办法是在太短的行中的单词之间插入空格,但这并不是最好的方法,考虑如下例子: **************** 阅读全文
posted @ 2016-11-17 10:05 keshuqi 阅读(288) 评论(0) 推荐(0)
摘要:问题描述: 隔壁学校地形图可以通过一个高度矩阵表示,矩阵中每一个位置都有一个数0<=hij<=10^5表示这个坐标的海拔,我们姑且将其称为海拔图,容易发现,我们可以通过这个矩阵轻松算出隔壁学校的主视图,左视图。 相反的,我们却不能通过主视图和左视图唯一确定海拔图,现在问题来了,已知主视图左视图,我们 阅读全文
posted @ 2016-11-15 20:26 keshuqi 阅读(223) 评论(0) 推荐(0)
摘要:Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000)。给你两个顶点S和T,求一条路径,使得路径上最大边和最小边的比值最小。如果S和T之间没有路径,输出”IMPOSSIBLE”,否则输出这个比值,如果需要,表示成一个既约 阅读全文
posted @ 2016-11-14 11:22 keshuqi 阅读(139) 评论(0) 推荐(0)
摘要:题目描述 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。给定两个城市之间的距离D1、汽车油箱的容量C(以升为单位)、每升汽油能行驶的距离D2、出发点每升汽油价格P和沿途油站数N(N可以为零),油站i离出发点的距离Di、每升汽油价格Pi(i=1,2,…,N)。计算结果 阅读全文
posted @ 2016-11-14 08:57 keshuqi 阅读(455) 评论(0) 推荐(0)
摘要:题目描述 花匠栋栋种了一排花,每株花都有自己的高度。花儿越长越大,也越来越挤。栋栋决定 把这排中的一部分花移走,将剩下的留在原地,使得剩下的花能有空间长大,同时,栋栋希 望剩下的花排列得比较别致。 具体而言,栋栋的花的高度可以看成一列整数h1,h2..hn。设当一部分花被移走后,剩下的花的高度依次为 阅读全文
posted @ 2016-11-08 17:05 keshuqi 阅读(183) 评论(0) 推荐(0)
摘要:【题目描述】 蛤布斯有n种商品,第i种物品的价格为ai,价值为bi。有m个人来向蛤布斯购买商品,每个人每种物品只能购买一个。第j个人有cj的钱,他会不停选择一个能买得起的价格最高的商品买走(如果有多个则选择价值最高的)。你需要求出每个人购买的物品的价值和。 【输入数据】 第一行两个正整数n,m。接下 阅读全文
posted @ 2016-10-05 11:49 keshuqi 阅读(417) 评论(0) 推荐(0)
摘要:密码 (pasuwado.pas/c/cpp) 【问题描述】 哪里有压迫,哪里就有反抗。 moreD的宠物在法庭的帮助下终于反抗了。作为一只聪明的宠物,他打算把魔法使moreD的魔法书盗去,夺取moreD的魔法能力。但moreD怎么会让自己的魔法书轻易地被盗取?moreD在魔法书上设置了一个密码锁, 阅读全文
posted @ 2016-09-04 20:35 keshuqi 阅读(409) 评论(0) 推荐(0)
摘要:Description 农夫约翰打算建立一个栅栏将他的牧场给围起来,因此他需要一些特定规格的木材。于是农夫约翰到木材店购 买木材。可是木材店老板说他这里只剩下少部分大规格的木板了。不过约翰可以购买这些木板,然后切割成他所需 要的规格。而且约翰有一把神奇的锯子,用它来锯木板,不会产生任何损失,也就是说 阅读全文
posted @ 2016-08-15 17:42 keshuqi 阅读(171) 评论(0) 推荐(0)
摘要:题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值为c 的罪犯被关押在 阅读全文
posted @ 2016-07-08 22:18 keshuqi 阅读(192) 评论(0) 推荐(0)
摘要:Description Input 第1行:两个用空格隔开的整数:N和M * 第2行到N+1行:第i+1行表示一个整数C_i * 第N+2到N+M+1行: 第i+N+1行表示2个整数 A_i和B_i Output * 第一行: 一个整数表示最多能够被满足的要求数 Sample Input 5 4 1 阅读全文
posted @ 2016-06-30 13:30 keshuqi 阅读(121) 评论(0) 推荐(0)
摘要:#include #include #include using namespace std; int n; long long arr[18],mut,temp; int main() { while(~scanf("%d",&n)){ mut=-99999999999999999; for(int i=0;i>arr[i]; for(i... 阅读全文
posted @ 2016-04-10 11:59 keshuqi 阅读(335) 评论(0) 推荐(0)

1