首页 > 其他分享 >2024/10/2 CSP-S模拟赛

2024/10/2 CSP-S模拟赛

时间:2024-10-02 20:34:42浏览次数:1  
标签:10 frac sum times 2024 枚举 aligned CSP dp

B

好题。
这题其实是原题,在大工VS辽实的T3里出现过,基本是一摸一样。
对于观看这个题解呢,我的理解是把两个结合起来观看,分别是 这个这个,结合起来看的话无论是从感官还是从方便理解来看都很舒服。

好了,接下来我们说一下这个题的思路。
你考虑,你在一段长度为\(m\)的区间里至少要选两个,最终要求结果最小,所以一段长度为\(m\)要选两个。

我们钦定状态\(dp_{i,j}\)表示最后选的汤圆的下标为\(i\),倒数第二个选的是\(j\)
你考虑怎么转移这个东西,显然得到一段公式:

\[dp_{i,j} = min(dp_{j,k})+a_i(i-m+1\le k \le j-1) \]

那么你考虑这玩意怎么做优化,因为这个做法显然是\(O(n^3)\)的。
你考虑,对于\(dp_{i,j}\),他需要比较的是\(dp_{j,i-m+1}\to dp_{j,j-1}\);对于\(dp_{i+1,j}\),他需要比较的是\(dp_{j,i-m} \to dp_{j,j-1}\),欸,这个时候你会惊奇的发现,对于\(dp_{j,i-m+1} \to dp_{j,j-1}\)这一段,他的枚举是冗余的,这张图片会更好理解:

这就是优化的地方,你考虑,我记录一个\(res\),表示当前上端区间的最小值,而这段区间的最小值,其实就是\(min(res,dp_{j,i-m})\),那么就可以把枚举\(k\)这个步骤给省略了!

这个时候再明确一下枚举顺序就可以了!
你考虑,在求这个位置的最小值的时候,需要跟他前面的进行比较,所以,\(j\)需要从小到大进行枚举:for(int j = 1;j <= n;j++)
但是你考虑,对于枚举最小值的时候,他跟\(01\)背包的过程是类似的,如果你正着枚举的话,你有可能会重复,而且这玩意是一个类似滑动窗口的东西,所以你要倒着扫。

记得初始化并且取模!直接就滚动数组就可以解决这个题了。

D

先给几个前置知识:

  1. 快速计算斐波那契数列的通项公式:$$\sum_{i=1}^{n}F_i = F_{n+2}-1$$
    接下来我们给出证明。
    首先明确一个东西----数学归纳法:当一个等式在\(m\)下成立,推导过后\(m+1\)也成立,则该等式成立(注意,前提是在\(1\)的情况下他也成立)

    那么就好整了,当\(n = 1\)时这个式子显然是成立的,\(2-1 = 1\),
    那么引出有关\(m+1\)的等式:

\[\sum_{i=1}^{m+1} = \sum_{i=1}^{m}+F_{m+1} \]

\(\;\;\;\;\;\;\;\)由结论:

\[\sum_{i=1}^{n}F_i = F_{n+2}-1 \]

\(\;\;\;\;\;\;\;\)得到:

\[\begin{aligned} \sum_{i=1}^{m+1} &= \sum_{i=1}^{m}F_i+F_{m+1} \\ &= F_{m+2}+F_{m+1}-1\\ &=F_{m+3}-1 \end{aligned} \]

\(\;\;\;\;\;\;\)则该式子在\(m+1\)与\(1\)下均成立,故此式子成立。

  1. 有关小球与盒子的公式:

\[ m^n = \sum_{i=1}^{m}S(n,i)C_{m}^{i} i! \]

\(\;\;\;\;\;\;\)这个还是挺好理解的,前面那个是有\(n\)个不同小球放入\(m\)个不同盒子中,每个盒子可以为空。
\(\;\;\;\;\;\;\)后面那个\(S(n,i)\)就是斯特林数,他的意思就是从\(n\)个不同的小球放入\(m\)个相同的盒子,盒子不可以为空。那么意思就显然了


接下来我们把原来的式子推一下:

\[\begin{aligned} &\sum_{i=1}^{n}(\sum_{m=1}^{r}F_i)!\times i! \times \sum_{l=0}^{i}\sum_{j=0}^{\sum_{t=1}^{r}F_t} \frac{S(K,i-l)}{l!} \frac{S(i,\sum_{w=1}^{r}F_w-j)}{j!} \\ =&\sum_{i=1}^{n}L! \times i! \times \sum_{l=0}^{i}\sum_{j=0}^{L}\frac{S(K,i-l)}{l!}\frac{S(i,L-j)}{j!} \\ =&\sum_{i=1}^{n}\sum_{l=0}^{i}S(K,i-l)\frac{i!}{l!}\sum_{j=0}^{L}S(i,L-j)\frac{L!}{j!} \end{aligned} \]

那么这个时候怎么算呢,你考虑,\(\sum_{l=0}^{i}\)时\(S(K,i-l)\frac{L!}{l!}\)与\(S(K,l)\frac{L!}{(i-l)!}\)的结果显然时相同的,\(\sum_{j=0}^{L}S(i,L-j)\frac{i!}{j!}与\sum_{j=0}^{L}S(i,j)\frac{i!}{(L-j)!}\)相同,所以原式可以变化为:

\[\begin{aligned} &\sum_{i=1}^{n}\sum_{l=0}^{i}S(K,i-l)\frac{i!}{l!}\sum_{j=0}^{L}S(i,L-j)\frac{L!}{j!} \\ =&\sum_{i=1}^{n}\sum_{l=0}^{i}S(K,l)\frac{i!}{(i-l)!}\sum_{j=0}^{L}S(i,j)\frac{L!}{(L-j)!} \end{aligned} \]

这个时候你发现\(\frac{L!}{(i-l)!}\)和组合数是不是挺像的?
(组合数公式:\(C_{n}^{m} =\frac{n!}{m!(n-m)!}\))
是不是其实就是\(C_{i}^{l}\times l!\)?
另一个\(\frac{i!}{(L-j)!}\)同理。
故原式转换为:

\[\begin{aligned} &\sum_{i=1}^{n}\sum_{l=0}^{i}S(K,l)\frac{i!}{(i-l)!}\sum_{j=0}^{L}S(i,j)\frac{L!}{(L-j)!} \\ =&\sum_{i=1}^{n}\sum_{l=0}^{i}S(K,l)C_{i}^{l}\times l!\sum_{j=0}^{L}S(i,j)C_{L}^{j}\times j! \end{aligned} \]

那么这个时候你和前面那个前置知识\(2\)对比一下,发现式子可以转换为:

\[\sum_{i=1}^{n}i^KL^i \]

其中\(S(n,m)\)为斯特林数,\(L\)为\(F_{n+2}-1\)
至此,我们便可以得到了这个题的\(30pts\)做法,我已经尽力了。

标签:10,frac,sum,times,2024,枚举,aligned,CSP,dp
From: https://www.cnblogs.com/grz0306/p/18444709

相关文章

  • 2024初秋集训——提高组 #29
    C.卡片放置题目描述有一些卡片,写着两个数字\(A_i,B_i\)。你要将这些这些卡片排列,其对于你的分数为\(\max(A_i,B_i)\cdoti\),对于对手的分数为\(\min(A_i,B_i)\cdot(N-i+1)\)。求令你的分数减对方分数的最大的方案数。思路我们来拆式子,这里令\(A_i\geB_i\):\[\begin{arr......
  • CTB2024
    活动官网https://www.chinathinksbig.com/ToDoIMPORTANT10.14提前批报名截止确认要参加的话赶紧把钱交了先注意:付钱(1490好贵)之后才能组队在国庆期间开个会大致考虑一下课题,尽量可以拐一下以下几个点弱势群体环境保护文化保护和传承一些东西数据科技相关......
  • 10.1 ~ 10.6
    10.1你说的对,但是我们今天还要打模拟赛;但是打完模拟赛就放假那我什么时间改呢......
  • 【网址导航】2410
    [阿酷]  阿酷导航阿酷杂货铺 蔚蓝主页 [搜索]百度必应搜狗无追F搜[地图]  百度地图 高德地图 腾讯地图 地球在线 一起看地图 我查地图 [新闻]新华中新早报央视澎湃大公报星岛环球网  [视频]  爱奇艺 腾讯视频 芒果TV 哔......
  • P10633
    #include<bits/stdc++.h>usingnamespacestd;intn,m,t,p,b[310000],tr[310000],d[310000],e[310000],g[310000],kk;charch[100];structsth{ intx,y,z,w,ans;}a[310000],c[310000];voidadd(intx,inty,intop){ b[++p]=a[++t].x=x; a[t].y=y; a[t].z......
  • 20241002测试
    move题面:\(T\)组数据,每组数据有\(n\)个数轴上的点\(a_1,a_2,\dots,a_n\)。从原点开始,每次选择一个点未被选择过的点,如果当前在这个点上,那么分数加\(1\),否则向这个点移动\(1\)格。问最高分数。题解:容易发现,要么先往左再往右,要么先往右再往左。先考虑第一种情况,枚举左端......
  • 20241002
    bwtree我们可以设\(dp_{i,0/1}\)表示当前考虑至哪个点,这个节点的子树内选了几个叶子节点#include<bits/stdc++.h>usingnamespacestd;constintN=1e5+5,INF=1e9;intn,a[N],dp[N][2];vector<int>g[N];voiddfs(intu,intf){dp[u][0]=(a[u]=......
  • Cornell cs3110 - Chapter3 Exercises
    (*Exercise:listexpressions*)letlist1=[1;2;3;4;5];;letlist2=1::2::3::4::5::[];;letlist3=[1]@[2;3;4;]@[5];;(*Exercise:product*)letrecproductl=matchlwith|[]->1|h::t->h*productt;;(*......
  • 2024/10/02 模拟赛总结
    暴力挂惨了,\(0+0+5+0=5\)#A.躲避技能评价:人机高精度由于边权是正数,多走一条边一定更劣,所以能在子树内解决的就尽量不要出来那么对于每一条边,它被遍历的次数是子树内起点与终点数量之差直接枚举每一条边,算答案即可人机高精度//BLuemoon_#include<bits/stdc++.h>using......
  • 【LGR-197-Div.2】洛谷 10 月月赛 I &「SFMOI」Round I(A,B,C)
    A.StrangeCakeGame对于小W,往下走最赚,对于小M往右走最赚,于是路线形成了个折线,直接对应竖坐标位置去看看横坐标符不符合要求即可#include<iostream>#include<algorithm>#include<string>#include<string.h>#include<queue>#include<deque>#include<math.h>#include<m......