杭電多校 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.pswp.cn/news/451680.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/451680.shtml
英文地址,請注明出處:http://en.pswp.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;沒有多余的能力去思考這些額…