P5746 [NOI2002] 机器人M号
1.数塔2.[洛谷P2014] 选课3.玉蟾宫 (悬线DP)4.MooFest POJ-1990 (树状数组)5.情书密码 (树状数组)6.[SCOI 2009] 迷路 (矩阵快速幂)7.[BZOJ3306] 树8.[NOI2002] 荒岛野人9.SHUFFLE 洗牌 (扩展欧几里得+龟速乘)10.[SDOI2009] Bill的挑战 (状压DP)11.P4168 [Violet] 蒲公英 (莫队的强制在线)12.P3667 [USACO17OPEN] Bovine Genomics G (set容器+二分)13.P7903 兜心の顶(构造)14.[BZOJ2720 Violet 5]列队春游(概率期望+组合数学)15.划分大理石(多重背包)
16.P5746 [NOI2002] 机器人M号
17.苍与红的试炼(数位DP)18.【唐赛】高一小学期219.P10779 BZOJ4316 小 C 的独立集 (仙人掌DP)20.关于求合法括号子序列个数P5746 [NOI2002] 机器人M号 题解
头图
不会告诉你是因为洛谷提交题解被打回来好几次所以决定在博客上复制粘贴的
虽然...但是还是有一些思考量的...
分析
显然:
当
-
是 的老师 -
第
号机器人的独立数为
读题,设两个奇素数
-
为政客:则 为军人 -
为军人:则 为政客
所以政客和军人只能由不同的奇素数乘起来得到。
考虑DP。
设
学者的独立数只需快速幂求
Elaina's Code
Elaina's Code
#include<bits/stdc++.h>
using namespace std;
const int N=1005;
#define rd read()
#define Elaina 0
inline int read(){
int x=0,f=1;
char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=-1;
for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0';
return x*f;
}
const int mod=10000;
int n,m,f[N][2];
int qpow(int a,int b){
int ret=1;
for(;b;b>>=1){
if(b&1) ret=ret*a%mod;
a=a*a%mod;
}
return ret;
}
signed main(){
int k=rd;
f[0][0]=1;
int cnt=1;
for(int i=1;i<=k;i++){
int p=rd,e=rd;
(cnt*=qpow(p,e))%=mod;
f[i][1]=(f[i-1][0]*(p==2?0:(p-1))%mod+f[i-1][1])%mod;
f[i][0]=(f[i-1][1]*(p==2?0:(p-1))%mod+f[i-1][0])%mod;
}
f[k][0]--;
printf("%lld\n%lld\n%lld\n",(f[k][0]%mod+mod)%mod,f[k][1],((cnt-f[k][0]-f[k][1]-1)%mod+mod)%mod);
return Elaina;
}
都看到这了,真的不点个赞吗(>ω<*)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本