时间限制:3000 ms | 内存限制:65535 KB
难度:3
描述
现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为中心的半径为实数Ri(0 输入 第一行m表示有m组测试数据 输出 输出所用装置的个数 样例输入 样例输出 来源 [苗栋栋]原创 上传者 苗栋栋 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有n(n<=10000)个点状的喷水装置,每个喷水装置i喷水的效果是让以它为中心半径为Ri的圆都被润湿。请在给出的喷水装置中选择尽量少的喷水装置,把整个草坪全部润湿。 输入 第一行输入一个正整数N表示共有n次测试数据。 输出 每组测试数据输出一个正整数,表示共需要多少个喷水装置,每个输出单独占一行。 样例输入 样例输出 来源 《算法艺术与信息学竞赛》 上传者 张云聪 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办。小刘的工作就是安排学校小礼堂的活动,每个时间最多安排一个活动。现在小刘有一些活动计划的时间表,他想尽可能的安排更多的活动,请问他该如何安排。 输入 第一行是一个整型数m(m<100)表示共有m组测试数据。 输出 对于每一组输入,输出最多能够安排的活动数量。 样例输入 样例输出 提示 注意:如果上一个活动在t时间结束,下一个活动最早应该在t+1时间开始 来源 经典题目 上传者 张云聪 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描述 John is going on a fishing trip. He has h hours available (1 <= h <= 16), and there are n lakes in the area (2 <= n <= 25) all reachable along a single, one-way road. John starts at lake 1, but he can finish at any lake he wants. He can only travel from one lake to the next one, but he does not have to stop at any lake unless he wishes to. For each i = 1,...,n - 1, the number of 5-minute intervals it takes to travel from lake i to lake i + 1 is denoted ti (0 < ti <=192). For example, t3 = 4 means that it takes 20 minutes to travel from lake 3 to lake 4. To help plan his fishing trip, John has gathered some information about the lakes. For each lake i, the number of fish expected to be caught in the initial 5 minutes, denoted fi( fi >= 0 ), is known. Each 5 minutes of fishing decreases the number of fish expected to be caught in the next 5-minute interval by a constant rate of di (di >= 0). If the number of fish expected to be caught in an interval is less than or equal to di , there will be no more fish left in the lake in the next interval. To simplify the planning, John assumes that no one else will be fishing at the lakes to affect the number of fish he expects to catch. 输入 You will be given a number of cases in the input. Each case starts with a line containing n. This is followed by a line containing h. Next, there is a line of n integers specifying fi (1 <= i <=n), then a line of n integers di (1 <=i <=n), and finally, a line of n - 1 integers ti (1 <=i <=n - 1). Input is terminated by a case in which n = 0. 输出 For each test case, print the number of minutes spent at each lake, separated by commas, for the plan achieving the maximum number of fish expected to be caught (you should print the entire plan on one line even if it exceeds 80 characters). This is followed by a line containing the number of fish expected. 样例输入 样例输出 来源 East Central North A 上传者 张云聪 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,N个人一共只带了一只手电筒,而桥窄得只够让两个人同时过。如果各自单独过桥的话,N人所需要的时间已知;而如果两人同时过桥,所需要的时间就是走得比较慢的那个人单独行动时所需的时间。问题是,如何设计一个方案,让这N人尽快过桥。 输入 第一行是一个整数T(1<=T<=20)表示测试数据的组数 输出 输出所有人都过河需要用的最少时间 样例输入 样例输出 来源 POJ 上传者 张云聪 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别。一条独木舟最多只能乘坐两个人,且乘客的总重量不能超过独木舟的最大承载量。我们要尽量减少这次活动中的花销,所以要找出可以安置所有旅客的最少的独木舟条数。现在请写一个程序,读入独木舟的最大承载量、旅客数目和每位旅客的重量。根据给出的规则,计算要安置所有旅客必须的最少的独木舟条数,并输出结果。 输入 第一行输入s,表示测试数据的组数; 输出 每组人数所需要的最少独木舟的条数。 样例输入 样例输出 上传者 李剑锋 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 给你一个非负数整数n,判断n是不是一些数(这些数不允许重复使用,且为正数)的阶乘之和,如9=1!+2!+3!,如果是,则输出Yes,否则输出No; 输入 第一行有一个整数0 输出 如果符合条件,输出Yes,否则输出No; 样例输入 样例输出 上传者 李剑锋 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v,w<=10);如果给你一个背包它能容纳的重量为m(10<=m<=20),你所要做的就是把物品装到背包里,使背包里的物品的价值总和最大。 输入 第一行输入一个正整数n(1<=n<=5),表示有n组测试数据; 输出 输出每组测试数据中背包内的物品的价值和,每次输出占一行。 样例输入 样例输出 来源 [苗栋栋]原创 上传者 苗栋栋 时间限制:100 ms | 内存限制:65535 KB 难度:1 描述 Little A is one member of ACM team. He had just won the gold in World Final. To celebrate, he decided to invite all to have one meal. As bowl, knife and other tableware is not enough in the kitchen, Little A goes to take backup tableware in warehouse. There are many boxes in warehouse, one box contains only one thing, and each box is marked by the name of things inside it. For example, if "basketball" is written on the box, which means the box contains only basketball. With these marks, Little A wants to find out the tableware easily. So, the problem for you is to help him, find out all the tableware from all boxes in the warehouse. 输入 There are many test cases. Each case contains one line, and one integer N at the first, N indicates that there are N boxes in the warehouse. Then N strings follow, each string is one name written on the box. 输出 For each test of the input, output all the name of tableware. 样例输入 样例输出 提示 The tableware only contains: bowl, knife, fork and chopsticks. 来源 辽宁省10年省赛 上传者 ACM_李如兵 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 The famous ACM (Advanced Computer Maker) Company has rented a floor of a building whose shape is in the following figure. 输入 The input consists of T test cases. The number of test cases ) (T is given in the first line of the input file. Each test case begins with a line containing an integer N , 1 <= N <= 200, that represents the number of tables to move. 输出 The output should contain the minimum time in minutes to complete the moving, one per line. 样例输入 样例输出 上传者 苗栋栋 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间,如果第i+1个木棒的重量和长度都大于等于第i个处理的木棒,那么将不会耗费时间,否则需要消耗一个单位的时间。因为急着去约会,C小加想在最短的时间内把木棒处理完,你能告诉他应该怎样做吗? 输入 第一行是一个整数T(1 输出 处理这些木棒的最短时间。 样例输入 样例输出 来源 POJ改编 上传者 陈玉
每一组测试数据的第一行有一个整数数n,n表示共有n个喷水装置,随后的一行,有n个实数ri,ri表示该喷水装置能覆盖的圆的半径。2
5
2 3.2 4 4.5 6
10
1 2 3 1 2 1.2 3 1.1 1 2
2
5
#include
喷水装置(二)
每一组测试数据的第一行有三个整数n,w,h,n表示共有n个喷水装置,w表示草坪的横向长度,h表示草坪的纵向长度。
随后的n行,都有两个整数xi和ri,xi表示第i个喷水装置的的横坐标(最左边为0),ri表示该喷水装置能覆盖的圆的半径。
如果不存在一种能够把整个草坪湿润的方案,请输出0。2
2 8 6
1 1
4 5
2 10 6
4 5
6 5
1
2
#include
会场安排问题
每组测试数据的第一行是一个整数n(1
每组的输出占一行2
2
1 10
10 11
3
1 10
10 11
11 20
1
2
//对结束时间排序,尽量选择结束时间早的。局部最优——整体最优
#include
Gone Fishing
Write a program to help John plan his fishing trip to maximize the number of fish expected to be caught. The number of minutes spent at each lake must be a multiple of 5.
If multiple plans exist, choose the one that spends as long as possible at lake 1, even if no fish are expected to be caught in some intervals. If there is still a tie, choose the one that spends as long as possible at lake 2, and so on. Insert a blank line between cases. 2
1
10 1
2 5
2
4
4
10 15 20 17
0 3 4 3
1 2 3
4
4
10 15 50 30
0 3 4 3
1 2 3
0
45, 5
Number of fish expected: 31
240, 0, 0, 0
Number of fish expected: 480
115, 10, 50, 35
Number of fish expected: 724
这个还没看懂.......
#include
>n>>h)
{
if (n==0) exit(0);
for(int i=1;i<=n;++i)
{
cin>>fi[i];
}
for(int i=1;i<=n;++i)
{
cin>>di[i];
}
for(int i=1;i
过河问题
每组测试数据的第一行是一个整数N(1<=N<=1000)表示共有N个人要过河
每组测试数据的第二行是N个整数Si,表示此人过河所需要花时间。(01
4
1 2 5 10
17
/*
分析:
如果n==1或者n==2,所有人直接过河即可;
如果n==3,用时最短的和用时最长的一起过去,然后用时最短的回来,再和剩下的一个人过去 ;
如果n>=4,设a[0]表示用时最短的人所用的时间,a[1]为用时第二短的人所用的时间,a[n-1]表示用时最长的人所用的时间,a[n-2]表示用时第二长的人所用的时间。那么:
当2a[1] + a[0] + a[n-1] > 2a[0] + a[n-1] + a[n-2]时,就先让用时最短的人和用时最长的人一起过去,然后用时最短的回来,接着让用时最短的和用时第二长的一起过去,再让用时最短的回来。
否则,就先让用时最短的和用时第二短的一起过去,然后用时最短的回来,接着让用时最长和用时第二长的一起过去,再让用时第二短的回来。这样就相当于剩下了n-2个人。
对这n-2个人执行相同的操作,直到剩下不足4个人即可。
*/
#include
独木舟上的旅行
每组数据的第一行包括两个整数w,n,80<=w<=200,1<=n<=300,w为一条独木舟的最大承载量,n为人数;
接下来的一组数据为每个人的重量(不能大于船的承载量);385 65 84 85 80 84 8390 390 45 60100 550 50 90 40 60
533
/*
*先把各个人的体重排序,然后计算最重的人和最轻的
*人能否同乘一条舟,如果不能,则最重的人就要单独
*乘坐一条舟,再求最轻的和第二重的人的和,依次比较。
*/
#include
阶乘之和
2910
YesNo
//局部最优,每次选择最大的
#include
背包问题
随后有n测试数据,每组测试数据的第一行有两个正整数s,m(1<=s<=10);s表示有s个物品。接下来的s行每行有两个正整数v,w。1
3 15
5 10
2 8
3 9
65
/*
思路:使用贪心算法。为了使背包里的物品总价值最大,先装单位价值最大的,依次类推,
整放物品,不能整放分割放
1.定义一个结构体,变量名bao[10],里面定义 单位价值和每个物品重量
2.对物品的单位 价值从大到小排序。
3.输入信息,并计算出每一个物品的总价值。
4.整放物品,计算出满足条件的物品的总价值,总质量。
5.分割,背包所容纳的最大质量减去目前的质量乘以分割物品的价值,计算总价值。跳出循环
*/
//注意:不要忘记每次循环都要初始化数组
#include
=(wsum+bao[i].w)){ //整放物品
vsum+=bao[i].total;
wsum+=bao[i].w;
}
else if(m<(wsum+bao[i].w)&&m>=wsum){ //不能整放 ,就分割放
vsum+=(m-wsum)*bao[i].v;
break;
}
}
printf("%d\n",vsum);
}
return 0;
}
Dinner
3 basketball fork chopsticks
2 bowl letter
fork chopsticks
bowl
01.#include
推桌子
The floor has 200 rooms each on the north side and south side along the corridor. Recently the Company made a plan to reform its system. The reform includes moving a lot of tables between rooms. Because the corridor is narrow and all the tables are big, only one table can pass through the corridor. Some plan is needed to make the moving efficient. The manager figured out the following plan: Moving a table from a room to another room can be done within 10 minutes. When moving a table from room i to room j, the part of the corridor between the front of room i and the front of room j is used. So, during each 10 minutes, several moving between two rooms not sharing the same part of the corridor will be done simultaneously. To make it clear the manager illustrated the possible cases and impossible cases of simultaneous moving.
For each room, at most one table will be either moved in or moved out. Now, the manager seeks out a method to minimize the time to move all the tables. Your job is to write a program to solve the manager's problem.
Each of the following N lines contains two positive integers s and t, representing that a table is to move from room number s to room number t each room number appears at most once in the N lines). From the 3 + N -rd
line, the remaining test cases are listed in the same manner as above.3
4
10 20
30 40
50 60
70 80
2
1 3
2 200
3
10 100
20 80
30 50
10
20
30
#include
心急的C小加
3
5
4 9 5 2 2 1 3 5 1 4
3
2 2 1 1 2 2
3
1 3 2 2 3 1
2
1
3
#include
//贪心算法 题目总结
一、喷水装置(一)
排序,选半径大的依次相加直到>=20,局部最优——整体最优
二、喷水装置(二)
与(一)不同的是,装置的位置是固定的的,区间问题
三、会场时间安排
对结束时间排序,尽量选择结束时间早的。局部最优——整体最优
四、过河问题
四人一组局部最优,整体最优
五、独木舟上的旅行
先把各个人的体重排序,然后计算最重的人和最轻的
人能否同乘一条舟,如果不能,则最重的人就要单独
乘坐一条舟,再求最轻的和第二重的人的和,依次比较。
六、阶乘之和
每一步选择最大,整体解
七、背包问题
可分割,每一次单位价值最大的,以此类推
八、Dinner
九、推桌子
类似会场安排或拦截导弹
十、心急的C小加
类似拦截导弹