尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

题解:AT_abc304_f [ABC304F] Shift Table

题解:AT_abc304_f [ABC304F] Shift Table
📅 发布时间:2026/6/20 22:37:41

思路

首先,很容易想到枚举合法的循环节长度,然后遍历整个字符串,对必须要干活的天数进行标记,最后记循环节长度为 \(l\),标记天数为 \(cnt\),则这个循环节长度就有 \(2^{l-cnt}\) 个合法方案。

但是这样计算会导致部分部分方案重复计算,比如所有天数都干活的方案在所有循环节长度都被计算了一次。我们思考一下重复计算的原因,显然如果我们在枚举一个小的循环节长度时,找到了一个合法的方案,那么在枚举该长度的整数倍时这个方案都会被计算,尽管它们是同一种。

所以最后计算方法是:先将 \(n\) 除了它自己以外的所有因数从小到大排序,依次处理,每次先计算出 \(2^{l-cnt}\),然后减去以该循环节长度因数为循环节长度的方案数,得到当前循环节长度的真实方案数,然后再计算答案和进行容斥。

代码

#include<bits/stdc++.h>
#define int long long
#define MAXN 100005
using namespace std;
const int inf=1e18,mod=998244353;
int n,ans,d[MAXN],cnt,b[MAXN],sum,f[MAXN],zcnt,ys[MAXN],ycnt,p[MAXN];
char c[MAXN];
int fpow(int a,int b){int tans=1;while(b){if(b&1)tans=tans*a%mod;a=a*a%mod;b>>=1;}return tans;
}
void solve(int x){sum=x;for(int i=1;i<=cnt;i++){if(!b[d[i]%x])sum--;//对必须要干活的天数进行标记b[d[i]%x]++;}int tmp=p[sum];//计算2^(l-cnt)tmp=(tmp+mod-f[x])%mod;//减去重复方案for(int i=1;x*i<=n;i++){f[x*i]=(f[x*i]+tmp)%mod;//更新倍数的容斥}ans=(ans+tmp)%mod;//计算答案for(int i=1;i<=cnt;i++){b[d[i]%x]=0;}
} 
signed main(){
//	freopen("clr.in","r",stdin);
//	freopen("clr.out","w",stdout);scanf("%lld",&n);p[0]=1;for(int i=1;i<=n;i++)p[i]=p[i-1]*2%mod;scanf("%s",c+1);for(int i=1;i<=n;i++)if(c[i]=='.')d[++cnt]=i;for(int i=1;i*i<=n;i++){if(n%i==0){ys[++ycnt]=i;if(i*i!=n&&i!=1)ys[++ycnt]=n/i;}}sort(ys+1,ys+ycnt+1);//n的因数从小到大排序依次处理for(int i=1;i<=ycnt;i++){solve(ys[i]);}printf("%lld\n",ans);return 0;
}

相关新闻

  • CSP-S 2023 游记
  • 补发周五日报10.31
  • CSP2025-S 游记

最新新闻

  • 跨平台游戏串流方案选择与配置实战:打造你的专属游戏云
  • Fate/Grand Automata完整实战指南:高效配置F/GO安卓自动化战斗工具
  • Gemini 3.1 Pro国内合规落地:API直连+本地编排实战指南
  • 2026年抗抑菌剂/消毒产品检测机构推荐:广州市微生物研究所集团专业服务 - 品牌推荐官
  • 2025年厨房家居用品实力厂家推荐:青岛乐博智家密封罐/果盘/冷萃壶全系供应 - 品牌推荐官
  • CentOS 8 LAMP环境搭建与三重加固实战指南

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号