BZOJ 4872 luogu P3750 [六省联考2017]分手是祝愿
4872: [Shoi2017]分手是祝愿
Time Limit: 20 Sec Memory Limit: 512 MB
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
0 0 1 1
Sample Output
HINT
Source
直接概率dp懒得写式子了
应该很久以前就做过这题但是一直没有在BZOJ交
#include<bits/stdc++.h> using namespace std; const int MAXN = ;
const int INF = ;
long long n, k;
long long f[MAXN], ans;
long long dp[MAXN]; template <typename tn> void read (tn & a) {
tn x = , f = ;
char c = getchar();
while ( c < '' || c > '' ) { if (c == '-') f = -; c = getchar(); }
while ( c >= '' && c <= '' ) { x = x * + c - ''; c = getchar(); }
a = f == ? x : -x;
} long long inv (long long x) {
if (x == ) return ;
return - ( inv(INF % x) * (INF / x) ) % INF;
} int main() {
read(n);
read(k);
dp[n] = ;
for (int i = n - ; i > k; --i) {
dp[i] = + (n - i) * (dp[i + ] + ) * inv(i);
dp[i] %= INF;
}
ans = ;
for (int i = ; i <= n; ++i) read(f[i]);
for (int i = n; i >= ; --i) {
if (f[i]) {
++ans;
for (int j = ; j * j <= i; ++j) {
if (i % j == ) {
if (j * j == i) { f[j] = - f[j]; continue; }
f[j] = - f[j];
f[i / j] = - f[i / j];
}
}
}
}
long long an = min(ans, k);
for (int i = ans; i > k; --i) {
an += dp[i];
an %= INF;
}
for (int i = ; i <= n; ++i) {
an *= i;
an %= INF;
}
while (an < ) an += INF;
an %= INF;
cout << an << "\n";
return ;
}
BZOJ 4872 luogu P3750 [六省联考2017]分手是祝愿的更多相关文章
- luogu P3750 [六省联考2017]分手是祝愿
luogu loj 可以发现在最优策略中,每种操作最多只会做一次,并且操作的先后顺序并不会影响答案,所以考虑从后往前扫,碰到一个\(1\)就对这个位置\(i\)进行操作,这样的操作一定是最优策略.记最 ...
- P3750 [六省联考2017]分手是祝愿 期望DP
\(\color{#0066ff}{ 题目描述 }\) Zeit und Raum trennen dich und mich. 时空将你我分开. B 君在玩一个游戏,这个游戏由 \(n\) 个灯和 ...
- 洛谷P3750 [六省联考2017]分手是祝愿(期望dp)
传送门 嗯……概率期望这东西太神了…… 先考虑一下最佳方案,肯定是从大到小亮的就灭(这个仔细想一想应该就能发现) 那么直接一遍枚举就能$O(nlogn)$把这个东西给搞出来 然后考虑期望dp,设$f[ ...
- 洛谷 P3750 [六省联考2017]分手是祝愿
传送门 题解 //Achen #include<algorithm> #include<iostream> #include<cstring> #include&l ...
- [bzoj4872] [洛谷P3750] [六省联考2017] 分手是祝愿
Description Zeit und Raum trennen dich und mich. 时空将你我分开. \(B\) 君在玩一个游戏,这个游戏由 \(n\) 个灯和 \(n\) 个开关组成, ...
- 洛谷 P3750 - [六省联考2017]分手是祝愿(期望 dp)
题面传送门 首先我们需注意到这样一个性质:那就是对于任何一种状态,将其变为全 \(0\) 所用的最小步数的方案是唯一的--考虑编号为 \(n\) 的灯,显然如果它原本是暗着的就不用管它了,如果它是亮着 ...
- bzoj千题计划266:bzoj4872: [六省联考2017]分手是祝愿
http://www.lydsy.com/JudgeOnline/problem.php?id=4872 一种最优解是 从大到小灯有亮的就灭掉 最优解是唯一的,且关灯的顺序没有影响 最优解 对每个开关 ...
- [BZOJ4872][六省联考2017]分手是祝愿(期望DP)
4872: [Shoi2017]分手是祝愿 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 516 Solved: 342[Submit][Statu ...
- [bzoj 4872][六省联考2017]分手是祝愿
传送门 Description N个灯按照1~N标号,按下一个开关i,所有标号是i的约数的开关都改变状态,目标是关掉所有的灯,如果当前最优策略≤k就直接按照最优策略走.否则随机按下一个开关.给出每个灯 ...
随机推荐
- M0内核的STM32实现比较精准的延时
#include "drv_delay.h"#include "core_cm0plus.h" //我的系统时钟设置为4MHz /*************** ...
- Forth词典条目结构
body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...
- 数组的高级API-sort
按升降序排列数组项.本身存在的问题:只能通过第一位排列.解决方法:通过回调函数进行规制设置. a - b 升序. b - a 降续. 其内部运用了冒泡排序 <!DOCTYPE html> ...
- JVM虚拟机 YGC和FGC发生的具体场景
1.YGC和FGC是什么 YGC :对新生代堆进行gc.频率比较高,因为大部分对象的存活寿命较短,在新生代里被回收.性能耗费较小. FGC :全堆范围的gc.默认堆空间使用到达80%(可调整)的时候会 ...
- xpath提取到的中文乱码时的解决办法
βҳ转换为正常的中文:
- FreeSWITCH与FreeSWITCH对接
(主机A ---> 主机B)192.168.100.A主机:修改/usr/local/freeswitch/conf/dialplan/default.xml 10 <ex ...
- MarkDown学习——基础用法
目录 MarkDown开发版本MD2All基础用法 此处有代码<a id="top"></a>作为页内锚点 此处是用自动生成的目录 MarkDown是什么M ...
- 与C/C++关键字extern有关的原理
关键字有一定的语义,但是用法不唯一. 对于C/C++语言的预编译.编译.汇编.链接.我相信大家在接触C++一年不到就背的滚瓜烂熟,但是其中的细节,是后来才慢慢想明白的.为什么我不讲extern关键字呢 ...
- Django 数据库迁移
Django 数据库迁移 DATABASES = { # Django默认配置使用sqlite3数据库 # 'default': { # 'ENGINE': 'django.db.backends.s ...
- GoStudy——Go语言入门第一个事例程序:HelloWorld.go
package main import ( "fmt" ) func main() { fmt.Println("Hello,world!!!--2019年4月1 ...