总结:可以从这里知道,0-1背包问题,价值和重量可以交换,对于其中只要一个为整型就可以解决
#include
<
iostream
>
#include
<
cstdio
>
#include
<
cstdlib
>
using
namespace
std;
![]()
const
int
MAXN
=
110
;
![]()
double
f[
100000
];
int
w[MAXN];
double
v[MAXN];
![]()
int
main()
{
int cas;
scanf("%d",&cas);
![]()
while(cas--)
{
double p;
int n;
scanf("%lf%d",&p,&n);
int sum = 0;
![]()
for(int i = 0; i < n; i++)
{
scanf("%d%lf",&w[i],&v[i]);
sum += w[i];
}
memset(f,0,sizeof(f));
f[0] = 1;
for(int i = 0; i < n; i++)
![]()
for(int j = sum; j >= w[i]; j--)
{
f[j] = max(f[j],f[j-w[i]]*(1-v[i]));
}
![]()
for(int j = sum; j >= 0; j--)
{
![]()
if(f[j] > 1 - p)
{
cout<<j<<endl;
break;
}
}
}
// system("pause");
return 0;
}
![](http://img.e-com-net.com/image/product/02d0904de3cc460eae11f6902a7115a2.gif)
![](http://img.e-com-net.com/image/product/02d0904de3cc460eae11f6902a7115a2.gif)
![](http://img.e-com-net.com/image/product/02d0904de3cc460eae11f6902a7115a2.gif)
![](http://img.e-com-net.com/image/product/02d0904de3cc460eae11f6902a7115a2.gif)
![](http://img.e-com-net.com/image/product/02d0904de3cc460eae11f6902a7115a2.gif)
![](http://img.e-com-net.com/image/product/02d0904de3cc460eae11f6902a7115a2.gif)