Time Limit: 1 second

Memory Limit: 128 MB

【问题描述】

Sqybi的电脑在做一个任务,就是SETI@home,据说这个任务在全世界有500 多万台电脑在同时做,可以说是最热门的。它的目的

就是通过分析射电望远镜收到的无线电信号查找外太空智慧生物。这个任务算是起步比较早的,它也会为我们分配很多的任务。

这样,我们的机器有的时候就不能在给定的期限内完成所有的任务。现在sqybi 就遇到了这个问题,由于他的电脑是笔记本,他

不能用太多的时间运行所有的任务。他希望你能够提供一个程序,用来告诉他应该运行哪些任务以使他得到的积分最多。注意一

下,一个单位时间内只能运行一个任务,而每个任务都有一个固定的积分。如果没有完成一项任务,那么在这项任务上不会得到

任何的积分。 现在提供每个任务需要的单位时间和可以得到的积分以及sqybi 可以用来运行任务的总时间,需要输出sqybi 可以得到的最大积分。

【输入格式】

第1 行是一个正整数n 和一个正整数m,分别代表被分配的任务数和总共可以用来运行任务的时间,中间用一个空格分开。

第2 行到第n+1 行每行两个数,用空格分开,分别是正整数t 和正实数p。t 表示该任务需要的时间,p表示该任务可以得到的积分数。

【数据范围】 

对于30%数据,n≤15。 

对于100%数据,p 的小数位不会超过三位,p≤100,m≤10000,n≤1000。

【输出格式】

仅一行,表示sqybi 可以得到的最大积分,保留三位小数。

Sample Input

4 10
5 1
1 5
6 10
4 6

Sample Output

16.000

【题解】

这就是一个0/1背包问题。然后因为价值是实数,所以用double类型的f数组来存最优值。更新的时候记得逆序更新就好。没有坑点。最后“%.3lf”输出。

ps:不想强迫自己写模块化的代码了。从这篇后可能就是直接写下来了。

【代码】

#include <cstdio>

int n,m,w[1010];
double c[1010],f[10010]; void input_data()
{
scanf("%d%d",&n,&m);
for (int i = 1;i <= n;i++) //输入花费和获得的价值
scanf("%d%lf",&w[i],&c[i]);
} void get_ans()
{
for (int i = 1;i <= n;i++)
for (int j = m;j >= w[i];j--) //因为是0/1背包所以逆序更新。这样不会影响到其他要更新的位置
if (f[j] <f[j-w[i]] + c[i])
f[j] = f[j-w[i]] + c[i];
} void output_ans()
{
printf("%.3lf",f[m]); //保留3位小数输出。
} int main()
{
//freopen("F:\\rush.txt","r",stdin);
input_data();
get_ans();
output_ans();
return 0;
}
												

【t040】SETI任务的更多相关文章

  1. ACdream 1430——SETI——————【后缀数组,不重叠重复子串个数】

    SETI Time Limit: 4000/2000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Submit Statist ...

  2. UVA 1563 - SETI (高斯消元+逆元)

    UVA 1563 - SETI option=com_onlinejudge&Itemid=8&page=show_problem&category=520&probl ...

  3. POJ_2065 SETI 【同余高斯消元】

    一.题目  SETI 二.分析 给定一个模数,一串字符串,字符串长度为N,相当于是N个方程的答案,而这N个方程中有N个未知数,要求的就是这N个未知数的值,很显然的高斯消元,遇到模数和除法,用逆元就好. ...

  4. 【poj2065】 SETI

    http://poj.org/problem?id=2065 (题目链接) 题意 题意半天看不懂..给你一个素数P(P<=30000)和一串长为n的字符串str[].字母'*'代表0,字母a-z ...

  5. POJ2065 SETI(高斯消元 同模方程)

    (a1 * 1^0  +   a2 * 1^1  + ...  an * 1^n - 1) % P = f1 .... (a1 * n^0  +   a2 * n^1  + ...  an - 1 * ...

  6. [ACDream 1430]SETI 后缀数组

    题目链接:http://acdream.info/problem?pid=1430 题目大意:给你一个长度不超过10000的字符串,问你出现过两次或两次以上的不重叠的子串有多少个. 后缀数组计算出he ...

  7. POJ 2065 SETI(高斯消元)

    题目链接:http://poj.org/problem?id=2065 题意:给出一个字符串S[1,n],字母a-z代表1到26,*代表0.我们用数组C[i]表示S[i]经过该变换得到的数字.给出一个 ...

  8. POJ 2065 SETI (高斯消元 取模)

    题目链接 题意: 输入一个素数p和一个字符串s(只包含小写字母和‘*’),字符串中每个字符对应一个数字,'*'对应0,‘a’对应1,‘b’对应2.... 例如str[] = "abc&quo ...

  9. poj 2065 SETI 高斯消元

    看题就知道要使用高斯消元求解! 代码如下: #include<iostream> #include<algorithm> #include<iomanip> #in ...

随机推荐

  1. RocketMQ集群消费的那些事

    说明 RocketMQ集群消费的时候,我们经常看到类似注释里面 (1,(2 的写法,已经有时候有同学没注意抛异常的情况就是(3 模拟的情况.那么这3种情况到底是怎么样的呢?你是否都了然于心呢?下面我们 ...

  2. POJ 1166 The Clocks 高斯消元 + exgcd(纯属瞎搞)

    依据题意可构造出方程组.方程组的每一个方程格式均为:C1*x1 + C2*x2 + ...... + C9*x9 = sum + 4*ki; 高斯消元构造上三角矩阵,以最后一个一行为例: C*x9 = ...

  3. Lintcode 将整数A转换为B

    例子 如把31转换为14,须要改变2个bit位. ()10=()2 ()10=()2 贴代码 class Solution { public: /** *@param a, b: Two intege ...

  4. 1.2 Python基础知识 - 字符编码

    计算机中的数据是以二进制方式进行存储的,即只有"0"和"1",二进制是属于数据类型的数据,它只可以和其他进制的数据类型进行转换,但是不能存储其他字符,例如:字母 ...

  5. jemter--录制的脚本设置循环次数不起作用

    以下是比较jmeter线程组中设置循环次数和循环控制器中设置循环次数的区别 1.jmeter生成的脚本没有step1(循环控制器)控制器,故循环在线程组中设置   2.badboy录制的脚本有setp ...

  6. eclipse启动tomcat报错

    错误信息:   严重: A child container failed during start java.util.concurrent.ExecutionException: org.apach ...

  7. swiper如何实现轮播嵌套轮播

    之所以要写这篇文章是因为插件有个bug,要改掉这个bug比较麻烦,所以就想了个折中的办法,绕过这个限制,方法千万条,功能干出来第一条,哈哈 最近做了个需求,效果图是这样的 第一个框是大轮播,第二个框是 ...

  8. <转> Intel VTune分析结果中的名词释译

    原文转自http://blog.chinaunix.net/uid-26000296-id-3369740.html Elapsed Time(执行耗时): the total time your t ...

  9. 幻灯展示jQuery插件supersized

    主要特性: 能够自动修改图片大小适合浏览器的页面大小 通过幻灯展示的循环背景可以动态加载并且可以设置变化方式 核心版本可以支持仅仅需要背景变化大小的需要 键盘导航 整合Flickr - 可以从用户,组 ...

  10. anaconda中实现双spyder版本

    1)先在conda中创建一个名为python2的环境,并下载对应版本python2.7 conda create --name python27 python=2.7 2)激活python2环境 ac ...