社区讨论
求助
学术版参与者 4已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @m621pad9
- 此快照首次捕获于
- 2025/01/18 18:28 去年
- 此快照最后确认于
- 2025/11/04 11:22 4 个月前
我在写代码时有一行是这样的:


这一行的输出是这样的:

请问是VS出bug了吗(我用的VS)
源代码:
CPP#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
const int N=100;
const int M=N*100;
int t;
double P;
int n;
struct node{
int m;
double p;
}a[N+5];
double dp[M+5];
int cnt[M+5];
void solve()
{
cin>>P>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i].m>>a[i].p;
a[i].p=1-a[i].p;
}
for(int i=1;i<=M;i++) dp[i]=-1;
//cout<<dp[0]<<" "<<dp[1]<<"\n";
for(int i=1;i<=n;i++)
{
for(int j=M;j>=a[i].m;j--)
{
if(dp[j-a[i].m]==-1) continue;
//cout<<dp[j]<<" "<<dp[j-a[i].m]+a[i].p<<" ";
if(dp[j]==-1||dp[j]<dp[j-a[i].m]+a[i].p)
{
dp[j]=dp[j-a[i].m]+a[i].p;
cnt[j]=cnt[j-a[i].m]+1;
}
//cout<<cnt[j]<<" "<<j<<" "<<dp[j]<<" ";
}
//cout<<"\n";
}
for(int i=M;i>=0;i--)
{
if(i==4)
{
double res=cnt[i]*1.00-dp[i];
cout<<(res==res)<<" "<<(0.06==0.06)<<" "<<(res==0.06)<<" "<<res<<"\n";
cout<<(res==0.06)<<"\n";
}
if(cnt[i]*1.00-dp[i]>P||dp[i]==-1) continue;
cout<<i<<"\n";
return;
}
cout<<0<<"\n";
}
signed main()
{
cin>>t;
while(t--)
{
solve();
}
return 0;
}
回复
共 6 条回复,欢迎继续交流。
正在加载回复...