[Luogu3750]

每次随机选择一个开关\(i\) , 会使\(i\)的约数状态全部改变 , 目标把全部灯关上 , 如果当前最优策略步数\(\le K\)则停止随机选 , 直接选\(K\)次 , 求期望步数

原题解

任何键的操作都不能被别的键替代 , 这就不再是一道\(DP\)题 , 而转化为一道期望题了

设 \(f[i]\) 表示从 \(i\) 个需要按的键到 \(i-1\) 个需要按的键的期望操作次数
则 \(f[i]=\frac{i}{n}+\frac{n-i}{n}\times(f[i]+f[i+1]+1)\)
意思是有\(\frac{i}{n}\)的概率按到正确位置 , 其他的按错了还要按回来
化简得 \(f[i]=\frac{n+(n-i)\times f[i+1]}{i}\)

如果$ cnt>K$直接把 \(f[cnt]+f[cnt-1]+....+f[k+1]\) 作为答案即可

#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long LL;
const int INF=1e9+7;
inline LL read(){register LL x=0,f=1;register char c=getchar();while(c<48||c>57){if(c=='-')f=-1;c=getchar();}while(c>=48&&c<=57)x=(x<<3)+(x<<1)+(c&15),c=getchar();return f*x;
}const int MAXN=1e5+5;
const int mod=100003;int f[MAXN];bool a[MAXN];
int n,K,ans,cnt;inline int add(int x,int y){x+=y;return x>mod?x-mod:x;}
inline int dec(int x,int y){x-=y;return x<0?x+mod:x;}
inline int mul(LL x,int y){x*=y;return x>mod?x%mod:x;}inline int qpow(int a,int b){int res=1;while(b){if(b&1) res=mul(res,a);a=mul(a,a);b>>=1;}return res;
}int main(){n=read(),K=read();for(int i=1;i<=n;i++) a[i]=read();for(int i=n;i>=1;i--){if(a[i]==0) continue;cnt++;for(int j=1;j*j<=i;j++)if(i%j==0){a[j]^=1;if(j*j!=i) a[i/j]^=1;}}f[n+1]=0;for(int i=n;i>=1;i--)f[i]=mul(add(n,mul(n-i,f[i+1])),qpow(i,mod-2));if(cnt<=K) ans=cnt;else{for(int i=cnt;i>K;i--) ans=add(ans,f[i]);ans=add(ans,K);}for(int i=1;i<=n;i++) ans=mul(ans,i);printf("%d\n",ans);
}

转载于:https://www.cnblogs.com/lizehon/p/10570702.html

[六省联考2017]分手是祝愿相关推荐

  1. BZOJ 4872 luogu P3750 [六省联考2017]分手是祝愿

    4872: [Shoi2017]分手是祝愿 Time Limit: 20 Sec  Memory Limit: 512 MB [Submit][Status][Discuss] Description ...

  2. [六省联考2017]分手是祝愿(期望+DP)

    题解 很容易想出来最优策略是什么. 就是从n到1看到开着的灯就把它关了 我们预处理出当前状态把灯全部关闭后的最少步数cnt 然后我们的主人公就要瞎按... 设dp[i]代表当前状态最优解为i步时走到d ...

  3. 洛谷 P3750 [六省联考2017]分手是祝愿

    传送门 题解 //Achen #include<algorithm> #include<iostream> #include<cstring> #include&l ...

  4. luogu P3750 [六省联考 2017]分手是祝愿

    https://www.luogu.com.cn/problem/P3750 k=nk=nk=n给了808080分可还行 首先考虑k=nk=nk=n,不难想到一个贪心,从大到小枚举每个开关,如果为11 ...

  5. P3750 [六省联考2017]分手是祝愿(期望概率,返祖模型)

    题意:给n个灯,初始化下给出每个灯的状态,给n个开关,操作开关i会使得编号是i的约数的灯的状态翻转一次,现在有一个种算法,如果当前状态下可以操作k次及以下就能使所有灯熄灭,直接操作这个次数,游戏结束, ...

  6. [六省联考2017]分手是祝愿 题解

    题目传送门 题目大意: 给出一排灯泡的状态,每次修改一个灯泡时会将它编号的约数的灯泡的状态同时修改,现在随机修改灯泡,当按照最优策略还有 kkk 次操作就能全灭时就按最优策略,问期望操作次数. 题解 ...

  7. BZOJ 4872 六省联考2017 分手是祝愿

    Problem BZOJ Solution 感觉dp状态的设置好巧妙啊 首先要明确的是怎么计算最小步数.就是直接从n到1扫,如果有亮着的,就按这个开关,模拟一下是O(nlnn)O(nln⁡n)O(n\ ...

  8. [六省联考2017]分手是祝愿 - 题解

    题目链接 做法: 首先预处理出每个数的约数,用 $ vector $ 存,时间是调和级数 $ O(n \log n) $ . 部分分:当 $ n = k $ 时,每次操作最优,然后从右往左枚举,若果当 ...

  9. 2017 [六省联考] T5 分手是祝愿

    4872: [Shoi2017]分手是祝愿 Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 458  Solved: 299 [Submit][Sta ...

  10. P3750-[六省联考2017]分手是祝愿【期望dp】

    正题 题目链接:https://www.luogu.org/problem/P3750 题目大意 nnn盏灯和按钮,每次随机选择一个xxx按下后会让xxx的倍数的灯都取反,然后若最少kkk步就可以将所 ...

最新文章

  1. TCP_Wrappers 基于TCP的安全控制
  2. SOAP消息机制简介
  3. HttpClient Get/Post方式调用Http接口
  4. 结构与算法(04):排序规则与查找算法
  5. Java操作mongoDB2.6的常见API使用方法
  6. 看看虚函数表是什么样的
  7. redis集群环境搭建入门
  8. Refactoring Page Head
  9. Nmap发现局域网中存活主机
  10. HTML5在豆瓣中的应用
  11. 平面波超声成像 (Matlab Filed II仿真)
  12. 君正 X1000 音频驱动架构
  13. 【深圳居住证】2021免费网上快速办理(超详细图文详解)
  14. 【猿说VUE】Vue列表渲染
  15. MySQL数据结构选择的合理性
  16. 【胖虎的逆向之路】Android 7.0 上Magisk配合Xposed的相关问题
  17. 欧几里得算法和扩展欧几里得
  18. ios epub电子书阅读器demo
  19. 拨云搜索:帮你查找记忆中的小说
  20. 笔试——大华FPGA

热门文章

  1. sshj ,ssh , springmvc pom.xml
  2. linux ext2 文件系统学习
  3. linux服务器架设——rsync
  4. js字符串常用判断方法
  5. 强的离谱!串烧70+个Transformer模型,涵盖CV、NLP、金融、隐私计算...
  6. 28岁女博士生被骂“学术媛”,曾以数学建模专业第一名毕业,获牛津数学PhD offer...
  7. 【文本匹配】Question Answering论文
  8. 【论文】NAACL2019 抽取式摘要之 SUMO
  9. 百面机器学习——svm使用信息熵寻找最优划分
  10. python数据结构5 - 排序与搜索