AT987 高橋君
给出 \(n,\ k\) ,求 \(\displaystyle\sum_{i=0}^kC_n^k\) , \(T\) 次询问
\(T\leq10^5,\ 0\leq k\leq n\leq10^5\)
莫队
莫队,考虑如何将 \(\displaystyle\sum_{i=0}^kC_n^i\) 转移到 \(\displaystyle\sum_{i=0}^{k+1}C_n^i,\ \displaystyle\sum_{i=0}^{k-1}C_n^i,\ \displaystyle\sum_{i=0}^kC_{n+1}^i,\ \displaystyle\sum_{i=0}^kC_{n-1}^i\)
令 \(S=\displaystyle\sum_{i=0}^kC_n^i\)
易知 \(\displaystyle\sum_{i=0}^{k+1}C_n^i=S+C_{n}^{k+1},\ \displaystyle\sum_{i=0}^{k-1}C_n^i=S-C_n^k\)
剩下两个转移,可以考虑杨辉三角 \(C_n^m=C_{n-1}^m+C_{n-1}^{m-1}\)
\(\displaystyle\sum_{i=0}^kC_{n+1}^i=\displaystyle\sum_{i=0}^kC_n^i+\displaystyle\sum_{i=0}^{k-1}C_n^i=2\times S-C_n^k\)
\(\therefore \displaystyle\sum_{i=0}^kC_n^i=\frac{C_n^k+\displaystyle\sum_{i=0}^kC_{n+1}^i}{2}\)
\(\therefore \displaystyle\sum_{i=0}^kC_{n-1}^i=\frac{S+C_{n-1}^k}{2}\)
综上所述
\]
然后就可以愉快地莫队辣
时间复杂度 \(O(n\sqrt n)\)
代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 10, P = 1e9 + 7;
int n, bl[maxn], ans[maxn];
int inv[maxn], fact[maxn], fact_inv[maxn];
struct Query {
int l, r, tid;
bool operator < (const Query& o) const {
return bl[l] == bl[o.l] ? r > o.r : l < o.l;
}
} Q[maxn];
int C(int n, int m) {
return n < m ? 0 : 1ll * fact[n] * fact_inv[m] % P * fact_inv[n - m] % P;
}
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
Q[i].tid = i;
scanf("%d %d", &Q[i].l, &Q[i].r);
}
int sz = sqrt(n);
bl[1] = inv[1] = 1;
fact[0] = fact[1] = 1;
fact_inv[0] = fact_inv[1] = 1;
for (int i = 2; i < 100001; i++) {
bl[i] = (i - 1) / sz + 1;
fact[i] = 1ll * i * fact[i - 1] % P;
inv[i] = 1ll * (P - P / i) * inv[P % i] % P;
fact_inv[i] = 1ll * inv[i] * fact_inv[i - 1] % P;
}
sort(Q + 1, Q + n + 1);
int l = 0, r = 0; ll cur = 1;
for (int i = 1; i <= n; i++) {
while (l < Q[i].l) {
cur = (cur + cur - C(l++, r) + P) % P;
}
while (l > Q[i].l) {
cur = 500000004 * (cur + C(--l, r)) % P;
}
while (r < Q[i].r) cur += C(l, ++r);
while (r > Q[i].r) cur -= C(l, r--);
cur = (cur % P + P) % P;
ans[Q[i].tid] = cur;
}
for (int i = 1; i <= n; i++) {
printf("%d\n", ans[i]);
}
return 0;
}
AT987 高橋君的更多相关文章
- 高橋君とホテル / Tak and Hotels
高橋君とホテル / Tak and Hotels Time limit : 3sec / Stack limit : 256MB / Memory limit : 256MB Score : 700 ...
- 高橋君とカード / Tak and Cards
高橋君とカード / Tak and Cards Time limit : 2sec / Stack limit : 256MB / Memory limit : 256MB Score : 300 p ...
- 【AT987】高橋君
题目 成爷爷一眼秒,\(tql!!!\) 多组询问,求 \[\sum_{i=0}^kC_{n}^i \] 发现\(k<=n\)啊,于是我们可以把一组询问抽象成一个区间\([k,n]\) 左指针的 ...
- 高橋君とカード / Tak and Cards AtCoder - 2037 (DP)
Problem Statement Tak has N cards. On the i-th (1≤i≤N) card is written an integer xi. He is selectin ...
- AtCoder Beginner Contest 044 C - 高橋君とカード / Tak and Cards
题目链接:http://abc044.contest.atcoder.jp/tasks/arc060_a Time limit : 2sec / Memory limit : 256MB Score ...
- AtCoder Beginner Contest 044 A - 高橋君とホテルイージー / Tak and Hotels (ABC Edit)
Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement There is a hotel with ...
- AtCoder D - 高橋君と見えざる手 / An Invisible Hand 简单思维题
http://arc063.contest.atcoder.jp/tasks/arc063_b 因为每次都是选取最大值,那么用dp[i]表示第i个数结尾能得到最大是多少. 其实就是用a[i]去减去左边 ...
- AtCoder Beginner Contest 022 A.Best Body 水题
Best Body Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://abc022.contest.atcoder.jp/tasks/abc02 ...
- AtCoder-arc060 (题解)
A - 高橋君とカード / Tak and Cards (DP) 题目链接 题目大意: 有 \(n\) 个数字,要求取出一些数字,使得它们的平均数恰好为 \(x\) ,问有几种取法. 大致思路: 只要 ...
随机推荐
- 08-HTML-框架标签
<html> <head> <title>框架标签学习</title> <meta charset="utf-8"/> ...
- jquery 树形导航菜单无限级
转自:http://www.jb51.net/article/71615.htm 侵删<!DOCTYPE html> <html lang="en"> &l ...
- SpringBoot设置文件上传大小限制--默认为1M
SpringBoot默认上传文件大小不能超过1MB,超过之后会报以下异常:org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeL ...
- Spring学习之旅(八)Spring 基于AspectJ注解配置的AOP编程工作原理初探
由小编的上篇博文可以一窥基于AspectJ注解配置的AOP编程实现. 本文一下未贴出的相关代码示例请关注小编的上篇博文<Spring学习之旅(七)基于XML配置与基于AspectJ注解配置的AO ...
- Android为TV端助力 比较完善json请求格式
public static String getHttpText(String url) { if (MyApplication.FOR_DEBUG) { Log.i(TAG, "[getH ...
- ionic提示弹框
//提示框 .factory('TipsPort', function ($ionicPopup) { var TipsPort = function (tipsText, SureFunction, ...
- linux tmp清理这些事
tmp目录 首先看下FHS的定义. FHS(Filessystem Hierarchy Standard) 的重点在于规范每个特定的目录下应该要放置什么样子的数据. tmp约定的存放内容 /tmp 这 ...
- HttpWebRequest 请求带OAuth2 授权的webapi
OAuth 2.0注意事项: 1. 获取access_token时,请使用POST private static string GetAuthorization(string username, st ...
- The Microsoft Distributed Transaction Coordinator (MS DTC) has cancelled the distributed transaction.
同事反馈一个系统在运行一个存储过程时遇到了下面错误: Msg 1206, Level 18, State 169, Procedure xxxxxx, Line 118The Microsoft Di ...
- java开发基础知识学习
java环境配置 classpath: .当前目录 path: java 命令所在目录 jdk安装目录 jdk/bin jre安装目录 jre/bin 安装JDK后配置环境变量如下: 安装过程用到了j ...