首页 > 其他分享 >CF623E Transforming Sequence

CF623E Transforming Sequence

时间:2023-07-27 18:35:36浏览次数:55  
标签:ch Sequence Transforming res CF623E poly int Mul size

难点在于卡 __int128(?)。

首先 \(N>K\) 显然无解,只需考虑 \(N\le K\) 的情况。然而这并没有什么用。

把 \(b\) 看作集合,显然 \(b_i\subset b_{i+1}\)。所以令 \(f_{n,i}\) 为考虑到 \(b_n\) 且 \(|b_n|=i\) 的方案数,集合元素无序,即选择 \(\{A,B,C\}\) 或者 \(\{A,B,D\}\in \{A,B,C,D\}\) 看作不同方案,且不考虑其它 \(k-i\) 种元素。有如下转移:

\[f_{n,i}=\sum\limits_{j=0}^if_{n-1,i-j}\dbinom{i}{j}2^{i-j} \]

即考虑 \(b_n\setminus b_{n-1}\) 的大小,从 \(b_n\) 中有的选出 \(|b_n\setminus b_{n-1}|\) 个一定要选,另外 \(|b_{n-1}|\) 个元素对于 \(a_n\) 可以任意选择。

把转移形式写得好看一点:

\[f_{n,i}=\sum\limits_{j=0}^if_{n-1,i}\dbinom{i}{j}2^j \]

\[\text{ans}=\sum\limits_{i=1}^{K}f_{N,i}\dbinom{K}{i} \]

注意到 \(f\) 的转移组合数拆开后可以写成卷积的形式,于是我们有了 \(O(NK\log K)\) 的做法,然而这还是没有什么用。

但是注意到,\(f_{n}\) 其实能从任意的 \(a+b=n\) 转移而来,具体地:

\[f_{n,i}=\sum\limits_{j=0}^if_{a,j}f_{b,i-j}\dbinom{i}{j}2^{bj} \]

原理是类似的,考虑 \(b_n\) 和 \(b_a\) 的关系,枚举 \(b_a\) 的大小,从 \(i\) 个元素中选出 \(j\) 个来自 \(b_a\),剩下 \(b_{a+1}\setminus b_a,b_{a+2}\setminus b_a,\cdots ,b_{n}\setminus b_a\) 这些集合显然也满足前面是后面的子集,于是对这 \(b\) 个集合,用 \(f_{b,i-j}\) 枚举这样的集合序列的方案数,最后这些集合对于 \(b_a\) 中原本有的元素都可以任意挑选。

然后就是套路了,令 \(a=\left\lfloor\dfrac{n}{2}\right\rfloor\),\(b=\left\lceil\dfrac{n}{2}\right\rceil\),分治求解即可。复杂度 \(O(K\log K\log N)\)。

要写任意模数 NTT,不能 #define int __int128

彩蛋:

(官方题解:)We decided to ask the answer modulo \(10^9+7\) to not let the participants easily guess that these problem requires FFT

标签:ch,Sequence,Transforming,res,CF623E,poly,int,Mul,size
From: https://www.cnblogs.com/Ender32k/p/17585748.html

相关文章

  • DeepObfusCode:Source Code Obfuscation Through Sequence-to-Sequence Networks
    一、Introduction代码混淆技术旨在解决代码逆向对抗问题。本质上,代码混淆技术的目标是:在保持一个程序逻辑结构不变以及完整保存的前提下,同时让攻击者不易识别,以此保护软件的完整性和知识产权。传统的防护策略包括:插入空白/冗余的逻辑运算增加不必要的条件运算等传统的混淆......
  • [AGC024F] Simple Subsequence Problem
    ProblemStatementYouaregivenaset$S$ofstringsconsistingof0and1,andaninteger$K$.Findthelongeststringthatisasubsequenceof$K$ormoredifferentstringsin$S$.Iftherearemultiplestringsthatsatisfythiscondition,findthelexic......
  • [ARC150F] Constant Sum Subsequence
    ProblemStatementWehaveasequenceofpositiveintegersoflength$N^2$,$A=(A_1,\A_2,\\dots,\A_{N^2})$,andapositiveinteger$S$.Forthissequenceofpositiveintegers,$A_i=A_{i+N}$holdsforpositiveintegers$i\(1\leqi\leqN^2-N)$,an......
  • Postgres学习笔记-Sequence自增序列
    Sequence:根据指定的规范生成整数序列创建序列CREATE[TEMPORARY|TEMP]SEQUENCEname[INCREMENT[BY]increment][MINVALUEminvalue|NOMINVALUE][MAXVALUEmaxvalue|NOMAXVALUE][START[WITH]start][CACHEcache][[NO]CYCLE]......
  • POJ 1458 Common Subsequence(动态规划)
    传送门代码如下:#include<iostream>#include<cstdio>usingnamespacestd;intmaxLen[1000][1000];intmain(){strings1,s2;while(cin>>s1>>s2){intlength1=s1.length();intlength2=s2.length();......
  • 【大联盟】20230703 T2 开心的序列(sequence) 题解 AT_agc049_f 【[AGC049F] Happy Sequ
    zak/bx恐怖zak将这题加强,出到模拟赛。直接把\(A_i,B_i\le10^5,C_i\le5\)变成了\(A_i,B_i,C_i\le10^9\)。非常恐怖。题目描述点击膜拜zhoukangyang。题解重新再理解一遍。我们维护\(p(x)=\sum_i|a_i-x|+|b_i-x|\),那么就相当于要求\(\forallx,p(x)\le0\),也就......
  • Subsequence Addition
    #SubsequenceAddition(HardVersion)##题面翻译本题为困难版,两题的唯一区别在于数据范围的大小。数列$a$最开始只有一个数$1$,你可以进行若干次操作,每次操作你可以选取$k$个数($k$无限制,小于等于$a$的大小即可),将这$k$个数的和放入$a$的任意一个位置。给定一个长......
  • Luogu P4552 [Poetize6] IncDec Sequence 更好的题解
    原题链接第一步对于学过差分的人应该不难想定义差分数组$dis\quads.t.\quaddis[i]=a[i]-a[i-1]$那么不难发现问题一只要让\(dis[2]...dis[n]\)中全部为\(0\)即可区间\([l,r]\)加一操作在差分数组中意味着\(dis[l]=dis[l]+1,dis[r+1]=dis[r+1]-1\)即在差分数组......
  • CF1132G Greedy Subsequences
    简单题。\(i\)向\(i\)后第一个\(j\),\(a_j\)比\(a_i\)大的点连边,不难发现最后形成了一棵森林,并且一个点的父亲\(\text{fa}_i>i\)。题目变成了取\([l,r]\)中的点为起点,向祖先方向走去并且终点编号\(\ler\)的最长链长度。考虑离线,维护从每个点开始的最长链长度\(f_i......
  • ARC145F Modulo Sum of Increasing Sequences
    为数不多不用多项式科技的单位根反演题。\(A\)不降比较难搞,所以首先令\(B_i=A_i+i-1\),则\(B\)单调递增。转化为对任意的\(k\in[0,\text{MOD}-1]\),求在\([0,N+M-1]\)中选\(N\)个不同的数,总和对\(\text{MOD}\)取模为\(k\)的方案数。记\(p=\text{MOD},n=N+M\)。列出......