首页 > 其他分享 >HDU 1203 I NEED A OFFER!

HDU 1203 I NEED A OFFER!

时间:2022-10-25 17:01:42浏览次数:103  
标签:HDU 概率 offer int 1203 学校 Speakless NEED include


题目链接:​​传送门​​ 题面:


I NEED A OFFER!

Problem Description

Speakless很早就想出国,现在他已经考完了所有需要的考试,准备了所有要准备的材料,于是,便需要去申请学校了。要申请国外的任何大学,你都要交纳一定的申请费用,这可是很惊人的。Speakless没有多少钱,总共只攒了n万美元。他将在m个学校中选择若干的(当然要在他的经济承受范围内)。每个学校都有不同的申请费用a(万美元),并且Speakless估计了他得到这个学校offer的可能性b。不同学校之间是否得到offer不会互相影响。“I NEED A OFFER”,他大叫一声。帮帮这个可怜的人吧,帮助他计算一下,他可以收到至少一份offer的最大概率。(如果Speakless选择了多个学校,得到任意一个学校的offer都可以)。

Input

输入有若干组数据,每组数据的第一行有两个正整数n,m(0<=n<=10000,0<=m<=10000)
后面的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%

喜闻乐见的中文题面
不好好想想思路是很难出的,是对背包问题的变形
他要求的是

至少得到一份的最大概率

题目中给你的是每个学校给你的概率,这就要转化了,我们转化成

一份都得不到的最小概率

所以状态方程就变成了

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <complex>
#include <algorithm>
#include <climits>
#include <queue>
#include <map>
#include <vector>
#include <iomanip>
#define
#define
#define

using namespace std;
int n, V, a[A];
double b[A], f[A];

int main() {
while (cin >> V >> n) {
fill(f, f + A, 1);
if (!V and !n) return 0;
for (int i = 1; i <= n; i++) cin >> a[i] >> b[i];
for (int i = 1; i <= n; i++)
for (int j = V; j >= a[i]; j--)
f[j] = min(f[j], f[j - a[i]] * (1 - b[i]));
printf("%.1f%%\n", (1 - f[V]) * 100);
}
}


标签:HDU,概率,offer,int,1203,学校,Speakless,NEED,include
From: https://blog.51cto.com/lyle/5794961

相关文章

  • HDU 1114 Piggy-Bank
    题目链接:​​传送门​​Piggy-BankProblemDescriptionBeforeACMcandoanything,abudgetmustbepreparedandthenecessaryfinancialsupportobtained.Them......
  • HDU 2546 饭卡
    题目链接:​​传送门​​题面:ProblemDescription电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一......
  • HDU 2602 Bone Collector
    题目链接:​​传送门​​​题面:ProblemDescriptionManyyearsago,inTeddy’shometowntherewasamanwhowascalled“BoneCollector”.Thismanliketocollec......
  • CF1000E We Need More Bosses
    题目链接:​​传送门​​一个无向图中求找到两个点使这两个点之间必须经过的边最多,求最多要经过的边缩完点树的直径E还能这么良心*/#include<iostream>#include<cstdio>......
  • HDU2376 Average distance
    题目链接:传送门求树上任意两点间的路径和的平均值非常套路统计每条边被经过多少次就是两边的点数的乘积注意精度就好#include<cstdio>#include<cstring>#include<alg......
  • HDU 1394 Minimum Inversion Number
    题目链接:​​传送门​​求出原数组的逆序对算把一个数从对头拿到队尾的过程中产生的贡献诶我好像昨天做过这个题#include<iostream>#include<cstdio>#include<cstring......
  • HDU 4135 Co-prime
    题目链接:​​传送门​​多组数据问区间内与互质的数的个数区间问题显然要转化成两个区间相减的问题也就是的答案减去的答案这里反过来求不互质的数的个数筛法可以提示我......
  • HDU 3349 Consumer
    ​​题目链接​​题目背景有依赖的背包,下面用我常用的变量和说法。题目大意有个主件和块钱,每个主件都有费用和对应的个附件,附件也有费用与价值,购买主件后才能购买附件,问怎......
  • HDU 1465(错排公式)
    不容易系列之一TimeLimit:2000/1000MS(Java/Others)    MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):9829    AcceptedSubmission(s):......
  • HDU 4585(Shaolin-Treap的lower_bound&upper_bound操作)
    题意:有n个数,每个数进来时求出与它与它最接近的数的编号(多个答案选数小的)模板测试#include<iostream>#include<cmath>#include<algorithm>#include<cstdio>#include<cst......