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的排列,每次操作删除一个数,求每次操作前排列逆序对的个数 分析 每次 ...
随机推荐
- CSS Basic Memo
1.bootstrap 清除浮动原理 .clearfix:before, .clearfix:after { content: ' ', display: table } .clearfix:afte ...
- unity中鼠标左键控制摄像机视角上下左右移动
enum RotationAxes { MouseXAndY, MouseX, MouseY } RotationAxes axes = RotationAxes.MouseXAndY; //@Hid ...
- Linux下的python3,virtualenv,Mysql、nginx、redis安装配置
常用服务安装部署 学了前面的Linux基础,想必童鞋们是不是更感兴趣了?接下来就学习常用服务部署吧! 安装环境: centos7 + vmware + xshell MYSQL(mariadb) ...
- Java容器解析系列(1) 迭代的进化——从Enumeration到Iterator
在Java中,对于所有的Collection,都有一个特性,可以通过迭代器来遍历和删除其中的元素,因为Collection接口继承自Iterable接口. public interface Colle ...
- centos7.4 分区 格式化
1. 查看磁盘 [root@yzb-centos72-3 ~]# fdisk -l Disk /dev/vda: 32.2 GB, 32212254720 bytes, 62914560 sector ...
- ubuntu16.04+caffe+GPU+cuda+cudnn安装教程
步骤简述: 1.安装GPU驱动(系统适配,不采取手动安装的方式) 2.安装依赖(cuda依赖库,caffe依赖) 3.安装cuda 4.安装cudnn(只是复制文件加链接,不需要编译安装的过程) 5. ...
- 苹果pns推送和唤醒
使用的是苹果自己的推送服务器 certificatePath 推送证书 VoipcertificatePath 唤醒证书 certificatePassword 证书密码 以上三项都是需要使用上架了A ...
- Python全栈之路----递归
alex博客中递归的博文 我之前确实没讲明白递归这个东西 递归就是在函数的运行过程中调用自己. 但递归不断调用自己是有限度的,默认限度为1000.函数不断被压进栈,当超过递归限度时会造成栈溢出 ...
- some learning
一.windows下迁移access到mysql Windows下 Access 数据 迁移到 Mysql(5.5)数据库 . 具体做法 . 在access的表中选择,文件->导出->保存 ...
- 寒假作业pta3
某地老鼠成灾,现悬赏抓老鼠,每抓到一只奖励10元,于是开始跟老鼠斗智斗勇:每天在墙角可选择以下三个操作:放置一个带有一块奶酪的捕鼠夹(T),或者放置一块奶酪(C),或者什么也不放(X).捕鼠夹可重复利 ...