首页 > 其他分享 >YC284A [ 2024054 CQYC省选模拟赛 T1 ] 数数(count)

YC284A [ 2024054 CQYC省选模拟赛 T1 ] 数数(count)

时间:2024-05-07 22:14:28浏览次数:29  
标签:2024054 count AB dbinom ... 省选 物品 n1 n2

题意

现在有四种物品,分别有 \(n1, n2, n3, n4\) 个,有多少种排列物品的方案使得任意两个相邻物品的种类不同。

\(0 \le n1, n2 \le 500, 0 \le n3, n4 \le 5 \times 10 ^ 4\)

Sol

注意到 \(n1\),\(n2\) 特别小。

设四个物品分别为 \(C, D, A, B\)。

考虑先插入 \(C, D\),再考虑 \(A, B\) 插入的贡献。

设 \(f_{i, j, k, 0/1}\) 表示已经放了 \(i\) 个 \(C\) 物品,放了 \(j\) 个 \(D\) 物品,有 \(k\) 个相邻物品不合法,最后放了 \(0/1\)。

转移是简单的。

于是问题变成了,有 \(n1 + n2 + 1\) 个空隙,选 \(i\) 个空隙,其中我们钦定 \(j\) 个空隙必选,求 \(A, B\) 物品在每一段中合法的方案数。

显然,对于一个状态,\(C, D\) 物品的贡献为 \(f_{n1, n2, j, 0} + f_{n1, n2, j, 1}\)。

考虑怎么将 \(A, B\) 插入进去。

注意到显然每一段要么是形如 \(AB...A\),或是 \(BA...B\),以及 \(AB...B\)。

因为空隙数只有 \(n1 + n2 + 1\) 个,而每一段 \(A\) 与 \(B\) 的个数之差至多变化 \(1\)。

所以这个差值是不大的。

考虑由 \(k\) 枚举 \(BA...B\) 段的个数。

设 \(n = n3, m = n4\),且 \(n \ge m\)。

显然,由 \(A\) 物品与 \(B\) 物品的差值可以算出 \(AB...\) 段的个数。

\[AB...A = n - m + k \]

而对于 \(AB...B\) 段,可以通过剩余的空隙个数算出。

\[AB...B = i - n + m - 2k \]

对于 \(A, B\) 没有填完的部分,则放在一起,当成 \(AB\) 填。

显然,对于 \(i\) 个位置都可以随便填,球同盒不同可空,插板即可。

答案就是:

\[\dbinom{n - i - 1}{k - 1}\dbinom{i - j}{n1 + n2 + 1 - j} \dbinom{k}{i} \dbinom{n - m + k}{i - k} g_i \times 2 ^ {i - n + m - 2k} \]

标签:2024054,count,AB,dbinom,...,省选,物品,n1,n2
From: https://www.cnblogs.com/cxqghzj/p/18178508

相关文章

  • YC281A [ 20240429 CQYC省选模拟赛 T1 ] 玫瑰(rose)
    题意给定数列\(A,B,C\),每次操作,你可以花\(1\)的代价将\(A_i\)或\(B_i\)或\(C_i\)增加\(1\)。求使得三个数列每个元素排名相同的最小代价。\(n\le500\)Sol很厉害的题目。首先注意到这个最优方案只和前缀最大值有关,考虑设\(f_{i,j,k}\)表示当前状态枚举到了......
  • CountSort
    有一种简单的排序算法叫作计数排序。这种算法对一个待排序表(用数组A[]表示)进行排序排序结果存储在另一个新的表中(用数组B[]表示),表中关键字为int型。必须注意的是,表中所有待排序的关键字互不相同,计数排序算法针对表中的每个关键字,扫描待排序表一趟,统计表中有多少个关键字比......
  • EXP-00056: ORACLE error 12154 encountered
    使用如下命令:--exp用户名/密码@数据库实例名file=导出文件名[参数]expscott/scott@orclfile=/expdat.dmpfull=y--正确方式expscott/scott@CONN_orclfile=/expdat.dmpfull=y出现了如下错误:EXP-00056:ORACLEerror12154encounteredORA-12154:TNS:couldnotr......
  • 忘记zabbix监控平台Admin用户密码:Incorrect user name or password or account is tem
    如下图(实在想不起密码不要紧我们直接重新设置它):1.登入zabbix数据库[root@SJYS-Test1~]#mysql-uroot-pEnterpassword:WelcometotheMariaDBmonitor.Commandsendwith;or\g.2.进入zabbix库,查询users用户表MariaDB[(none)]>usezabbix;MariaDB[zabbix]>select......
  • [省选联考 2021 A 卷] 矩阵游戏
    如果直接构造的话由于有a范围的限制,同时还要满足b的性质,非常恶心。考虑将两个性质分开考虑。首先如果我们确定了矩阵的第一行和第一列,那么我们就可以确定这个矩阵了。我们先构造出一个合法的矩阵,然后再对矩阵的第一行和第一列进行微调,是所有数都没满足范围。容易想到,比如要将\(a_......
  • qoj1138 Counting Mushrooms
    交互题。有一个隐藏的01序列\(a\),你只知道\(a\)的长度,并记为\(n\)。保证\(a_1=0\)。你可以执行以下操作:询问一个序列\(b\),满足两两不同且长度在\([2,1000]\)之间。交互库会返回\(\sum[a(b_i)\not=a(b_{i+1})]\)。请在\(226\)次操作内求出\(a\)中\(0\)......
  • BinaryTree_CountLeafNode
    /*******************************************************************************************************@filename: :StacksSimulateQueue*@brief :两个栈实现队列的功能*@author :[email protected]*@date :2024/05/04*@version......
  • python - Counter简单使用
    统计元素数量,并返回字典,键为元素,值为个数fromcollectionsimportCounterlst=['a','b','c','d','a','b','a','c','c','c']dic=Counter(lst)print(dic)#Counter({'c......
  • YC278A [ 20240420 CQYC省选模拟赛 T1 ] 作画(paint)
    题意给定排列\(S\),最初\(S_i=i\)。每次进行以下操作,进行\(t\)次。选择下标\(i,j\),使得\(S_i=S_j\)。求进行\(t\)次后,\(S\)有至少\(k\)种数字的概率。\(n\le10,t\le10^{18}\)。Sol考虑概率转方案,变为有多少种方案使得最终状态有\(k\)种数字。不......
  • CSS Counter Styles
    CSSCounterStyles允许您自动对HTML文档中的元素进行编号或标记。我们定义一个具有特定名称和起始值的counter,然后根据CSS规则递增或递减该计数器。使用counter-reset属性定义计数器,设置其起始值,然后使用counter-increment属性根据需要递增或递减计数器。还可以使......