原题链接

写到一半发现写不下去了。。。

所以orz xyz32768,您去看这篇题解吧,思路很清晰,我之前写的胡言乱语与之差距不啻天渊

#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <random>
#include <string>
#include <vector>
#include <cmath>
#include <ctime>
#include <queue>
#include <map>
#include <set> #define IINF 0x3f3f3f3f3f3f3f3fLL
#define u64 unsigned long long
#define pii pair<int, int>
#define mii map<int, int>
#define u32 unsigned int
#define lbd lower_bound
#define ubd upper_bound
#define INF 0x3f3f3f3f
#define vi vector<int>
#define ll long long
#define mp make_pair
#define pb push_back
#define is insert
#define se second
#define fi first
#define ps push using namespace std; #define MOD 666623333 void add(int &x, int y) {
x = (x + y) % MOD;
if (x < 0) x += MOD;
} int Add(int x, int y) {
return (x + y + MOD) % MOD;
} void mul(int &x, int y) {
x = 1LL * x * y % MOD;
if (x < 0) x += MOD;
} int Mul(int x, int y) {
return (1LL * x * y % MOD + MOD) % MOD;
} int fpow(int x, int p) {
int ret = 1;
while(p) {
if (p & 1) mul(ret, x);
mul(x, x);
p >>= 1;
}
return ret;
} const int MAXN = 2000;
int n, x, q, h[MAXN + 5], g[MAXN + 5], f[MAXN + 5][MAXN + 5], sum[MAXN + 5][MAXN + 5], l[MAXN + 5], r[MAXN + 5], tmp[MAXN + 5], ans;
pii qrs0[MAXN + 5], qrs[MAXN + 5]; void init() {
cin >> n >> x >> q;
for (int i = 1; i <= q; ++i)
cin >> qrs0[i].fi >> qrs0[i].se;
int tot = 0;
sort(qrs0 + 1, qrs0 + q + 1);
for (int i = 1; i <= q; ++i) {
if (i > 1 && qrs0[i].fi == qrs0[i - 1].fi) continue;
while (tot && qrs[tot].se >= qrs0[i].se) tot--;
qrs[++tot] = qrs0[i];
}
q = tot;
for (int i = 1; i <= q; ++i) tmp[qrs[i].se + 1]--, tmp[qrs[i].fi]++;
for (int i = 2; i <= n; ++i) tmp[i] += tmp[i - 1];
for (int i = 1; i <= n; ++i) {
if (!tmp[i]) {
int j = 0;
while (j + 1 <= q && qrs[j + 1].se < i) j++;
r[i] = j, l[i] = j + 1;
}
else {
int j = 0;
while (j + 1 <= q && qrs[j + 1].se < i) j++;
l[i] = ++j;
while (j + 1 <= q && qrs[j + 1].fi <= i) j++;
r[i] = j;
}
}
} void solve() {
f[0][0] = sum[0][0] = 1;
int p = -1;
for (int i = 1; i <= n; ++i) {
while (p < i && r[p + 1] + 1 < l[i]) p++;
sum[0][i] = 1;
for (int j = 1; j <= n; ++j) {
f[i][j] = Add(sum[j - 1][i - 1], (~p ? -sum[j - 1][p] : 0));
sum[j][i] = Add(sum[j][i - 1], f[i][j]);
}
if (r[i] == q)
for (int j = 1; j <= n; ++j)
add(g[j], f[i][j]);
}
for (int i = 1; i <= x; ++i)
for (int j = 1; j <= n; ++j)
add (h[i], Mul(g[j], Mul(fpow(i, j), fpow(x - i, n - j))));
for (int i = 1; i <= x; ++i)
add (ans, Mul(i, Add(h[i], -h[i - 1])));
mul(ans, fpow(fpow(x, n), MOD - 2));
} int main() {
init();
solve();
cout << ans << endl;
return 0;
}

洛谷P3600随机数生成器——期望+DP的更多相关文章

  1. 洛谷P3600 随机数生成器(期望dp 组合数)

    题意 题目链接 Sol 一条重要的性质:如果某个区间覆盖了另一个区间,那么该区间是没有用的(不会对最大值做出贡献) 首先不难想到枚举最终的答案\(x\).这时我们需要计算的是最大值恰好为\(x\)的概 ...

  2. 洛谷 P3600 - 随机数生成器(期望 dp)

    题面传送门 我竟然独立搞出了这道黑题!incredible! u1s1 这题是我做题时间跨度最大的题之一-- 首先讲下我四个月前想出来的 \(n^2\log n\) 的做法吧. 记 \(f(a)=\m ...

  3. luogu P3600 随机数生成器【dp】

    把期望改成方案数最后除一下,设h[i]为最大值恰好是i的方案数,那么要求的就是Σh[i]*i 首先包含其他区间的区间是没有意义的,用单调栈去掉 然后恰好不好求,就改成h[i]表示最大值最大是i的方案数 ...

  4. [洛谷P5147]随机数生成器

    题目大意:$$f_n=\begin{cases}\frac{\sum\limits_{i=1}^nf_i}n+1&(n>1)\\0&(n=1)\end{cases}$$求$f_n ...

  5. 洛谷P3306 随机数生成器

    题意:给你一个数列,a1 = x,ai = (A * ai-1 + B) % P,求第一个是t的是哪一项,或者永远不会有t. 解:循环节不会超过P.我们使用BSGS的思想,预处理从t开始跳√P步的,插 ...

  6. Luogu P3600 随机数生成器

    Luogu P3600 随机数生成器 题目描述 sol研发了一个神奇的随机数系统,可以自动按照环境噪音生成真·随机数. 现在sol打算生成\(n\)个\([1,x]\)的整数\(a_1...a_n\) ...

  7. 洛谷 P5279 - [ZJOI2019]麻将(dp 套 dp)

    洛谷题面传送门 一道 dp 套 dp 的 immortal tea 首先考虑如何判断一套牌是否已经胡牌了,考虑 \(dp\)​​​​​.我们考虑将所有牌按权值大小从大到小排成一列,那我们设 \(dp_ ...

  8. P3600 随机数生成器

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  9. 洛谷2344 奶牛抗议(DP+BIT+离散化)

    洛谷2344 奶牛抗议 本题地址:http://www.luogu.org/problem/show?pid=2344 题目背景 Generic Cow Protests, 2011 Feb 题目描述 ...

随机推荐

  1. 带你手写基于 Spring 的可插拔式 RPC 框架(四)代理类的注入与服务启动

    上一章节我们已经实现了从客户端往服务端发送数据并且通过反射方法调用服务端的实现类最后返回给客户端的底层协议. 这一章节我们来实现客户端代理类的注入. 承接上一章,我们实现了多个底层协议,procoto ...

  2. C#进阶系列—WebApi

    参考学习优秀博客地址:http://www.cnblogs.com/landeanfen/p/5177176.html

  3. bootstrap基础学习【网格系统】(三)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. 改变checkbox默认样式

    input[type='checkbox']{ width: 5rem; height: 5rem; -webkit-appearance: none; /*清除复选框默认样式*/ backgroun ...

  5. Httpwatch教程

    启动Httpwatch 从IE的“查看”—“浏览器栏”—“HttpWatch”启动HttpWatch.如下图所示: 以下是HttpWatch程序界面 以下用登录我的邮箱mail.163.com例子来展 ...

  6. python os系统

    os模块中关于文件/目录常用的函数使用方法 函数名    使用方法 getcwd()  返回当前工作目录 hdir(path)  改变工作目录 listdir(path='.') 列举指定目录中的文件 ...

  7. centos7 yum安装nginx和 编译安装tengine

    说明 我这里给大家演示一下如何安装nginx,nginx我就不多介绍了,然后我再说一点就是,安装的两种方法都可以,编译安装和yum安装,我不能每个都演示两遍呀,所以看到我这博客的你,学会举一反三好吧? ...

  8. java的设计模式的一些链接,站在巨人的肩膀上,才能看的更远。(均来源与网上的各个大牛的博客中)

    创建型抽象工厂模式 http://www.cnblogs.com/java-my-life/archive/2012/03/28/2418836.html工厂方法 http://www.cnblogs ...

  9. Spring集成kafka,消费者运行时内存占用会一直增长

    Spring集成kafka,消费者运行时内存占用会一直增长? 20C 本人用Spring集成kafka消费者,发布运行时内存占用会一直升高,最后程序挂掉.请各位大神看看,提供解决方法 以下是我的配置文 ...

  10. go环境变量配置 (GOROOT和GOPATH)的区别和含义

    GOROOT就是go的安装路径 在~/.bash_profile中添加下面语句: GOROOT=/usr/local/go export GOROOT 当然, 要执行go命令和go工具, 就要配置go ...