bzoj千题计划266:bzoj4872: [六省联考2017]分手是祝愿
http://www.lydsy.com/JudgeOnline/problem.php?id=4872
一种最优解是 从大到小灯有亮的就灭掉
最优解是唯一的,且关灯的顺序没有影响
最优解 对每个开关至多操作1次,(连带着的灯的亮灭改变不算)
设最优解 需要操作cnt次,那么就有cnt盏灯是正确的选择
设 f[i] 表示 有i种正确的选择 变为 有i-1种正确的选择 的 期望次数
那么在n盏灯中,有i盏灯操作1次 就可以 减少一次正确选择
有n-i盏灯是错误的选择,选了它还要把它还原,还原它也是一种正确选择,就是f[i+1];一次错误的选择 做了一次 操作 就是1;当然也要变成i-1种正确选择
所以
边界:f[n]=1,随便选择任何一盏灯都是正确选择
#include<cstdio>
#include<vector>
using namespace std; #define N 100001 bool a[N]; vector<int>V[N]; int f[N],inv[N]; const int mod=; int main()
{
int n,k;
scanf("%d%d",&n,&k);
for(int i=;i<=n;++i) scanf("%d",&a[i]);
for(int i=;i<=n;++i)
for(int j=i;j<=n;j+=i)
V[j].push_back(i);
int cnt=,ans=;
for(int i=n;i;--i)
if(a[i])
{
cnt++;
int m=V[i].size();
for(int j=;j<m;++j) a[V[i][j]]^=;
}
if(cnt<=k) ans=cnt;
else
{
inv[]=;
for(int i=;i<n;++i) inv[i]=1LL*(mod-mod/i)*inv[mod%i]%mod;
f[n]=;
for(int i=n-;i;--i) f[i]=(+1LL*(n-i)*(+f[i+])*inv[i])%mod;
for(int i=cnt;i>k;--i) ans=(ans+f[i])%mod;
ans=(ans+k)%mod;
}
for(int i=;i<=n;++i) ans=1LL*ans*i%mod;
printf("%d",ans);
}
4872: [Shoi2017]分手是祝愿
Time Limit: 20 Sec Memory Limit: 512 MB
Submit: 466 Solved: 304
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
0 0 1 1
Sample Output
HINT
Source
bzoj千题计划266:bzoj4872: [六省联考2017]分手是祝愿的更多相关文章
- [BZOJ4872][六省联考2017]分手是祝愿(期望DP)
4872: [Shoi2017]分手是祝愿 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 516 Solved: 342[Submit][Statu ...
- [BZOJ4872][六省联考2017]分手是祝愿
BZOJ Luogu sol 首先发现肯定有解,又因为每个位置至多操作一次,所以最优解一定是在\([0,n]\)之间 有一种可以在\(O(\sum_{i=1}^{n}\lfloor\frac{n}{i ...
- BZOJ4872 [六省联考2017]分手是祝愿 【期望dp】
题目 Zeit und Raum trennen dich und mich. 时空将你我分开.B 君在玩一个游戏,这个游戏由 n 个灯和 n 个开关组成,给定这 n 个灯的初始状态,下标为 从 1 ...
- BZOJ 4872 luogu P3750 [六省联考2017]分手是祝愿
4872: [Shoi2017]分手是祝愿 Time Limit: 20 Sec Memory Limit: 512 MB[Submit][Status][Discuss] Description ...
- [bzoj4872] [洛谷P3750] [六省联考2017] 分手是祝愿
Description Zeit und Raum trennen dich und mich. 时空将你我分开. \(B\) 君在玩一个游戏,这个游戏由 \(n\) 个灯和 \(n\) 个开关组成, ...
- [bzoj 4872][六省联考2017]分手是祝愿
传送门 Description N个灯按照1~N标号,按下一个开关i,所有标号是i的约数的开关都改变状态,目标是关掉所有的灯,如果当前最优策略≤k就直接按照最优策略走.否则随机按下一个开关.给出每个灯 ...
- [六省联考2017]分手是祝愿 期望DP
表示每次看见期望的题就很懵逼... 但是这题感觉还是值得一做,有可借鉴之处 要是下面这段文字格式不一样的话(虽然好像的确不一样,我也不知道为什么,是直接从代码里面复制出来的,因为我一般都是习惯在代码里 ...
- P3750 [六省联考2017]分手是祝愿 期望DP
\(\color{#0066ff}{ 题目描述 }\) Zeit und Raum trennen dich und mich. 时空将你我分开. B 君在玩一个游戏,这个游戏由 \(n\) 个灯和 ...
- [六省联考2017]分手是祝愿——期望DP
原题戳这里 首先可以确定的是最优策略一定是从大到小开始,遇到亮的就关掉,因此我们可以\(O(nlogn)\)的预处理出初始局面需要的最小操作次数\(tot\). 然后容(hen)易(nan)发现即使加 ...
随机推荐
- RxJS v6 学习指南
为什么要使用 RxJS RxJS 是一套处理异步编程的 API,那么我将从异步讲起. 前端编程中的异步有:事件(event).AJAX.动画(animation).定时器(timer). 异步常见的问 ...
- Azkaban集群部署
一.部署模式 solo-server模式 (使用内置h2存储元数据): two-server模式 (1个webServer,1个execServer在同一服务器上,使用mysql存储元数据): mu ...
- 三丰云使用记录--部署iis服务器
写在前面的话:看在我这么热心写使用推广记录,麻烦延长下使用天数,谢谢 官网地址:https://www.sanfengyun.com 三丰云是北京太极三丰云计算有限公司旗下网络服务品牌,十八年IDC ...
- Codeforces Round #546 (Div. 2) E - Nastya Hasn't Written a Legend
这题是一个贼搞人的线段树 线段树维护的是 区间和a[i - j] 首先对于update的位置可以二分查找 其次update时候的lazy比较技巧 比如更新的是 l-r段,增加的是c 那么这段的值为: ...
- 1085. Perfect Sequence (25)-水题
#include <iostream> #include <cstdio> #include <algorithm> #include <string.h&g ...
- Scrum Meeting NO.1
Scrum Meeting No.1 1.会议内容 不出所料地,组员们都在忙着写编译.编译大作业的进度已经接近尾声,码农们已经磨刀霍霍向软工-- 在上一周,bugphobia和我们组决定共同使用一套后 ...
- Linux第五章笔记
5.1 与内核通信 系统调用在用户空间进程和硬件设备之间添加了一个中间层. 主要作用有: 为用户空间提供了一种硬件的抽象接口 系统调用保证了系统的稳定和安全 每个进程都需要运行在虚拟机内 5.2 AP ...
- blob下载出现多余乱码内容
blob需要单独获取,,不能通过map来获取 jdbcTemplate.query(sqlcontent, new Object[] {id}, new AbstractLobStreamin ...
- HDU 2051 Bitset
http://acm.hdu.edu.cn/showproblem.php?pid=2051 Problem Description Give you a number on base ten,you ...
- [转载] Activiti Tenant Id 字段释疑
TENANT_ID_ : 这个字段表示租户ID.可以应对多租户的设计. 转载自: http://www.cnblogs.com/yg_zhang/p/4201288.html http://www. ...