首页 > 其他分享 >联合省选2023 D2T1 过河卒

联合省选2023 D2T1 过河卒

时间:2023-04-24 15:56:41浏览次数:39  
标签:步数 编码 省选 可以 我们 bfs 2023 转移 D2T1

我们可以先 \(dp\),设 \(f_{i,j,k,l}\) 和 \(g_{i,j,k,l}\)表示当前三个棋子分别在点 \(i,j,k\),目前轮到 \(l\) 走,谁胜利,最终会走多少步。

然后我们发现,变成一个有向图博弈。并且 \(l\) 是由 \(i,j,k\) 的奇偶性唯一确定的。就可以在图上直接做了。

首先我们发现,我们其实可以把初始的六个坐标编码成三个 \(i,j,k\),再编码成唯一的一个数对应图上的一个节点。并且最好不要解码出来。因为乘法编码解码的时候要取模,位运算编码占用多余空间大。

然后在可以转移到的状态之间连有向边。链式前向星存图有优势。

我们可以先处理出所有的终止状态:不同颜色点重合的、黑棋子到达终点的、某一方不能动的(也就是度数为 \(0\) 的)。

接下来,我们从所有的终止节点开始倒着 bfs。

一种做法是两次 bfs,在 bfs 的过程中,如果遇到了一定会的转移就转移上去,(例如红一定转移到红胜利的转移),而记录每个点的出度,除非所有能转移到的状态胜利方都和自己不一样,否则不会去转移。

然后再在有结果的方案中再 bfs 一遍,得到最终的步数。

但是我们发现这个其实可以一起做,因为两次都是 bfs,加入方法的判定是一致的。(因为 bfs 得到最终步数最优的证明是在第二种转移中,最后一个有贡献的转移一定是所有合法转移中步数最多的一个,符合败方的需求)我们就可以得到比较优美的做法。

贴一下个人觉得最好的 bfs 片段(by songjiaxing)


        while (l <= r) {
            int u = q[l++];

            if (a[u].f == 1)
                For(i, d[u], d[u + 1]) {
                int v = G[i];

                if (!a[v].f)
                    a[v].f = 2, a[v].g = a[u].g + 1, q[++r] = v;
                else
                    cmin(a[v].g, a[u].g + 1);
            } else
                For(i, d[u], d[u + 1]) {
                int v = G[i];

                if (a[v].f)
                    continue;

                a[v].g = max(a[v].g, a[u].g + 1);

                if (!--a[v].d)
                    a[v].f = 1, q[++r] = v;
            }
        }

标签:步数,编码,省选,可以,我们,bfs,2023,转移,D2T1
From: https://www.cnblogs.com/jucason-xu/p/17349735.html

相关文章

  • 2023五一数学建模ABC题思路解析
    0赛题思路(赛题出来以后第一时间分享)1竞赛信息数学建模竞赛是一项模拟面对实际问题寻求解决方案的活动,是一次近似于“真刀真枪”的创新探索性实践训练。在丰富并活跃学生课外生活活动的同时,数学建模竞赛有助于训练学生的想象力、洞察力和创造力,有助于培养学生团结合作组织......
  • 2023届宝鸡质检[3]文数参考答案
    备忘试题图片参考答案......
  • 【2023-04-23】人可重生
    23:00要热爱读书,它会使你生活轻松;它会友爱地帮助你了解纷繁复杂的思想、情感和事件;它会教导你尊重别人和你自己;它以热爱世界、热爱人类的情感来鼓舞智慧和心灵。                                    ......
  • openEuler Developer Day 2023 电力行业技术创新及应用论坛成功举办
    开放原子开源基金会旗下openEuler社区发起的顶级开发者峰会——openEulerDeveloperDay2023于4月20日-21日在上海召开。麒麟信安作为openEuler项目群白金捐赠人,联合主办本次盛会,并与华为共同承办2023电力行业技术创新及应用论坛。120余位电力行业用户代表、专家、openEuler社......
  • HDCTF2023-Misc-wp
    感谢Byxs20师傅的博客指导:https://byxs20.github.io/posts/21790.html[HDCTF2023]ExtremeMisc放进010editor里,发现有zip压缩包,foremost提取出来打开压缩包里面的文件需要密码直接爆破出来密码是haida得到一个Reserve.piz,放进010editor中,发现是个zip文件,但是每两位的hex值......
  • sb+activiti7实例<二>20230424
    一、版本问题 原Activiti的TijsRademakers团队去开发Flowable框架。现Activiti7是Salaboy团队开发的,内核使用的还是Activiti6,扩展了云化。Activiti5、Activiti6代码目前由Salaboy团队代为维护,目前官宣已经暂停维护  Activiti:Activiti在目前来看有点不思进取,核心功能......
  • 2023年4月24日10:54:52
    今天被震撼到了,原因来自AI时代的力量,我听说未来程序员的代码可以交给ChatGPT这种东西去写,未来的程序员要求的业务并不是深度,而是广度。如果这个AI真的可以把代码写好,那我们人只需要做一个管理者。那我们新机会在哪里呢????我是想不出来。......
  • 产品原型17-20230423
        ......
  • 不用转换!喜马拉雅音频直接下载!2023可用!
    在如今的快节奏生活中,很多人喜欢在空闲时间里聆听音频专辑,其中喜马拉雅音频专辑成为了许多人的首选。喜马拉雅音频专辑包含了各种各样的主题,如广播剧、情感心理、历史人文、娱乐健康等,内容多样丰富,并且主持人已经成为了听众心中的好伙伴。不过,要享受这些音频专辑,您需要先下载一些......
  • idea--工作流activiti插件<->20230424
    idea2019集成activiti,ideaactiviti新建bpmn文件,解决ideaactiviti中文乱码 idea在线安装activiti插件1.File-->Settings2.点击Plugins,右侧界面点击Marketplace后在搜索框搜索actiBPM注:网络原因没有加载出来,实属抱歉.按钮请各位看官自行脑补 -_-! ......