[六省联考2017]分手是祝愿
[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]分手是祝愿相关推荐
- BZOJ 4872 luogu P3750 [六省联考2017]分手是祝愿
4872: [Shoi2017]分手是祝愿 Time Limit: 20 Sec Memory Limit: 512 MB [Submit][Status][Discuss] Description ...
- [六省联考2017]分手是祝愿(期望+DP)
题解 很容易想出来最优策略是什么. 就是从n到1看到开着的灯就把它关了 我们预处理出当前状态把灯全部关闭后的最少步数cnt 然后我们的主人公就要瞎按... 设dp[i]代表当前状态最优解为i步时走到d ...
- 洛谷 P3750 [六省联考2017]分手是祝愿
传送门 题解 //Achen #include<algorithm> #include<iostream> #include<cstring> #include&l ...
- luogu P3750 [六省联考 2017]分手是祝愿
https://www.luogu.com.cn/problem/P3750 k=nk=nk=n给了808080分可还行 首先考虑k=nk=nk=n,不难想到一个贪心,从大到小枚举每个开关,如果为11 ...
- P3750 [六省联考2017]分手是祝愿(期望概率,返祖模型)
题意:给n个灯,初始化下给出每个灯的状态,给n个开关,操作开关i会使得编号是i的约数的灯的状态翻转一次,现在有一个种算法,如果当前状态下可以操作k次及以下就能使所有灯熄灭,直接操作这个次数,游戏结束, ...
- [六省联考2017]分手是祝愿 题解
题目传送门 题目大意: 给出一排灯泡的状态,每次修改一个灯泡时会将它编号的约数的灯泡的状态同时修改,现在随机修改灯泡,当按照最优策略还有 kkk 次操作就能全灭时就按最优策略,问期望操作次数. 题解 ...
- BZOJ 4872 六省联考2017 分手是祝愿
Problem BZOJ Solution 感觉dp状态的设置好巧妙啊 首先要明确的是怎么计算最小步数.就是直接从n到1扫,如果有亮着的,就按这个开关,模拟一下是O(nlnn)O(nlnn)O(n\ ...
- [六省联考2017]分手是祝愿 - 题解
题目链接 做法: 首先预处理出每个数的约数,用 $ vector $ 存,时间是调和级数 $ O(n \log n) $ . 部分分:当 $ n = k $ 时,每次操作最优,然后从右往左枚举,若果当 ...
- 2017 [六省联考] T5 分手是祝愿
4872: [Shoi2017]分手是祝愿 Time Limit: 20 Sec Memory Limit: 512 MB Submit: 458 Solved: 299 [Submit][Sta ...
- P3750-[六省联考2017]分手是祝愿【期望dp】
正题 题目链接:https://www.luogu.org/problem/P3750 题目大意 nnn盏灯和按钮,每次随机选择一个xxx按下后会让xxx的倍数的灯都取反,然后若最少kkk步就可以将所 ...
最新文章
- TCP_Wrappers 基于TCP的安全控制
- SOAP消息机制简介
- HttpClient Get/Post方式调用Http接口
- 结构与算法(04):排序规则与查找算法
- Java操作mongoDB2.6的常见API使用方法
- 看看虚函数表是什么样的
- redis集群环境搭建入门
- Refactoring Page Head
- Nmap发现局域网中存活主机
- HTML5在豆瓣中的应用
- 平面波超声成像 (Matlab Filed II仿真)
- 君正 X1000 音频驱动架构
- 【深圳居住证】2021免费网上快速办理(超详细图文详解)
- 【猿说VUE】Vue列表渲染
- MySQL数据结构选择的合理性
- 【胖虎的逆向之路】Android 7.0 上Magisk配合Xposed的相关问题
- 欧几里得算法和扩展欧几里得
- ios epub电子书阅读器demo
- 拨云搜索:帮你查找记忆中的小说
- 笔试——大华FPGA
热门文章
- sshj ,ssh , springmvc pom.xml
- linux ext2 文件系统学习
- linux服务器架设——rsync
- js字符串常用判断方法
- 强的离谱!串烧70+个Transformer模型,涵盖CV、NLP、金融、隐私计算...
- 28岁女博士生被骂“学术媛”,曾以数学建模专业第一名毕业,获牛津数学PhD offer...
- 【文本匹配】Question Answering论文
- 【论文】NAACL2019 抽取式摘要之 SUMO
- 百面机器学习——svm使用信息熵寻找最优划分
- python数据结构5 - 排序与搜索