首页 > 其他分享 >一双木棋 chess

一双木棋 chess

时间:2024-02-04 15:00:46浏览次数:21  
标签:状态 拐点 一行 木棋 棋子 chess 一双 变成 描述

轮廓线DP,最主要的就是把轮廓给描述出来

这道题目很容易发现一个性质,就是他的轮廓一定是长成阶梯(锯齿)状的

于是我本人想到的一个状态描述就是去描述拐点:用两个二进制数表示行和列的拐点(为\(1\)则表示对应行/列有拐点),最开始从左下开始向上走,遇到行的拐点就变成向右走,遇到列的拐点又变成向上走,如此反复

但是这种状态表示需要判断是否合法,而且转移很麻烦

于是看看这篇题解

这篇题解的想法也比较容易想到,但说实话还是有点麻烦

我们来看看最简单的一种状态

画图之后可以发现每行的棋子数是一个递增序列,即上一行的棋子数一定比下一行多,而且每一行的棋子都是从左往右那么多个,也就是说确定了每一行的棋子数就确定了整个局面,所以关键就是如何简洁地表示一个递增序列

我们可以先写\(m\)个\(0\),然后看每一行,有几个棋子就在第几个\(0\)后面插入一个\(1\)

首先我们先写出\(5\)个\(0\),即\(00000\)

然后看第一行,有四个黑点,于是再第四个\(0\)后面放上一个\(1\),变成\(000010\)

其他行依次类推,最后变成了\(1011010010\)

于是我们可以发现我们放一个棋子,就是把当前状态的某一个子串\(10\)(注意一定是\(1\)在\(0\)的前面,而且两者是挨着的)变成\(01\)(即交换两者顺序),而且只要我们最开始的状态合法,是按这个规则交换的,那么交换后的状态也一定合法

所以代码复杂度要小很多,具体见洛谷

所以以后这种锯齿状的可以考虑这么去描述轮廓

标签:状态,拐点,一行,木棋,棋子,chess,一双,变成,描述
From: https://www.cnblogs.com/dingxingdi/p/18006186

相关文章

  • 世微 降压恒流 12V 5A 一切一双灯 LED汽车大灯驱动方案 AP5191
    AP5191是一款PWM工作模式,高效率、外围简单、内置功率MOS管,适用于4.5-150V输入的高精度降压LED恒流驱动芯片。输出功率150W,电流6A。AP5191可实现线性调光和PWM调光,线性调光脚有效电压范围0.55-2.6V.AP5191工作频率可以通过RT外部电阻编程来设定,同时内置抖频电路,可以降低对......
  • 组织架构调整也许是把你从焦油坑中拉出来的一双手~
    好久没有更新博客,主要是最近的工作内容发生了一些变化,心态和状态也发生了一些变化~,所以随便聊聊总结一下。以前的工作过去的一年时间里,主要从事网关相关的内容,也就是Openresty以及一些管理后台的编写,go、lua、前端Vue都需要自己写,整个模块又多,又复杂。开始的兴趣点很足,觉得学习最......
  • CF36D New Game with a Chess Piece 题解
    前言:都大半年没在洛谷上提交过题解了。SPOJ上有双倍经验,题号为SP7602。我看题解区的大佬们有的正经用博弈论做,有的打表,但是感觉没有讲得很形象,这篇题解将生动讲述打表做法,同时为了让大家在感性理解后,还可以理性理解,会附上证明(这部分参考了别的题解)。正文:Step1:打表找规律......
  • 一支笔,一双手,一道力扣(Leetcode)做一宿
    (文章目录)一、分享自己相关的经历我是一名计算机专业的学生,之前在学习算法和数据结构时,对于简单题目还算能够顺利地刷过去。但是当我开始尝试刷一些medium难度的题目时,就感觉自己卡在原地了。明明看过题解,知道解题思路,但真正动手做题时,就觉得无从下手,甚至一道题目做了好几天都......
  • [python+opencv]从0开始的ChineseChessOL项目
    背景暑假某日,家父突然提出想我做一个象棋的程序。由于在上个学期,我学过一点java的网络编程,也搭建了一台自己的服务器(腾讯云,后面考),同时考虑到下象棋没有什么复杂的算法,于是欣然答应。项目地址纯代码在github,完整客户端(包含所需要的图片和一个python安装包)在个人网页目前的版本......
  • E. Two Chess Pieces -- (codeforces) 树形DP
    原题链接:https://codeforces.com/contest/1774/problem/E题意:两颗棋子,给出两颗棋子必须要去的顶点,且给出两颗棋子的相隔距离不能大于d,算出两颗棋子完成目标后走的距离。最后两颗棋子都要回到顶点1上。思路:刚开始没想出来,顺着官方题解写的,大意就是我用数组s1和s2代表两颗棋子......
  • 【题解】P4363 [九省联考 2018] 一双木棋 chess
    原题链接题目描述菲菲和牛牛在一块\(n\)行\(m\)列的棋盘上下棋,菲菲执黑棋先手,牛牛执白棋后手。棋局开始时,棋盘上没有任何棋子,两人轮流在格子上落子,直到填满棋盘时结束。落子的规则是:一个格子可以落子当且仅当这个格子内没有棋子且这个格子的左侧及上方的所有格子内都有棋......
  • codeforces 559C Gerald and Giant Chess(dp+组合数学)
    题目链接:codeforces559C题目大意:给出一个h*r的矩阵,从左上角走到右下角,中间有一些点不能经过,问不同的路径有多少种?题目分析:首先我们考虑一个n*m的矩阵,从左上角只能向右或向下走能走到右下角的方案数,也就是C(n+m,n),就是一共要走n+m次,选出n次横着走。那么我们定义dp[i]表示在前不经......
  • UVa 10161 Ant on a Chessboard (简单数学)
    10161-AntonaChessboardTimelimit:3.000secondshttp://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=99&page=show_problem&problem=1102Background  Oneday,anantcalledAlicecametoanM*Mchessboard.Shewan......
  • Auto Chess (双指针, 极角排序)
    题目大意:释放一个45都的技能去尽可能消灭更多的敌人(在一个平面里面)  思路:技能是无线长的,于是抛弃无用信息,只保留斜率即可然后利用双指针,或者二分去做即可 ......