首页 > 牛客推荐系统开发之选飞行棋子
头像 Karashi
发表于 2021-06-12 20:17:01
C题dp大法好没考虑太多 存储 代表第 人 代表第 个棋子 开了 (1-N)表示在前 个棋子里面选 (0-15)表示四位二进制数,比如“1101”代表一、二、四号选了棋子,三号还没选棋子 至此我们可以推出 比如当 总结下规律,简化代码,可以得到 dp[i][j]=dp[i-1][j 展开全文
头像 ujnxiaochen
发表于 2021-06-11 22:03:57
可能很多人不会搞k阶的容斥,但C题可以偷鸡用5000×5000次循环混过去 思路:一共四个人,即4阶的容斥,但如果枚举前两个人的选择,前两个人的选择已经固定了,那只用处理后两个人,用这两个人的可选方案相乘,再减去第三人和第四人有几个位置数字相同(即可能选重复的)即一层容斥就可以了。 #include 展开全文
头像 JOHNYXU
发表于 2021-06-11 22:35:32
C题 写的有点丑复杂度 每次考虑前i个数中1234号人选 4 张不同的牌有几种做法记为dp1234[i]123号人选 3 张不同的牌有几种做法dp123[i]之后dp12[i]。。。。dp1[1]的含义以此类推 假如第1个人有第 i 张牌那么需要加上第一个人拿第 i 张牌,其余人拿前 i-1 张 展开全文
头像 wxywxywxy_
发表于 2021-06-12 00:35:52
一个渐进意义下 的做法。 代表集合 。 问题转化 考虑一个平凡的转化:考虑去计算所有不合法的方案数。 一个方案不合法当且仅当存在四元组中存在两个位置上的元素相等。 令 为所有位置 上的元素和位置 上的元素相等的四元组构成的集合。 那么我们只需要求出以下式子的值即可: 固定的分类讨论 展开全文
头像 keaixiaoma
发表于 2021-06-12 12:44:40
看到这道题很明显的知道纵向递推是不可取的,所以很自然的想到横向递推。由于只有存在四个人,可以想到枚举每个人取的状态,用状态压缩去转移。空间只需要取500016就行了每次都把上一种棋子取的情况转移过来,能多转移的情况当且仅有此时的状态和上一次的状态当且只有一个位置不同,并且当前状态不同的位置为1并且能 展开全文
头像 夏驰
发表于 2021-06-12 12:45:22
首先这题题型很DP,然后容易想到DP状态f[i][j]为前i个人用前j种棋子的方案数。后来感觉状态转移不太好写(本人太菜),就把第一维改成了四个人有无使用棋子的状态压缩,状态转移就很显然了。这里我用的是刷表法:f[k][j+1] += f[i][j], 当且仅当:1. 在二进制下,i为k的真子集,且 展开全文
头像 whaleshark
发表于 2021-06-12 10:52:18
题目链接第一行和第二行直接暴力枚举,然后维护三个数(以下三个数都为去掉第一行和第二行选过的数),第三行和第四行都有的数的个数two,和第三行自己拥有的数tone,第四行自己拥有的数fone。那么第三行有两种情况,如果选到了tone,第四行随便选,贡献是如果选到了two,第四行选择就少了一个,即时间复 展开全文

等你来战

查看全部