如果发现广告等破坏行为,请尽量将条目恢复到较早的版本而不是把相应内容直接删除,谢谢合作。

URAL/1326

来自"NOCOW"

跳转到: 导航, 搜索

啊~实在不想写了。。。

所以就直接暴力啦~

其实不用枚举这麽多状态的。。。

#include <iostream>
#include <cstring>
using namespace std;
int n,m,t1,t2,target=0,tot=0,ans=(~0U>>1);
int t[121][2]={0},f[1<<20];
int main()
{
    cin >> n;
    for (int i=0;i<n;++i)
    {
        cin >> t[++tot][0];
        t[tot][1]=(1<<i);
    }
    cin >> m;
    for (int i=1;i<=m;++i)
    {
        cin >> t[++tot][0] >> t1;
        for (int j=1;j<=t1;++j)
        {
            cin >> t2;
            t[tot][1]|=(1<<t2-1);
        }
    }
    cin >> t1;
    for (int i=1;i<=t1;++i)
    {
        cin >> t2;
        target|=(1<<t2-1);
    }
    memset(f,44,sizeof(f));
    f[0]=0;
    for (int i=1;i<=tot;++i)
        for (int j=0;j<(1<<n);++j)
            f[j|t[i][1]]=min(f[j|t[i][1]],f[j]+t[i][0]);
    for (int i=0;i<(1<<n);++i)
        if ((target&i) >= target)
            ans=min(ans,f[i]);
    cout << ans << endl;
    return 0;
}
//by zzy
个人工具