HDU 4778 内存搜索&如压力

HDU 4778 内存搜索&如压力

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

鉴于G宝石,B包。和S。S当代表凑齐每种颜色的宝石S我们可以成为哲学家的石头

每个软件包包含N宝石。分别c1,c2…….

然后他们轮流拿包。每个包可以得到一次。宝石出包放在地上。

假设你可以成为魔法石拿着魔法石,次还这个人拿包。没变成则换人。
魔法石的个数就是获得分数,问两人最优的时候分差是多少。

状压记忆化搜索

一共21个包。状压存当前取包的状态

不管如何取,最后获得的魔法石数量一定

dp[i]表示在i状态下。先手能够获得的最高分数

#include "stdio.h"
#include "string.h"

int aim,g,b,s;
int dp[1<<22],c[25][10];
int bit[25];
int inf=0x3f3f3f3f;

int Max(int a,int b)
{
    if (a<b)return b;
    else return a;
}
int dfs(int cur,int sum,int temp[])
{
    int ans,i,next,j,w,cnt;
    int mark[10];
    if (cur==aim || sum==0) return 0;
    if (dp[cur]!=inf) return dp[cur];

    ans=0;
    for (i=1;i<=b;i++)
        if (cur&bit[i])
        {
            next=cur^bit[i];
            cnt=0;
            for (j=1;j<=g;j++)
            {
                mark[j]=temp[j]+c[i][j];
                cnt+=mark[j]/s;
                mark[j]%=s;
            }
            if (cnt>0) w=cnt+dfs(next,sum-cnt,mark);
            else w=sum-dfs(next,sum,mark);
            ans=Max(ans,w);
        }
    return dp[cur]=ans;
}
int main()
{
    int i,n,x,sum,aim,ans;
    int all[10],mark[25];
    bit[1]=1;
    for (i=2;i<=22;i++)
        bit[i]=bit[i-1]*2;

    while (scanf("%d%d%d",&g,&b,&s)!=EOF)
    {
        if (g+b+s==0) break;
        memset(c,0,sizeof(c));
        memset(all,0,sizeof(all));
        for (i=1;i<=b;i++)
        {
            scanf("%d",&n);
            while (n--)
            {
                scanf("%d",&x);
                c[i][x]++;
                all[x]++;
            }
        }
        sum=0;
        for (i=1;i<=g;i++)
            sum+=all[i]/s;

        aim=bit[b+1]-1;
        memset(mark,0,sizeof(mark));
        memset(dp,inf,sizeof(dp));
        ans=dfs(0,0,mark);
        printf("%d\n",ans-(sum-ans));
    }
    return 0;
}

版权声明:本文博主原创文章,博客,未经同意不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116934.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • phpstorm—下载安装配置教程

    phpstorm—下载安装配置教程本文仅供学习交流使用,如侵立删!联系方式及demo下载见文末PhpStorm是JetBrains公司开发的一款商业的PHP集成开发工具,主要为程序开发者提高开发效率,可深刻理解用户的编码,提供强大的智能代码补全,快速导航以及即时错误检查,大大提高了开发效率,但也为很多开发者带来了不便,phpstorm已经不提供注册码了,需要购买商业的版权才能使用。1、下载phpstrom软件官网:https://www.jetbrains.com/phpstorm/嗯!!!好像打不开了,没有关系,站长已为你准

    2025年7月4日
    1
  • blender导入灰度图生成地形模型「建议收藏」

    blender导入灰度图生成地形模型「建议收藏」安装软件在此处下载blender并安装。添加平面1、打开blender,右键删除初始的立方体。2、shift+a选择平面添加进场景:3、按下s键鼠标拖动调节平面大小确定后按下鼠标左键:4、选择顶部菜单的modeling后再右键选择细分:5、在左下角输入细分的数值后按下回车:导入灰度图1、选择顶部菜单的layout后点击右下角的纹理属性然后新建:2、打开自己的灰度图:3、选择修改器属性:4、添加修改器:置换5、选择刚才添加的纹理:6、地形模型生成成功,但会有锯齿

    2022年6月20日
    56
  • eclipse安装教程详细教程_eclipse中文版教程详细教程

    eclipse安装教程详细教程_eclipse中文版教程详细教程参考与: https://www.cnblogs.com/ForestDeer/p/6647402.html第一步:下载eclipse,并安装。下载链接:http://www.eclip

    2022年8月2日
    5
  • 贴片电阻功率与尺寸对照表文库_贴片电阻功率怎么看

    贴片电阻功率与尺寸对照表文库_贴片电阻功率怎么看电阻封装尺寸与功率关系,通常来说:02011/20W 04021/16W 06031/10W 08051/8W 12061/4W电容电阻外形尺寸与封装的对应关系是:0402=1.0×0.51/16W 0603=1.6×0.81/16W~1/10W 0805=2.0×1.21/10W~1/8W 1206=3.2×1.61/8…

    2022年8月21日
    6
  • 查询mysql的隔离级别_怎么查看数据库隔离级别

    查询mysql的隔离级别_怎么查看数据库隔离级别CPUQuota=value该参数表示服务可以获取的最大CPU时间,value为百分数形式,高于100%表示可使用1核以上的CPU。与cgroupcpu控制器cpu.cfs_quota_us配置项对应。MemoryLimit=value该参数表示服务可以使用的最大内存量,value可以使用K,M,G,T等后缀表示值的大小。与cgroupmemory控制器…

    2022年5月26日
    43
  • wireshark tcpdump抓包(wireshark抓包arp解析)

    本文来自网易云社区当我们需要跟踪网络有关的信息时,经常会说“抓包”。这里抓包究竟是什么?抓到的包又能分析出什么?在本文中以TCP/IP协议为例,简单介绍TCP/IP协议以及如何通过wireshark抓包分析。Wireshark是最著名的网络通讯抓包分析工具。功能十分强大,可以截取各种网络封包,显示网络封包的详细信息。Wireshark下载安装,略。注意,若在Windows系统安装Wireshar…

    2022年4月18日
    55

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号