Solution -「六省联考 2017」「洛谷 P3750」分手是祝愿
\(\mathcal{Description}\)
Link.
有 \(n\) 盏编号为 \(1\sim n\),已知初始状态的灯,每次操作选取 \(x\in[1,n]\),使得所有编号为 \(x\) 的因子的灯的开关状态改变。现在不停地等概率选取 \(x\) 进行操作,直到在最优策略下能在 \(m\) 次操作内将所有灯关闭时,则使用最优策略操作。求期望操作次数 \(\times n!\) 对 \((10^5+3)\) 取模的结果。
\(\mathcal{Solution}\)
最优策略显然是按编号从大到小考虑每盏灯,若开着则对它操作,如此可以求到初始状态下需要操作的灯的集合为 \(S\)。有结论:
- 若操作 \(x\in S\),则得到状态的最优操作次数为 \(|S|-1\);
- 若操作 \(x\not\in S\),则得到状态的最优操作次数为 \(|S|+1\)。
利用操作间没有依赖关系的性质,易证。所以我们只需关心 \(|S|\) 而非 \(S\)。
令 \(f(i)\) 表示 \(|S|=i\) 时,使得 \(|S|=i-1\) 的期望操作次数。简单转移即可求出答案。
我写的是 \(\mathcal O(n\sqrt n)\),不难做到 \(\mathcal O(n\ln n)\)。
\(\mathcal{Code}\)
/* Clearink */
#include <cmath>
#include <cstdio>
#define rep( i, l, r ) for ( int i = l, rep##i = r; i <= rep##i; ++i )
#define per( i, r, l ) for ( int i = r, per##i = l; i >= per##i; --i )
const int MAXN = 1e5, MOD = 1e5 + 3;
int n, m, a[MAXN + 5], f[MAXN + 5];
inline int add( int a, const int b ) { return ( a += b ) < MOD ? a : a - MOD; }
inline int mul( const long long a, const int b ) { return int( a * b % MOD ); }
inline int mpow( int a, int b ) {
int ret = 1;
for ( ; b; a = mul( a, a ), b >>= 1 ) ret = mul( ret, b & 1 ? a : 1 );
return ret;
}
int main() {
scanf( "%d %d", &n, &m );
rep ( i, 1, n ) scanf( "%d", &a[i] );
int tar = 0;
per ( i, n, 1 ) if ( a[i] ) {
++tar;
rep ( j, 1, int( sqrt( i ) ) ) if ( !( i % j ) ) {
a[j] ^= 1;
if ( j * j != i ) a[i / j] ^= 1;
}
}
int ans;
if ( tar <= m ) ans = tar;
else {
ans = m;
per ( i, n, m + 1 ) {
f[i] = mul( add( n, mul( n - i, f[i + 1] ) ), mpow( i, MOD - 2 ) );
if ( i <= tar ) ans = add( ans, f[i] );
}
}
rep ( i, 1, n ) ans = mul( ans, i );
printf( "%d\n", ans );
return 0;
}
Solution -「六省联考 2017」「洛谷 P3750」分手是祝愿的更多相关文章
- 【BZOJ4873】[六省联考2017]寿司餐厅(网络流)
[BZOJ4873][六省联考2017]寿司餐厅(网络流) 题面 BZOJ 洛谷 题解 很有意思的题目 首先看到答案的计算方法,就很明显的感觉到是一个最大权闭合子图. 然后只需要考虑怎么构图就行了. ...
- 【BZOJ4868】[六省联考2017]期末考试(贪心)
[BZOJ4868][六省联考2017]期末考试(贪心) 题面 BZOJ 洛谷 题解 显然最终的答案之和最后一个公布成绩的课程相关. 枚举最后一天的日期,那么维护一下前面有多少天可以向后移,后面总共需 ...
- 六省联考2017 Day1
目录 2018.3.18 Test T1 BZOJ.4868.[六省联考2017]期末考试 T2 T3 BZOJ.4870.[六省联考2017]组合数问题(DP 矩阵快速幂) 总结 考试代码 T1 T ...
- 六省联考2017 Day2
目录 2018.3.27 Test 总结 T1 T2 T3 BZOJ.4873.[六省联考2017]寿司餐厅(最小割ISAP 最大权闭合子图) 考试代码 T1 T2 T3 2018.3.27 Test ...
- 洛谷 P3747 [六省联考2017]相逢是问候 解题报告
P3747 [六省联考2017]相逢是问候 题目描述 \(\text {Informatik verbindet dich und mich.}\) 信息将你我连结. \(B\) 君希望以维护一个长度 ...
- P3746 [六省联考2017]组合数问题
P3746 [六省联考2017]组合数问题 \(dp_{i,j}\)表示前\(i\)个物品,取的物品模\(k\)等于\(r\),则\(dp_{i,j}=dp_{i-1,(j-1+k)\%k}+dp_{ ...
- [luogu] P3745 [六省联考2017]期末考试 (贪心)
P3745 [六省联考2017]期末考试 题目描述 有 \(n\) 位同学,每位同学都参加了全部的 \(m\) 门课程的期末考试,都在焦急的等待成绩的公布. 第 \(i\) 位同学希望在第 \(t_i ...
- BZOJ 4872 luogu P3750 [六省联考2017]分手是祝愿
4872: [Shoi2017]分手是祝愿 Time Limit: 20 Sec Memory Limit: 512 MB[Submit][Status][Discuss] Description ...
- bzoj千题计划266:bzoj4872: [六省联考2017]分手是祝愿
http://www.lydsy.com/JudgeOnline/problem.php?id=4872 一种最优解是 从大到小灯有亮的就灭掉 最优解是唯一的,且关灯的顺序没有影响 最优解 对每个开关 ...
随机推荐
- day 20 C语言顺序结构基础3
(1).若有定义:int a=100:则语句printf("%d%d%d\n",sizeof("a"),sizeof(a),sizeof(3.14)); 则输出 ...
- RHCSA 第二天
1.Linux中的文件类型以及符号的表示 (1) 普通文件: 使用 ls -l 命令后,第一列第一个字符为 "-" 的文件为普通文件,如上图所示,普通文件一般为灰色字体,绿色字体的 ...
- jsp文本框输入限制问题
1.jsp文本窗口实现控制输入格式 <input onkeyup = "value=value.replace(/[\W]/g,'')" onbeforepaste=&quo ...
- 【刷题-LeetCode】223. Rectangle Area
Rectangle Area Find the total area covered by two rectilinear rectangles in a 2D plane. Each rectang ...
- virtual stuido同时调试多个控制台
问题 UDP作业需要服务器端和客户端收发信息完成交互,需要同时调试多个窗口. 解决办法 但是缺点依然是无法调试2个,修改另一个测试. 所以多开可能依然是好办法.
- golang中如何将json文件解析成结构体
package tool import ( "bufio" "encoding/json" "fmt" "os" ) t ...
- golang中结构体中的嵌套
package main import "fmt" type Base struct { name string } func (b *Base) m1() int { retur ...
- 多线程概述(好处和弊端)(jvm多线程解析、主线程运行示例)
1 package multithread; 2 3 /* 4 * 进程:正在进行中的程序(直译). 5 * 6 * 线程:就是进程中一个负责程序执行的控制单元(执行路径). 7 * 一个进程中可以多 ...
- nginx模块lnmp架构
目录 一:关于lnmp架构 二:目录索引模块 1.目录索引模块内容 1.开启目录索引(创建模块文件) 2.测试 3.重启nginx 4.配置域名解析DNS 5.网址测试 二:目录索引(格式化文件大小) ...
- MySQL 5.7主从搭建(同一台机器)
主从复制原理:复制是 MySQL 的一项功能,允许服务器将更改从一个实例复制到另一个实例. 1)主服务器将所有数据和结构更改记录到二进制日志中. 2)从属服务器从主服务器请求该二进制日志并在本地应用其 ...