BZOJ 4584 luogu P3643: [Apio2016]赛艇
4584: [Apio2016]赛艇
Time Limit: 70 Sec Memory Limit: 256 MB
[Submit][Status][Discuss]
Description
Input
第一行包括一个整数N,表示学校的数量。接下来N行,每行包括两个正整数,用来描述一所学校。其中第行包括的
Output
输出一行,一个整数,表示所有可能的派出划艇的方案数除以1,000,000,007得到的余数
Sample Input
1 2
2 3
Sample Output
HINT
Source
看dalao博客弄懂的 链接
#include<bits/stdc++.h> using namespace std; const long long INF = ; const int MAXN = ;
long long n, p, top, ans;
long long inv[MAXN];
long long a[MAXN], b[MAXN], l[MAXN], r[MAXN];
long long h[MAXN + MAXN];
long long C[MAXN], g[MAXN];
map<long long, int> k; 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;
} void get_inv() {
inv[] = ;
for (int i = ; i <= n; ++i) {
inv[i] = - ( inv[INF % i] * (INF / i) ) % INF;
while (inv[i] < ) inv[i] += INF;
}
} int main() {
read(n);
get_inv();
for (int i = ; i <= n; ++i) {
read(a[i]);
read(b[i]);
++b[i];
h[i + i - ] = a[i];
h[i + i] = b[i];
}
sort(h + , h + + n + n);
top = unique(h + , h + n + n + ) - h - ;
for (int i = ; i <= top; ++i) {
k[h[i]] = i;
}
for (int i = ; i <= n; ++i) {
l[i] = k[a[i]];
r[i] = k[b[i]];
}
// cout << top << "\n";
// for (int i = 1; i <= top; ++i) cout << h[i]<<" ";
// for (int i = 1; i <= n; ++i) cout << l[i]<<" "<<r[i]<<"\n";
g[] = ;
for (int j = ; j <= top; ++j) {
int L = h[j + ] - h[j];
C[] = ;
// cerr<<"j = "<<j<<"\n";
for (int i = ; i <= n; ++i) {
C[i] = C[i - ] * (L + i - ) % INF * inv[i] % INF;
// cerr<<i<<" "<<C[i]<<"\n";
}
for (int i = n; i > ; --i) {
if (l[i] <= j && r[i] > j) {
long long f = , m = , c = L;
for (int p = i - ; p >= ; --p) {
f = (f + c * g[p]) % INF;
if (l[p] <= j && r[p] >= j + ) {
c = C[++m];
}
}
g[i] = (g[i] + f) % INF;
}
}
}
for (int i = ; i <= n; ++i) ans = (ans + g[i]) % INF;
printf("%lld\n", ans);
return ;
}
BZOJ 4584 luogu P3643: [Apio2016]赛艇的更多相关文章
- [组合][DP]luogu P3643 [APIO2016]划艇
题面 https://www.luogu.com.cn/problem/P3643 对于一个序列,第i项可取的值在{0}∪[ai,bi]之间,求使序列非零部分单调递增的方案数 分析 设 $f[i][j ...
- 【BZOJ4584】[Apio2016]赛艇 DP
[BZOJ4584][Apio2016]赛艇 Description 在首尔城中,汉江横贯东西.在汉江的北岸,从西向东星星点点地分布着个划艇学校,编号依次为到.每个学校都拥有若干艘划艇.同一所学校的所 ...
- BZOJ 3052/Luogu P4074 [wc2013]糖果公园 (树上带修莫队)
题面 中文题面,难得解释了 BZOJ传送门 Luogu传送门 分析 树上带修莫队板子题... 开始没给分块大小赋初值T了好一会... CODE #include <bits/stdc++.h&g ...
- BZOJ 3931 / Luogu P3171 [CQOI2015]网络吞吐量 (最大流板题)
题面 中文题目,不解释: BZOJ传送门 Luogu传送门 分析 这题建图是显然的,拆点后iii和i′i'i′连容量为吞吐量的边,根据题目要求,111和nnn的吞吐量看作∞\infty∞. 然后用di ...
- BZOJ 3894 / Luogu P4313 文理分科 (拆点最小割)
题面 中文题面- BZOJ 传送门 Luogu 传送门 分析 这道题类似于BZOJ 3774 最优选择,然后这里有一篇博客写的很好- Today_Blue_Rainbow's Blog 应该看懂了吧- ...
- BZOJ 2039 / Luogu P1791 [2009国家集训队]employ人员雇佣 (最小割)
题面 BZOJ传送门 Luogu传送门 分析 考虑如何最小割建图,因为这仍然是二元关系,我们可以通过解方程来确定怎么建图,具体参考论文 <<浅析一类最小割问题 湖南师大附中 彭天翼> ...
- BZOJ 2127 / Luogu P1646 [国家集训队]happiness (最小割)
题面 BZOJ传送门 Luogu传送门 分析 这道题又出现了二元关系,于是我们只需要解方程确定怎么连边就行了 假设跟SSS分在一块是选文科,跟TTT分在一块是选理科,先加上所有的收益,再来考虑如何让需 ...
- [BZOJ 1535] [Luogu 3426]SZA-Template (KMP+fail树+双向链表)
[BZOJ 1535] [Luogu 3426]SZA-Template (KMP+fail树+双向链表) 题面 Byteasar 想在墙上涂一段很长的字符,他为了做这件事从字符的前面一段中截取了一段 ...
- [BZOJ 3295] [luogu 3157] [CQOI2011]动态逆序对(树状数组套权值线段树)
[BZOJ 3295] [luogu 3157] [CQOI2011] 动态逆序对 (树状数组套权值线段树) 题面 给出一个长度为n的排列,每次操作删除一个数,求每次操作前排列逆序对的个数 分析 每次 ...
随机推荐
- [Codeforces613E]Puzzle Lover
Problem 给你2*n的格子,每个格子有一个字母,从任意一点出发,不重复的经过上下左右,生成要求的字符串.问有几种不同的走法. Solution 分三段,左U型.中间.右U型. 分别枚举左边和右边 ...
- css样式问题解决
1.关于滚动条 (1)布局后由于写了 overflow-y: scroll; 在内容还没有超出就出现了滚动条. 我的解决方法是直接去掉了滚动条: .class::-webkit-scrollbar { ...
- 2019-04-16-day033-锁与队列
内容回顾 几个问题 概念多,练习少 不问问题 概念?代码? Process类 并发并行 并发 是同一时间段内多个任务交替使用同一个cpu 并行 是在同一个时刻多个任务在不同的cpu上同时执行 同步异步 ...
- Page 对象详解
Page 对象 由于网页编译后所创建的类由Page派生而来,因此网页可以直接使用Page对象的属性.方法和事件. Page对象的常用属性 1.IsPostBack(bool类型) 获取一个值,该值指示 ...
- 关于手贱--npm 误改全局安装路径
1.通过 npm config set prefix "目录路径" 来设置.通过 npm config get prefix 来获取当前设置的目录. 2.npm config se ...
- [转] ROS2源码编译和安装
机器人开源操作系统软件ROS在10年后, 终于推出全新架构的ROS2,代号“ardent”.中文意思为“热心的美洲鳖”,看来ROS2要从ROS1的“海龟”变成“土鳖”系列了. 与此同时,ROS2的编译 ...
- Python 使用sys.exc_info自己捕获异常详细信息
一般程序中,我们需要对异常进行捕获来保证程序的健壮.但是debug的时候,我们可能需要异常的详细信息,这时可以使用sys.exec_info来处理: import traceback import s ...
- git教程: 查看文件状态与修改内容
转载:时光机穿梭 我们已经成功地添加并提交了一个readme.txt文件,现在,是时候继续工作了,于是,我们继续修改readme.txt文件,改成如下内容: Git is a distributed ...
- RESTful Loads
RESTful 一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制. 概述 ...
- 第二节《Git暂存区》
在上一节中我们的demo版本库经历了一次提交,我们可以使用git og --stat查看一下提交日志. [root@git demo]# git log --statcommit 986a1bd458 ...