杭电多校 Harvest of Apples 莫队

问题 B: Harvest of Apples

时间限制: 1 Sec  内存限制: 128 MB
提交: 78  解决: 35
[提交] [状态] [讨论版] [命题人:admin]

题目描述

There are n apples on a tree, numbered from 1 to n.
Count the number of ways to pick at most m apples.

 

输入

The first line of the input contains an integer T (1≤T≤105) denoting the number of test cases.
Each test case consists of one line with two integers n,m (1≤m≤n≤105).

 

输出

For each test case, print an integer representing the number of ways modulo 109+7.

 

样例输入

2
5 2
1000 500

 

样例输出

16
924129523

 

[提交][状态]

官方题解

重点就是划出来的公式,然后套莫队即可

代码:

#include <bits/stdc++.h>
using namespace std;
const  int maxn=1e5+100;
#define INF 0x3f3f3f;
const int mod=1e9+7;
typedef long long ll;
struct node
{ll n,m;int p;
}s[maxn];
ll block;
ll fac[maxn],inv[maxn];
ll ans[maxn];
ll noww;
ll qpow(ll x,ll y){ll ret = 1;while(y){if(y&1) ret = ret * x % mod;x = x * x % mod;y >>= 1;}return ret;
}
void init(){fac[0] = 1;for(int i=1; i<maxn; i++) fac[i] = fac[i-1] * i % mod;inv[maxn-1] = qpow(fac[maxn-1],mod-2);for(int i=maxn-2; i>=0; i--) inv[i] = inv[i+1] * (i+1) % mod;
}
ll C(ll x,ll y)
{return fac[x] * inv[y] %mod * inv[x-y] % mod;
}
bool cmp(node x,node y)
{if(x.n / block == y.n / block)  return x.m < y.m;return x.n / block < y.n / block;
}
int main()
{int t;scanf("%d",&t);block = sqrt(maxn);init();for(int i=0; i<t; i++){scanf("%lld%lld",&s[i].n,&s[i].m);s[i].p = i;}sort(s,s + t,cmp);ll l = 1,r = 1;noww = 2;for(int i=0; i<t; i++){while(l < s[i].n){l++;noww = (2 * noww % mod - C(l-1,r)  + mod) % mod;}while(l > s[i].n){noww = (noww + C(l-1,r)) % mod * inv[2] % mod;l--;}while(r < s[i].m){r++;noww = (noww + C(l,r)) % mod;}while(r > s[i].m){noww = (noww + mod - C(l,r)) % mod;r--;}ans[s[i].p] = noww;}for(int i=0; i<t; i++){printf("%lld\n",ans[i]);}return 0;
}

刚刚学了莫队,赶紧把原来两个莫队给补了

转载于:https://www.cnblogs.com/renxiaomiao/p/9642664.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/451680.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux和GNU之间的关系

Linux只是一个操作系统内核而已&#xff0c;而GNU提供了大量的自由软件来丰富在其之上各种应用程序。 因此&#xff0c;严格来讲&#xff0c;Linux这个词本身只表示Linux内核&#xff0c;但在实际上人们已经习惯了用Linux来形容整个基于Linux内核&#xff0c;并且使用GNU 工程各…

二、【List、Set、数据结构、Collections】

主要内容 数据结构List集合Set集合Collections 教学目标 能够说出List集合特点 能够说出常见的数据结构 能够说出数组结构特点 能够说出栈结构特点 能够说出队列结构特点 能够说出单向链表结构特点 能够说出Set集合的特点 能够说出哈希表的特点 使用HashSet集合存储自定义元素…

@Java | Thread synchronized - [ 线程同步锁 基本使用]

对实现了Runnable或者Callable接口类&#xff0c;可以通过多线程执行同一实例的run或call方法&#xff0c;那么对于同一实例中的局部变量&#xff08;非方法变量&#xff09;就会有多个线程进行更改或读取&#xff0c;这就会导致数据不一致&#xff0c;synchronized(关键字)可以…

解决bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 报错&#xff1a; ### Cause: java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符; bad SQL grammar []; nested exception is …

开源代码的使用 二次开发

开源开发&#xff0c;就我的理解&#xff0c;有三种。 1、当作底层基础&#xff0c;使用。例如大家使用mysql就算。有人会认为我说错了。但我认为&#xff0c;开发不代表就是要同一个语言&#xff0c;甚至修改代码。例如我们使用动态库&#xff0c;原先的动态库是什么写的并不重…

Java Application和Java Applet

Java Applet和Java Application 主要区别&#xff1a; &#xff08;1&#xff09;运行方式不同。Java Applet程序不能单独运行&#xff0c;它必须依附于一个用HTML语言编写的网页并嵌入其中&#xff0c;通过与Java兼容的浏览器来控制执行。 Java Application是完整的程序&a…

激活prompt

1.下载SQLPrompt 2. 断网&#xff0c; 打开注册机&#xff0c;拷贝验证码 2. 点击activate&#xff0c; 拷贝代码 转载于:https://www.cnblogs.com/zxhome/p/9459415.html

Map 四种获取 key 和 value 值的方法,以及对 map 中的元素排序

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。1. 获取map的值主要有四种方法&#xff0c;分为两类&#xff1a; 调用 map.keySet() 方法来获取 key 和 value 的值&#xff1b; 通…

三、【Map】

主要内容 Map集合 教学目标 能够说出Map集合特点 使用Map集合添加方法保存数据 使用”键找值”的方式遍历Map集合 使用”键值对”的方式遍历Map集合 能够使用HashMap存储自定义键值对的数据 能够使用HashMap编写斗地主洗牌发牌案例 第一章 Map集合 1.1 概述 现实生活中&am…

五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT) – 整理

当Adobe、Microsoft、Sun等一系列巨头开始表现出对”开源”的青睐时&#xff0c;”开源”的时代即将到来&#xff01; 最初来自&#xff1a;sinoprise.com/read.php?tid-662-page-e-fpage-1.html&#xff08;遗憾的是这个链接已经打不开了&#xff09;&#xff0c;我基本未改…

[转]自然语言处理中的Attention Model:是什么及为什么

自然语言处理中的Attention Model&#xff1a;是什么及为什么 https://blog.csdn.net/malefactor/article/details/50550211/* 版权声明&#xff1a;可以任意转载&#xff0c;转载时请标明文章原始出处和作者信息 .*/ author: 张俊林 要是关注深度学习在自然语言处理方面…

关西旅游地名读法学习

京都個人旅行ための自己勉強 京都篇 伏見稲荷大社「ふしみいなりだいしゃ」 京都府京都市伏見区深草にある神社。旧称は稲荷神社 全国に約三万社あるといわれる稲荷神社の総本社である。 初詣では近畿地方の社寺で最多の参拝者を集める。(日本第&#xff14;位)。 清水寺 「き…

jsp页面c标签循环map , c:foreach 循环map

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 <c:forEach items"${customerMap}" var"item"> ${item.code} ${item.name} </c:forEach> map…

JSP上下文

上下文即ServletContext,是一个全局的储存信息的空间&#xff0c;服务器启动&#xff0c;其就存在&#xff0c;服务器关闭&#xff0c;其才释放。所有用户共用一个ServletContext。所以&#xff0c;为了节省空间&#xff0c;提高效率&#xff0c;ServletContext中&#xff0c;要…

python ERROR: Cannot uninstall ‘certifi‘.

解决方法 pip install xxx --ignore-installed certifigithub参考链接

HDU - 6383 百度之星2018初赛B 1004 p1m2(二分答案)

p1m2 Accepts: 1003Submissions: 4595Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 131072/131072 K (Java/Others)Problem Description度度熊很喜欢数组&#xff01;&#xff01;我们称一个整数数组为稳定的&#xff0c;若且唯若其同时符合以下两个条件&#xff1a…

整合营销推广该如何做?

思维方式太重要了&#xff0c;如果你认为你的产品只是推广出去就好&#xff0c;推广就能有销量的话&#xff0c;那你大错特错了。本文主要的分享给创业者和企业老板的&#xff0c;如果你想做好网络营销推广&#xff0c;这篇文章不看是你的损失。 首先记住&#xff1a;推广不等于…

如何使用git命令行上传项目到github

参考文献&#xff1a; 如何使用git命令行上传项目到github 感谢楼主分享&#xff01;

优质的程序员需为代码效率而呕心沥血

一个好的程序员必须要为自己写出来的代码执行效率负责。并非仅仅实现了功能代码就完事了。很多工作一两年的程序员都还仅是处于实现功能代码为荣的阶段&#xff0c;不会过多去思考如何提高代码的执行效率。有的人认为是自己的能力就这样&#xff0c;没有多余的能力去思考这些额…