4.数学
数学1(容斥、组合数学、期望)
开题顺序:
luogu P3349 [ZJOI2016] 小星星
CF1466H Finding satisfactory solutions
Gym103415K Magus Night
luogu P8292 [省选联考 2022] 卡牌
CF1139D Steps to One
-
同 csp-s模拟11 T5 T2198. 传统题 ,设
表示序列长度,考虑统计 。 -
再拆一下式子,有
。- 做法跟 CF1559E Mocha and Stars 差不多。
-
加上前面的
,并交换枚举顺序,得到 。 -
发现后面又是一个无限等比数列求和的形式,后面等于
。 -
筛个莫比乌斯函数即可。
点击查看代码
const ll p=1000000007; ll prime[100010],vis[100010],miu[100010],len=0; ll qpow(ll a,ll b,ll p) { ll ans=1; while(b) { if(b&1) { ans=ans*a%p; } b>>=1; a=a*a%p; } return ans; } void isprime(ll n) { memset(vis,0,sizeof(vis)); miu[1]=1; for(ll i=2;i<=n;i++) { if(vis[i]==0) { len++; prime[len]=i; miu[i]=-1; } for(ll j=1;j<=len&&i*prime[j]<=n;j++) { vis[i*prime[j]]=1; if(i%prime[j]==0) { miu[i*prime[j]]=0; } else { miu[i*prime[j]]=-miu[i]; } } } } int main() { ll m,ans=1,i; cin>>m; isprime(m); for(i=2;i<=m;i++) { ans=(ans-miu[i]*(m/i)*qpow(m-(m/i),p-2,p)%p+p)%p; } cout<<ans<<endl; return 0; }
CF908D New Year and Arbitrary Arrangement
-
以下所写
分别指原题的 。 -
停止加入当且仅当
ab
子序列个数 。而一次加入对ab
子序列个数的贡献不一定为 或 ,例如aaaaa....a
后面加入一个b
。 -
因开头的
b
对答案是没有影响的,不妨钦定第一个放的是a
。 -
具体地,设
表示放了 个a
,形成了 个ab
子序列时的概率,状态转移方程为 ,边界为 。 -
当
时,可以直接统计期望累加在答案上。 -
难点还是上述例子中的无限放
a
的可能,即难以处理 的贡献。 -
考虑枚举多余
a
的数量,有 。 -
把后面的
提出来单独考虑,有 。 -
发现这是个无穷递降等比数列求和的形式,又因为
,有 。点击查看代码
const ll p=1000000007; ll f[1010][1010]; ll qpow(ll a,ll b,ll p) { ll ans=1; while(b) { if(b&1) { ans=ans*a%p; } b>>=1; a=a*a%p; } return ans; } int main() { ll k,pa,pb,sum,ans=0,i,j; cin>>k>>pa>>pb; sum=pa+pb; pa=pa*qpow(sum,p-2,p)%p; pb=pb*qpow(sum,p-2,p)%p; f[1][0]=1; for(i=1;i<=k-1;i++) { for(j=0;j<=k-1;j++) { f[i+1][j]=(f[i+1][j]+f[i][j]*pa%p)%p; if(i+j>=k) { ans=(ans+(f[i][j]*pb%p)*(i+j)%p)%p; } else { f[i][i+j]=(f[i][i+j]+f[i][j]*pb%p)%p; } } } sum=pa*qpow(pb,p-2,p)%p; for(j=0;j<=k-1;j++) { ans=(ans+(j+k+sum)%p*f[k][j]%p)%p; } cout<<ans<<endl; return 0; }
CF749E Inversions After Shuffle
CF932E Team Work
-
猜测
对 是可以递推的。 -
设
,然后考虑把 拆成 。 -
推式子,有
。 -
移项得到
,用 代替 得到 。 -
因为
,分讨 的大小关系后类似阶梯状向下更新即可。边界为 。点击查看代码
const ll p=1000000007; ll f[2][5010]; ll qpow(ll a,ll b,ll p) { ll ans=1; while(b) { if(b&1) { ans=ans*a%p; } b>>=1; a=a*a%p; } return ans; } int main() { ll n,k,i,j; cin>>n>>k; if(n<k) { for(i=0;i<=k;i++) { f[1][i]=1; } for(i=2;i<=n;i++) { f[i&1][0]=(qpow(2,i,p)-1+p)%p; for(j=1;j<=k;j++) { f[i&1][j]=(f[i&1][j-1]-f[(i-1)&1][j-1]+p)%p*i%p; } } } else { f[(n-k)&1][0]=(qpow(2,n-k,p)-1+p)%p; for(i=n-k+1;i<=n;i++) { f[i&1][0]=(qpow(2,i,p)-1+p)%p; for(j=1;j<=k;j++) { f[i&1][j]=(f[i&1][j-1]-f[(i-1)&1][j-1]+p)%p*i%p; } } } cout<<f[n&1][k]<<endl; return 0; }
CF578D LCS Again
luogu P7914 [CSP-S 2021] 括号序列
-
只设左右端点两维不太能进行转移,考虑增加一维。
-
设
表示使得 的状态为 的超级括号序列方案数,其中 分别对应以下五种情况。 : 全部为*
。 : 分别为(
/)
,且 是超级括号序列。- 左右直接被相互匹配的括号包裹,中间为超级括号序列。
: 分别为(
/*
。- 左边以括号序列开头,右边以
*
结尾,中间为超级括号序列。
- 左边以括号序列开头,右边以
: 分别为(
/)
。- 左边以括号序列开头,右边以括号序列结尾,中间为超级括号序列。
- 包含了
的情况。
: 分别为*
/)
。- 左边以
*
开头,右边以括号序列结尾,中间为超级括号序列。
- 左边以
-
状态转移方程为
,特判长度等于 时 和长度等于 时 的转移。 -
最终有
即为所求。点击查看代码
const ll p=1000000007; ll f[510][510][5]; char s[510]; int main() { ll n,k,len,l,r,i; cin>>n>>k>>(s+1); for(i=1;i<=n;i++) { f[i][i][0]=(s[i]=='?'||s[i]=='*'); } for(len=2;len<=n;len++) { for(l=1,r=l+len-1;r<=n;l++,r++) { f[l][r][0]=f[l][r-1][0]*((s[r]=='?'||s[r]=='*')&&len<=k); if((s[l]=='('||s[l]=='?')&&(s[r]==')'||s[r]=='?')) { if(len==2) { f[l][r][1]=1; } else { f[l][r][1]=(f[l+1][r-1][0]+f[l+1][r-1][2]+f[l+1][r-1][3]+f[l+1][r-1][4])%p; } } f[l][r][3]=f[l][r][1]; for(i=l;i<=r-1;i++) { f[l][r][2]=(f[l][r][2]+f[l][i][3]*f[i+1][r][0]%p)%p; f[l][r][3]=(f[l][r][3]+(f[l][i][2]+f[l][i][3])*f[i+1][r][1]%p)%p; f[l][r][4]=(f[l][r][4]+f[l][i][0]*f[i+1][r][3]%p)%p; } } } cout<<f[1][n][3]<<endl; return 0; }
luogu P8340 [AHOI2022] 山河重整
数学2(同余、计算几何、线性代数)
开题顺序:
luogu P3306 [SDOI2013] 随机数生成器
luogu P3194 [HNOI2008] 水平可见直线
luogu P4049 [JSOI2007] 合金
luogu P9181 [COCI2022-2023#5] Zastave
luogu P8885 「JEOI-R1」子序列
luogu P7116 [NOIP2020] 微信步数
CF963E Circles of Waiting
CF1815E Bosco and Particle
CF1067E Random Forest Rank
本文来自博客园,作者:hzoi_Shadow,原文链接:https://www.cnblogs.com/The-Shadow-Dragon/p/18462788,未经允许严禁转载。
版权声明:本作品采用 「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0) 进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现