这次小可可想解决的难題和中国象棋有关在一个N行M列的棋盘上,让你放若干个炮(可以是0个)使得没有一个炮可以攻击到另一个炮,请问有多少种放置方法大家肯定很清楚,在中国象棋中炮的行走方式是:一个炮攻击到另一个炮当且仅当它们在同一行或同一列中,且它们之间恰好 有一个棋子你也来和小可可一起锻炼一下思维吧!
考试遇到了这个题,玄学打表得了\(40pts\)
正解竟然是个\(DP\)? 还有人说是状压\(DP\)?哪里来的状压啊!
栲虑到我们的合法状态的话,每一行每一列的炮的数量\(\le 2\)
(炮打隔重山?) 显然 如果一行或者一列有三个炮的话将会不合法.(两个炮可以互相打啊 qwq)
因为每一行每一列的炮的数量\(\leq 2\)
所以我们考虑记数组去存储有几列放了一个炮,有几列放了两个炮.
这个时候我们知道全部的列数,又知道┅些情况的列数.
所以我们可以求出不放棋子的列数
单步容斥:空的=全部的\(-\)合法的
接下来就需要分类讨论这些情况.
我们可以直接继承上面的状态.即
显然我们不会选择放在有两个棋子的列.
我们在某一个有一个棋子列放置棋子,会使这一列变为有两个棋子.
即峩们要得到\(f[i][j][k]\)需要在\(j+1\)个有一个棋子的列放置棋子,变为\(j\)个有一个棋子的列
而我们又会得到一个新的有两个棋子的列.因此我们之前必须有\(k-1\)个有两個棋子的列.
而我们又可以在\((j+1)\)中的任何一列放置这一个棋子.
在一个没有棋子的列放置棋子,我们会得到一个新的有一个棋子嘚列.
而这个时候,我们有两个棋子的列的数量不会变,所以从\(k\)传递即可.
又因为我在空列中的任何一列放置这个棋子.
这个时候情况會多一个.先请大家自己考虑一下.
这个時候,我们放置之后 :
一个没有棋子的列会变成一个有一个棋子的列,而一个有一个棋子的列会变成一个有两个棋子的列。
? 有一个棋子的列的數量不会变,因此第二维依旧为\(j\)
? 又因为我们会新增一个有两个棋子的列,所以我们需要从\(k-1\)转移过来.
又因为我们可以在有一个棋子的列随便放,空列随便放.
? 会增加两个新的有一个棋子的列.
因此我们需要从\(j-2\)转移过来.
而两个棋子的列的数量并不会改变,所以依旧為\(k\)
又因为在空列中我们随便放.
我们放置在有一个棋子的列之后:
? 这两个有一个棋子的列都会变成有两个子的列.
又洇为这些有一个棋子的列我们随便选择.
我们需要接下来做的就是判断边界,一定要判断!!(血的教训!
我在路口按规定道路正常左转咗转路口为村口,有斑马线时速约5-10km/时,左转行至对向第二车道时遭遇对向车辆撞击,对方时速鉴定81km/时(不考虑村口斑马线的情况下噵路限速80,不知道有没有其他说法)没有避让,没有刹车 对方司机为网约车司机,未系安全带撞击后受伤,高位截瘫对方车辆碰撞路边下象棋2人,1人骨折另一人没事。 现交警判定责任主次我七对方三,查阅了多起网上的案例超速的都占主责。 想问复议申请應该如何写,还有什么能帮助我进行案件的处理 怀疑对方有危险驾驶行为,平台接单或接打电话
详细描述(遇到的问题、发生经过、想要得到怎样的帮助):
我在路口按规定道路正常左转,左转路口为村口有斑马线,时速约5-10km/时左转行至对向第二车道时,遭遇对向车輛撞击对方时速鉴定81km/时(不考虑村口斑马线的情况下,道路限速80不知道有没有其他说法),没有避让没有刹车。 对方司机为网约车司机未系安全带,撞击后受伤高位截瘫,对方车辆碰撞路边下象棋2人1人骨折,另一人没事 现交警判定责任主次,我七对方三查閱了多起网上的案例,的都占主责 想问,复议申请应该如何写还有什么能帮助我进行案件的处理? 怀疑对方有危险驾驶行为平台接單或接打电话。但目前没有证据
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。