zoukankan      html  css  js  c++  java
  • 贪心算法

    Problem1删数问题

    题目描述:

        给定一正整数n(n的位数小于240),现要删除数n中的s个数码,使其得到的新数最小,求这个最小数。

    输入

        输入有两行,第一行为整数n,第二行即为s

    输出

    输出一行,即最小的那个数

    Problem2旅行家的预算

    题目描述

        一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。给定两个城市之间的距离D1、汽车油箱的量C(以升为单位)、每升汽油能行驶的距离D2、出发点每升汽油价格P和沿途油站数N(N可以为零),油站i离出发点的距离i、每升汽油价格Pi(i=1,2,……N)。计算结果四舍五入至小数点后两位。如果无法到达目的地,则输出“No Solution”。

    输入

        输入第一行有5个数:D1,c,D2,P,N(前四个为实数,N为整数,N<=1000)

        后面有N行,每行两个实数,分别表示对应的加油站离出发点的距离,与每升汽油的价格

    输出

        输出仅一行,即最少花费

    Problem3线段覆盖

    题目描述

        给定数轴上的n条线段(n<100),每个线段有其端点ai、bi组成(-999<=ai<bi<=999),由于有些线段会相互覆盖,所以求出至少去掉多少条线段,才能使剩下的所有线段之间互相没有内部公共点(若只是端点重合,则不是内部公共点)。

    输入

        输入第一行为整数N,接下来有N行,分别描述每条线段

    输出

        输出第一行为最少删除的线段数s

        后面s行描述一个可行的删除方案,即删除那些线段

    Problem4背包问题

    题目描述

        有一个贼在偷窃一家商店时发现有N件物品:第i件物品值Vi元,重Wi磅,(1≤i≤n),此处Vi和Wi都是整数。他希望带走的东西越值钱越好,但他的背包中最多只能装下W磅的东西(W为整数),小偷可带走某个物品的一部分(只带走其中的几磅),小偷应该带走哪几件东西,每件东西的重量是多少?

    输入

        输入第一行为N(N<=10000),后面N行描述每个物品,每行两个数,即为Vi与Wi

    输出

    输出第一行为大的最大价值,后面依次描述物品i应偷多少(如果没偷,则不输出,输出对应的i为升序)。

    Problem5任务调度

    题目描述

        一个单位时间任务是个作业,如要在计算机上运行一个程序,它恰覆盖一个单位的运行时间。给定一个单位时间任务的集合S,对S的一个调度即S的一个排列,其中规定了这些任务的执行顺序。该调度中的第一个任务开始于时间0,结束于时1;第二个任务开始于时间1, 结束于时间2;……。单处理器上具有期限和罚款的单位时间任务调度问题的输入如下:

         1.包含n个单位时间任务的集合S={1,2,……,n};

         2.n个取整的期限d1,……,dn,(1≤d,≤n),任务i要求在di前完成;

         3.n个非负的权(或罚款)w1,……,wn。如果任务i没在时间di之前结束,则导致罚款wi;

         要求找出S的一个调度,使之最小化总的罚款。

    输入

        输入第一行为N(N<=1000),后面N行每行两个数,即为对应的di与wi

    输出

        输出最小总罚款Problem6果子合并

    Problem6果子合并

    题目描述

        在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。

        每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。

        因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的体力最少,并输出这个最小的体力耗费值。

        例如有3种果子,数目依次为1,2,9。可以先将1、2堆合并,新堆数目为3,耗费体力为3。接着,将新堆与原先的第三堆合并,又得到新的堆,数目为12,耗费体力为12。所以多多总共耗费体力=3+12=15。可以证明15为最小的体力耗费值。

    输入

        输入第一行为N(N<=1000),第二行有N个整数,分别描述每个果子

    输出

    输出一个数即最小代价

    Problem7射击竞赛

    题目描述

        射击的目标是一个由R*C(2≤R≤C≤1000)个小方格组成的矩形网格。每一列恰有2个白色的小方格和R-2个黑色的小方格。行从顶至底编号为1-R,列从左至右编号为1-C。射击者可射击C次。在连续的C次射击中,若每列恰好有一个白色的方格被射中,且不存在无白色方格被射中的行,这样的射击才是正确的。如果存在正确的射击方法,则要求找到它。

    输入

        输入第一行为R,C,后面R行每行C个数,如果为0则为白格,1则为黑格

    输出

    输出正确方案——每行两个数即射击坐标,否则输出-1

    Problem8任务安排

    题目描述

        一家工厂的流水线正在生产一种产品,这需要两种操作:操作A和操作B。每个操作只有一些机器能够完成。A型机器从输入库接受工件,对其施加操作A,得到的中间产品存放在缓冲库。B型机器从缓冲库接受中间产品,对其施加操作B,得到的最终产品存放在输出库。所有的机器平行并且独立地工作,每个库的容量没有限制。每台机器的工作效率可能不同,一台机器完成一次操作需要一定的时间。 给出每台机器完成一次操作的时间,计算完成A操作的时间总和的最小值,和完成B操作的时间总和的最小值。

    输入

        输入第一行  三个用空格分开的整数:

        N,工件数量 (1<=N<=1000)

        M1,A型机器的数量 (1<=M1<=30)

        M2,B型机器的数量 (1<=M2<=30)

        第二行……,接下来M1个整数(表示A型机器完成一次操作的时间,1..20),接着是M2个整数(B型机器完成一次操作的时间,1..20)

    输出

    只有一行。输出两个整数:完成所有A操作的时间总和的最小值,和完成所有B操作的时间总和的最小值(A操作必须在B操作之前完成)。

    Problem9最小差距

    题目描述

        给定一些不同的一位数字,你可以从这些数字中选择若干个,并将它们按一定顺序排列,组成一个整数,把剩下的数字按一定顺序排列,组成另一个整数。组成的整数不能以0开头(除非这个整数只有1位)。

        例如,给定6个数字,0,1,2,4,6,7,你可以用它们组成一对数10和2467,当然,还可以组成其他的很多对数,比如210和764,204和176。这些对数中两个数差的绝对值最小的是204和176,为28。

        给定N个不同的0~9之间的数字,请你求出用这些数字组成的每对数中,差的绝对值最小的一对(或多对)数的绝对值是多少?

    输入

        输入第一行包括一个数T(T≤1000),为测试数据的组数。

      每组数据包括两行,第一行为一个数N(2≤N≤10),表示数字的个数。下面一行为N个不同的一位数字。

    输出

    输出T行,每行一个数,表示第i个数据的答案。即最小的差的绝对值

  • 相关阅读:
    jQuery jsonp(转载)
    vue jsonp (转载)
    Win10系统 开机总是黑屏一分钟 然后才进入解锁界面?
    Win10怎么取消开机密码
    Qt启动报错“0xc0000005”错误?
    公司转让债务问题怎么处理
    从车载激光点云数据轨迹数据中提取坐高斯标数据
    macbook air和pro的ppi
    任务管理器是灰色的
    python列表删除某个元素
  • 原文地址:https://www.cnblogs.com/Crakme/p/1977911.html
Copyright © 2011-2022 走看看