好久没登CSDN了…感觉本科阶段最后一段时间用了吧…研究生打算换到简书试试…
说到读研其实整个人还是懵逼的…本来觉得没什么,但是前两天在图书馆看到前端的书,忽然又想起之前面试的时候…放弃offer这件事真的是感觉可惜得要满地打滚了。不知道会不会被网易爸爸拉黑…然而感觉研究生出来可能还是做前端(doge脸…)感觉读研出来应该找一个看上去高端一点的职位,比如架构师,数据分析啥啥的…但是秉承着干一行爱一行的原则…现在对前端有种……占了坑没填完的赶脚啊(艹皿艹 )!vue还没深入了解,react都还没有用啊ヾ(。`Д´。),flux和redux什么的!好歹让我知道下啊!转行也此生无憾啊!!!摔!
关键是现在我又过来填坑了…而且目测这一次填不完… 在萎靡的状态下报了CCF… 所以其实现在我是想把本科阶段的坑都填完?黑人问号脸……
所以先加油吧!!……
*************************************************************
于是离题很远…
这是一道简单的概率题,但是千万注意看题…!题意是说抢劫的几个银行被抓到的概率要小于额定值,所以不是直接把概率相加的,因为题目给的是每次抢劫可能被抓到的概率,所以多次抢劫累计起来的概率应该是 (1-p1)*(1-p2)...(1-pn)。最后把1-最终概率要小于额定值的最大得分找到就行
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
#define maxn 101
#define maxm 10010
int a[maxn];
double b[maxn],dp[maxm];
int main()
{
int t;
cin>>t;
while(t--)
{
double tar;
int n,sum=0,ans=0;
cin>>tar>>n;
memset(dp,0,sizeof(dp));
for(int i=0;i<n;i++) {cin>>a[i]>>b[i];sum+=a[i];}
dp[0]=1;
for(int i=0;i<n;i++)
{
for(int j=sum;j>=a[i];j--)
{
dp[j]=max(dp[j],dp[j-a[i]]*(1-b[i]));
}
}
for(int i=sum;i>=0;i--)
{
if(dp[i])
{
if(1-dp[i]<tar) {ans=i;break;}
}
}
cout<<ans<<endl;
}
return 0;
}