SCU 2941 I NEED A OFFER!(01背包变形)
64bit IO Format: %lld & %llu |
Submit Status
Description
Description
Speakless很早就想出国,现在他已经考完了所有需要的考试,准备了所有要准备的材料, 于是,便需要去申请学校了。要申请国外的任何大学,你都要交纳一定的申请费用, 这可是很惊人的。Speakless没有多少钱,总共只攒了n万美元。他将在m个学校中选择若干的 (当然要在他的经济承受范围内)。每个学校都有不同的申请费用a(万美元), 并且Speakless估计了他得到这个学校offer的可能性b。不同学校之间是否得到offer不会互相影响。 “I NEED A OFFER”,他大叫一声。帮帮这个可怜的人吧,帮助他计算一下, 他可以收到至少一份offer的最大概率。 (如果Speakless选择了多个学校,得到任意一个学校的offer都可以)。
Input
输入有若干组数据,每组数据的第一行有两个正整数n,m(1<=n<=10000,1<=m<=1000) 后面的m行,每行都有两个数据ai(整型),bi(实型)分别表示第i个学校的申请费用和可能拿到offer的概率。 输入的最后有两个0。
Output
每组数据都对应一个输出,表示Speakless可能得到至少一份offer的最大概率。 用百分数表示,精确到小数点后一位。
Sample Input
10 3 4 0.1 4 0.2 5 0.3 0 0
Sample Output
44.0%
Source
Speakless @ Gardon - DYGG's contest 2
题目链接:SCU 2941
初看跟小数背包有那么点像,但其实略有不同,这题的背包体积还是当前拥有的钱,只是转移方程稍微变一下,算至少一份offer不好算,但是算不出现offer的几率好算,把不出现的几率相乘起来就可以了,每次取min使得不出现几率最小,反过来出现一份offer的几率就是最大了……
代码:
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<sstream>
#include<cstring>
#include<bitset>
#include<cstdio>
#include<string>
#include<deque>
#include<stack>
#include<cmath>
#include<queue>
#include<set>
#include<map>
using namespace std;
#define INF 0x3f3f3f3f
#define CLR(x,y) memset(x,y,sizeof(x))
#define LC(x) (x<<1)
#define RC(x) ((x<<1)+1)
#define MID(x,y) ((x+y)>>1)
typedef pair<int,int> pii;
typedef long long LL;
const double PI=acos(-1.0);
const int N=10010;
int c[N];
double w[N];
double dp[N];
void zonepack(double w,int c,int V)
{for (int i=V; i>=c; --i)dp[i]=min(dp[i],dp[i-c]*w);
}
int main(void)
{int n,m,i,j;while (~scanf("%d%d",&n,&m)&&(n||m)){fill(dp,dp+N,1.0);for (i=0; i<m; ++i){scanf("%d%lf",&c[i],&w[i]);w[i]=1.0-w[i];}for (i=0; i<m; ++i)zonepack(w[i],c[i],n);printf("%.1lf%%\n",(1-dp[n])*100);}return 0;
}
转载于:https://www.cnblogs.com/Blackops/p/5789456.html
SCU 2941 I NEED A OFFER!(01背包变形)相关推荐
- codeforce Gym 101102A Coins (01背包变形)
01背包变形,注意dp过程的时候就需要取膜,否则会出错. 代码如下: #include<iostream> #include<cstdio> #include<cstri ...
- P1734 最大约数和 01背包变形
传送门 思路:01背包变形题.将i看成重量,i的因子看成价值即可.背包自然是s. /** * From: * Qingdao Agricultural University * Created by ...
- HDU 3466 01背包变形
给出物品数量N和总钱数M 对于N个物品.每一个物品有其花费p[i], 特殊值q[i],价值v[i] q[i] 表示当手中剩余的钱数大于q[i]时,才干够买这个物品 首先对N个物品进行 q-p的排序,表 ...
- poj 2063 Investment(01背包变形)
http://poj.org/gotoproblem?pid=2063 (1)上限 m 一直上升的 n 次01背包问题,比一般的01背包多了一重循环: (2)本题出现了各种错误:1)刚开始,没注意 m ...
- hdu 2184 01背包变形
转自:http://blog.csdn.net/liuqiyao_01/article/details/8753686 题意:这是又是一道01背包的变体,题目要求选出一些牛,使smartness和fu ...
- uestc oj 1218 Pick The Sticks (01背包变形)
题目链接:http://acm.uestc.edu.cn/#/problem/show/1218 给出n根木棒的长度和价值,最多可以装在一个长 l 的容器中,相邻木棒之间不允许重叠,且两边上的木棒,可 ...
- #1353 : 满减优惠(01背包变形)
描述 最近天气炎热,小Ho天天宅在家里叫外卖.他常吃的一家餐馆一共有N道菜品,价格分别是A1, A2, ... AN元.并且如果消费总计满X元,还能享受优惠.小Ho是一个不薅羊毛不舒服斯基的人,他希望 ...
- UVA 12563 Jin Ge Jin Qu hao 01背包变形
基本的01背包,更新的时候保持背包里每一个元素的num最大然后time尽量长 CSDN也支持makedown了试一下 12563 Jin Ge Jin Qu hao (If you smiled wh ...
- HDU 2546 饭卡 01背包变形
饭卡 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- 2022-9-2何以包邮(01背包变形)(c/c++实测满分)
总结: 此题是背包问题的变形,物品的价值和重量有所改变,背包的容量限制有所改变,但核心动态规划求法没有改变.只需要在背包问题的解法上根据题意对物品表示,答案输出进行改变即可. 背包算法 ...
最新文章
- 软件测试--利用正交表设计测试用例
- 如何快速开发一个博客
- element vue 获取select 的label_Vue动态组件component的深度使用
- python进行数据查询_如何进行python数据库查询?(实例解析)
- 201521123121 《Java程序设计》第14周学习总结
- apache php mysql配置详解,详细介绍:Apache+PHP+MySQL配置攻略_php基础
- 写篇技术博客被简书锁定是一种什么样的体验
- JavaScript 将两个数组合并,且删除重复的值
- 单词毕业设计,微信小程序毕设,小程序毕设源码,单词天天斗 (毕业设计/实战小程序学习/微信小程序完整项目)
- 基于MyApps低代码平台实现的流程化知识管理系统
- 23位子网掩码是多少_子网掩码划分
- 利用Google快讯和GoogleReader收集信息
- 用友NC V6.5 6.33 6.31 6.3 6.1 2019新个人所得税增强包税改升级补丁包
- 关于Windows 2003 安装Inter G33/G31 显卡问题
- 使用viewer实现图片预览
- tplinkwr710n改无线打印服务器,TP-Link TL-WR710N V1无线路由器AP模式怎么设置
- matlab 怎么使用mathtype,教你怎样在Authorea里面使用MathType
- MQTT客户端远程控制WIFI设备(阿里云物联网平台)
- ArcGIS JS 版军事标绘图、燕尾箭头;支持VUE版本
- Python 模拟登录AUSU路由器获取在线用户列表