题解 CF441A 【Valera and Antique Items】

发布于 2020-03-05


RE了好久,结果发现是system("pause");的错误。

首先,看到这道题目,可能很多萌新和我一样是一脸茫然的。“这不是背包/动规吗?怎么成入门题了呢?”

先别急,仔细看题目后,我们可以把题目概括成这样:

有n组数,第i个组数有ki个数字。只要你的数字高于第i个数,这一组数字就属于你了。问你能得到几组数字?分别是第几组?

这样就简单很多了吧......

只要这个数组的数有一个小于你的数,就可以把ai标记为1。最后输出ans即可。

上代码:

#include<bits/stdc++.h>
using namespace std;
int n,an,x,nx,ans;
int a[51];
int main()
{
    cin>>n>>an;
    for(int i=1;i<=n;i++)
    {
        cin>>nx;//输入个数
        for(int j=1;j<=nx;j++)
        {
            cin>>x;
            if(x<an) a[i]=1;//桶排序
        }
        if(a[i]==1) ans++;//如果有的话,ans++
    }
    cout<<ans<<endl;
    for(int i=1;i<=n;i++) if(a[i]==1) cout<<i<<" ";
    //system("pause");
    return 0;
}

值得一提的是:ans是你得到的数组数量,而不是你能得到的数字的数量。