正文

zoj 30102009-08-09 11:21:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/hujixiang/46328.html

分享到:

DFS,规模很小,直接搜过#include<iostream>using namespace std;int n;double sum,m;bool mark[11],escape;struct vex{    int num,count[11];    double per;}a[12];void dfs(int si,int num,double max){    int total=0,i;    double temp;    if(num==n)    {        if(max>sum)sum=max;        escape=1;        return;    }    if(si==n+1)return;    for( i=1;i<=a[si].num;i++)    {        if(mark[a[si].count[i]]){mark[a[si].count[i]]=0;total++;}        else {mark[a[si].count[i]]=1;total--;}            }    temp=max;    max=max*(1-(a[si].per/100));    dfs(si+1,num+total,max);    total=0;    for(i=1;i<=a[si].num;i++)    {        if(mark[a[si].count[i]])mark[a[si].count[i]]=0;        else mark[a[si].count[i]]=1;    }        dfs(si+1,num,temp);}int main(){    int i,j;    while(cin>>n>>m &&(n))    {        escape=0;        memset(mark,1,sizeof(mark));        for(i=1;i<=n;i++)        {            cin>>a[i].num;            for(j=1;j<=a[i].num;j++)                cin>>a[i].count[j];            a[i].count[j]=i;            a[i].num++;            cin>>a[i].per;        }        sum=0;        dfs(1,0,m);        if(escape)printf("%.2lf\n",sum);        else printf("-1\n");    }    return 0;}

阅读(1658) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册