首页 > 其他分享 >cf1599j-solution

cf1599j-solution

时间:2024-02-28 13:57:44浏览次数:19  
标签:10 cf1599j 元素 solution 偶数 cdots 集合 cases

CF1599J Solution

link

题意:

给你一个长为 \(n\) 的序列 \(b\),请你构造一个长为 \(n\) 的序列 \(a\),满足 \(b\) 中的数都能由 \(a\) 中两个不同下标的数相加得到。

无解报告 NO,\(n\le 10^3,b_i\le10^6\)。


我们发现如果我们能用 \(a_1\sim a_m\) 来凑出 \(b_1\sim b_m\),剩下的令 \(a_i=b_i-a_{i-1}\) 即可满足条件。

考虑 \(m=3\) 的情况。假设

\[\begin{cases} a_1+a_2=b_1\\ a_2+a_3=b_2\\ a_3+a_1=b_3\\ \end{cases}\]

解得

\[\begin{cases} a_1=\dfrac{-b_1+b_2+b_3}{2}\\\\ a_2=\dfrac{b_1-b_2+b_3}{2}\\\\ a_3=\dfrac{b_1+b_2-b_3}{2}\\ \end{cases}\]

有整数解当且仅当 \(b_1+b_2+b_3\) 为偶数。

也就是说,只要 \(b\) 中存在至少一个偶数,我们把它挑出来拉上另外两个奇数或者两个偶数解上述方程,再令剩下的 \(a_i=b_i-a_{i-1}\) 即可满足条件。

那么如果 \(b\) 中只有奇数呢?

这个时候我们考虑 \(m\) 为偶数的情况。

\[\begin{cases} a_1+a_2=b_1\\ a_2+a_3=b_2\\ a_3+a_4=b_3\\ \cdots\\ a_{m-1}+a_m=b_{m-1}\\ a_m+a_1=b_m\\ \end{cases}\]

你发现这个方程组竟然不是线性无关的,就是说用前 \(m\) 条方程本可以推出

\[a_m+a_1=b_1+b_3+\cdots+b_{m-1}-b_2-b_4-\cdots-b_{m-2} \]

这个方程组要么无解,要么有无数组解(当且仅当 \(b_1+b_3+\cdots+b_{m-1}-b_2-b_4-\cdots-b_{m-2}=b_m\))。

也就是说偶数项的 \(b\) 和等于奇数项的 \(b\) 和。

那么我们只需要找到 \(b\) 中的两个不相交的,大小相同的集合 \(S,T\) 满足 \(S\) 的元素和等于 \(T\) 的元素和即可。

一旦找到,我们随便代个 \(a_1\) 进去解出 \(a_1\sim a_m\),令剩下的 \(a_i=b_i-a_{i-1}\) 即可。

想想看怎么找到 \(S\) 和 \(T\)。由于值域只有 \(10^6\),直觉告诉我们一般情况下都是有解的。

考虑两个大小为 \(k\) 的集合,它们的各自的元素和 \(\le k\times 10^6\),而把 \(2k\) 个元素分为这两个集合的方案数是 \(\binom{2k}k\)。

当 \(\binom{2k}k>k\times 10^6\) 时,根据抽屉原理,必定能找到两个集合的元素和相等。

我们再把这两个集合的公共部分去除就得到想要的 \(S\) 和 \(T\) 了。

摁摁计算器发现 \(\binom{28}{14}=40116600>14\times 10^6\),也就是说 \(n\ge 28\) 时必定有解。

下面我们按照 \(n\gets \min(n,28)\) 来求方案。

考虑暴力搜索,先搜索前 \(\frac n 2\) 个数枚举每个数在 \(S\) 中,在 \(T\) 中或是不在任何集合中。

把搜到的 \(S,T\) 的大小差和元素和的差塞进哈希表里。再同理搜剩下的数,搜完后在哈希表找即可。

运行次数 \(\sim3^{14}\),常数巨大。

标签:10,cf1599j,元素,solution,偶数,cdots,集合,cases
From: https://www.cnblogs.com/iorit/p/18040126

相关文章

  • cf1583h-solution
    CF1583HSolutionlink第一问容易处理,将边权从大到小排序,并查集维护一下连通块最大值简单搞搞就好。考虑第二问。我们对原树,按照\(t\)的权值建造克鲁斯卡尔重构树,那么两点的lca权值即它们路径上边权最大值。同样按照边权\(c\)从大到小将边排序,维护连通块内最大值的同时,维......
  • cf1555f-solution
    CF1555FSolutionlink分析一张图中的环,我们可以考虑把图表示为一棵生成树加上许多非树边。对于这题,我们考虑动态维护一片森林,在每次准备加一条边\((u,v)\)时:如果这条边加进去后与森林不形成环,那么它与图肯定也不形成环,那么直接加进森林中。如果这条边是森林的一条非树......
  • cf1553f-solution
    CF1553FSolutionlink首先显然地\(\displaystylep_i=p_{i-1}+\sum_{j=1}^{i-1}a_j\bmoda_i+\sum_{j=1}^{i-1}a_i\bmoda_j\)。那么两部分分开来算。\(\displaystyle\sum_{j=1}^{i-1}a_j\bmoda_i\):我们知道\(x\bmody=x-y\lfloor\fracxy\rfloor\),那么我们先把答案加上......
  • cf1548c-solution
    CF1548CSolutionlink题意说人话就是每次给\(x\)求\(\displaystyle\sum_{i=1}^n\binom{3i}x\)。由于多组询问,考虑能不能生成函数。设\[\begin{aligned}f_k&=\sum_{i=1}^n\binom{3i}k\\F(x)&=\sum_{i=0}^\inftyf_{i}x^i\\&=\sum_{i=0}^\infty\sum_{j=1}^n\bin......
  • cf1491h-solution
    CF1491HSolutionlink考虑分块。按照点的编号分块,维护\(b_i\)表示\(i\)往上跳遇到的第一个与\(i\)异块的点。对于散块修改,直接暴力重构整块的\(b\)。重构方式是,如果\(a_i\)与\(i\)异块,则\(b_i\getsa_i\);否则\(b_i\getsb_{a_i}\)。对于整块,打标记维护整体减了多......
  • cf1491e-solution
    CF1491ESolutionlink首先,把一棵大小为\(f_i\)的树切成两棵树只能是切成\(f_{i-1}\)和\(f_{i-2}\)的,而且最多只有两种切的方案。证明考虑分类讨论是否有大小为\(f_{i-1}\)的子树(以\(1\)为根)即可,感性理解就好。接下来你可以选择每次暴力通过两种割边方案递归检验,但是......
  • cf1487g-solution
    CF1487GSolutionlink想一想没有字符的限制怎么做。首先,没有长度大于一的奇回文串显然等价于没有长度为\(3\)的回文串。也就等价于\(\foralli\in[1,n-2],s_i\not=s_{i+2}\)。那么在没有限制的情况下,我们确定好了前两位字符,后面的\(n-2\)位各有\(25\)种字符可选。方......
  • cf1446d2-solution
    CF1446D2Solutionlink首先,最终答案区间中的众数一定包括整个序列的众数\(K\)。证明:设这个区间中众数出现次数为\(cnt\)。如果上述不成立,由于\(K\)在这个区间中出现次数小于\(cnt\),我们将区间向两边延申,\(K\)的出现次数应当不断增加直到等于区间的众数出现次数。这样子......
  • cf1396d-solution
    CF1396DSolutionlink题面:给你一个\(L\timesL\)的矩形,有\(n\)个点放在不同的格子内,每个点有颜色,共\(k\)种颜色,求有多少个矩形满足其内部含有所有颜色的点,对\(10^9+7\)取模。\(k\len\le2000,L\le10^9\)。首先离散化。看到数据范围说明可以枚举矩形的某个端点或者......
  • cf1340d-solution
    CF1340DSolutionlink手❤玩❤一❤下,答案大概就是所有点的度数最大值。下面证明。首先这个肯定是答案的下界,因为度数最大的点至少被经过了它的度数次。现在考虑构造。对于一棵以\(u\)为根的子树,如果我们能证明第一次到\(u\)的时间是\(t\),最后一次到\(u\)的时间是\(t-......