发现一个神奇的东东
查看原帖
发现一个神奇的东东
247269
MSqwq楼主2020/12/26 11:43

关于memset和for循环复制好像是不一样的 比如:

#include<bits/stdc++.h>
using namespace std;
struct qwe{
    int x,y;
}a[300];
bool cmp(qwe x,qwe y)
{
    return x.y>y.y;
}
int n,f[100010],sum,ans=1e9;
int qian[300];
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)cin>>a[i].x>>a[i].y;

    sort(a+1,a+1+n,cmp);
    //for(int i=1;i<=100009;i++)f[i]=1;
    memset(f,1,sizeof(f));
    f[0]=0;
    for(int i=1;i<=n;i++)qian[i]=qian[i-1]+a[i].x;
    for(int i=1;i<=n;i++)
    {
        for(int j=sum;j>=0;j--)
        {
            f[j+a[i].x]=min(f[j+a[i].x],max(f[j],a[i].y+a[i].x+j));
            f[j]=max(f[j],a[i].y+qian[i]-j);
        }
        sum+=a[i].x;
    }
    for(int i=1;i<=sum;i++)ans=min(ans,f[i]);
    cout<<ans;
}

这个题用memset就可以得到正确答案,但是for循环却不得行(??

for(int i=1;i<=100009;i++)f[i]=1;
memset(f,1,sizeof(f));

memset:

for循环:

不知道为啥qwq

2020/12/26 11:43
加载中...