当前位置: 首页 > news >正文

P3226 [HNOI2012] 集合选数 - Link

神仙题。
发现不是 \(2\) 的倍数和不是 \(3\) 的倍数的数之间没有限制,可以分开考虑。
\(1\) 为例。
构造一个矩阵,左上角为 \(1\),每个数右边是祂乘 \(3\),下面是祂乘 \(2\),原问题为求在这个矩阵里选数,不能选相邻的数的方案数,用状压 \(dp\) 随便做,最后把所有左上角数字不同的矩阵的答案乘起来。要取模。

代码

#include<bits/stdc++.h>
using namespace std;
namespace IO{template<typename T>inline void read(T&x){x=0;char c=getchar();bool f=0;while(!isdigit(c)) c=='-'?f=1:0,c=getchar();while(isdigit(c)) x=x*10+c-'0',c=getchar();f?x=-x:0;}template<typename T>inline void write(T x){if(x==0){putchar('0');return ;}x<0?x=-x,putchar('-'):0;short st[50],top=0;while(x) st[++top]=x%10,x/=10;while(top) putchar(st[top--]+'0');}inline void read(char&c){c=getchar();while(isspace(c)) c=getchar();}inline void write(char c){putchar(c);}inline void read(string&s){s.clear();char c;read(c);while(!isspace(c)&&~c) s+=c,c=getchar();}inline void write(string s){for(int i=0,len=s.size();i<len;i++) putchar(s[i]);}template<typename T>inline void write(T*x){while(*x) putchar(*(x++));}template<typename T,typename...T2> inline void read(T&x,T2&...y){read(x),read(y...);}template<typename T,typename...T2> inline void write(const T x,const T2...y){write(x),putchar(' '),write(y...),sizeof...(y)==1?putchar('\n'):0;}
}using namespace IO;
template<signed mod>struct Modint{signed z;Modint(){z=0;}Modint(signed x){x%=mod;z=x<0?x+mod:x;}Modint(long long x){x%=mod;z=x<0?x+mod:x;}Modint(short x){x%=mod;z=x<0?x+mod:x;}Modint(char x){x%=mod;z=x<0?x+mod:x;}Modint(bool x){x%=mod;z=x<0?x+mod:x;}friend Modint operator+(Modint t,Modint t2){Modint ans;ans.z=(t.z+t2.z)%mod;return ans;}friend Modint operator*(Modint t,Modint t2){Modint ans;ans.z=1ll*t.z*t2.z%mod;return ans;}friend Modint operator-(Modint t,Modint t2){Modint ans;ans.z=(t.z-t2.z)%mod;return ans;}Modint operator<<(const signed t)const{Modint ans;ans.z=(z<<t)%mod;return ans;}Modint operator>>(const signed t)const{Modint ans;ans.z=(z>>t)%mod;return ans;}Modint&operator+=(const Modint t){z=(z+t.z)%mod;return *this;}Modint&operator*=(const Modint t){z=1ll*z*t.z%mod;return *this;}Modint&operator-=(const Modint t){z=(z-t.z)%mod;return *this;}Modint&operator<<=(const signed t){z=(z<<t)%mod;return *this;}Modint&operator>>=(const signed t){z=(z>>t)%mod;return *this;}friend Modint ksm(Modint a,signed b){Modint ans=1;while(b){if(b&1) ans=ans*a;a=a*a,b>>=1;}return ans;}friend void read(Modint&z){signed x=0;char c=getchar();bool f=0;while(!isdigit(c)) c=='-'?f=1:0,c=getchar();while(isdigit(c)) x=(x*10ll+c-'0')%mod,c=getchar();f?x=-x:0;z.z=x;}friend void write(Modint x){x.z<0?x.z+=mod:0;write(x.z);}
};
#define int long long
const int mod=1000000001,maxh=20,maxl=20,maxzt=400000,maxn=100010;
int n,jl=1,lt;
Modint<mod>f[maxh][maxzt],ans=1;
bool flag[maxn];
inline void js(int x){int s=x;f[0][0]=1;Modint<mod> ans=0;lt=0;for(int i=1;;i++){if(s>n) break;int ss=s,l=0;for(;ss<=n;l++) flag[ss]=1,ss*=2;for(int j=0;j<(1<<l);j++){f[i][j]=0;if(j&(j<<1)) continue;for(int k=0;k<(1<<lt);k++){if(j&k) continue;f[i][j]+=f[i-1][k];}}s*=3;if(s>n) for(int j=0;j<1<<l;j++) ans=ans+f[i][j];lt=l;}::ans=::ans*ans;
}
signed main(){read(n);for(int i=1;i<=n;i++){if(flag[i]) continue;js(i);}write(ans);return 0;
}
http://www.jsqmd.com/news/355696/

相关文章:

  • 2026年钣金加工行业十大厂家排名:苏州踏剑机电全品类覆盖领先 - 速递信息
  • .NET Blazor应用在手机上无法显示饼图和折线图的原因分析与解决方案 - 尼古拉
  • 2026年单向流无管道正压新风机测评榜单推荐:小众品牌Aprilair新风系统成为首选 - 速递信息
  • 关于前后端学习当中的注解使用(1)
  • 2026年北京IWC万国表手表维修评测推荐:甄选官方售后与优质网点,规避非官方维修风险 - 品牌推荐
  • 2026年包头管道疏通服务评测推荐:解决管道堵塞难题的实用榜单分析 - 品牌推荐
  • 文搜图,图搜图,图搜文
  • 2026年北京GP芝柏表手表维修推荐评测:非官方维修网点服务与售后中心选择指南 - 品牌推荐
  • 2026年张家港苏州搬家回收行业十大排名:喜胜搬家口碑领先 - 速递信息
  • 掌握 Eureka,开启大数据领域服务管理新征程
  • 2026广东最新刑事案件服务TOP5推荐:深圳等地专业机构权威榜单发布,精准辩护合规护航,助力权益保障 - 品牌推荐2026
  • 2026年保险箱开锁服务推荐评测:紧急求助、价格透明与安全信赖的全面解析 - 品牌推荐
  • 金融推荐引擎的Prompt技巧:帮用户选对理财产品(提升21%购买)
  • 2026年杭州宁波婚纱摄影行业十大排名:慕谷摄影情感纪实风格领先 - 速递信息
  • 2026 NOI 做题记录(十五)
  • 某健康管理APP AI智能体复盘:架构师的移动端适配方案
  • 2026年无人机培训学校有哪些?国内优质机构推荐 - 品牌排行榜
  • 2026年北海管道疏通服务评测排名:专业疏通服务选择指南与避坑要点 - 品牌推荐
  • 2026广东最新经济纠纷平台TOP5推荐:深圳等地专业咨询公司权威律所榜单发布,专业助力纠纷高效解决 - 品牌推荐2026
  • AI Skills:从“高分低能实习生“到“靠谱数字员工“
  • 大数据领域数据湖的监控与运维要点
  • LLM - 从 0 打造专业 Agent Skill:一套能落地的完整实践指南
  • 20260130树形dp - Link
  • 【信息科学与工程学】【财务管理】第六篇 税务
  • Vibe Coding - 从 Vibe Coding 到智能体工程:2026 年开发者的真正分水岭
  • CANN 性能调优指南:如何榨干昇腾芯片算力?
  • 引入AI辅助的3D游戏美术工作流
  • 高性能计算核函数设计:CANN ops-nn 底层实现剖析
  • 2026第三十四届中国国际电子生产设备暨微电子工业展参展效果如何?
  • CANN 仓库揭秘:昇腾 AI 算子开发的宝藏之地