跳方格 離散化 差分

2021-10-08 23:56:04 字數 1233 閱讀 1086

時間限制: 1 sec  記憶體限制: 128 mb

題目描述

有乙個長長的走廊,巨神 ctt 把它分成m方格,從左到右編號為1,2,...,m。

有一天,巨神 ctt 得到了n個蹦床,他把這些蹦床放在方格裡,他在編號為1的方格裡放了乙個蹦床,在編號為2,3,...,m-1的方格中放置了n-1個蹦床(乙個方格只能放乙個蹦床)。

巨神 ctt 估算了自己的跳遠水平和蹦床的彈性,知道了他從第i個蹦床跳躍最多可以跳過li個方格(若這個蹦床放置的方格編號為k,則他最多能跳到編號為k+li的方格裡,l1表示從編號為1的方格裡的蹦床跳躍最可以跳過l1個方格),他開始計算從編號為1的方格,從左向右在蹦床上跳躍,最終到達編號為m的方格上,這樣跳躍的方式有多少種。

巨神 ctt 非常生氣,因為他直接秒出了答案,所以他用這繁雜的統計來考考你,但你的結果可以對109+7取模。

輸入第一行三個正整數n,m,l1,表示蹦床的個數、方格的個數和從編號為1的方格裡的蹦床跳躍最可以跳過的方格數。

接下來n-1行,每行兩個正整數,第i行的兩個正整數分別表示第i個蹦床所在方格的編號和從第i個蹦床跳躍最多可以跳過的方格數。

輸出僅一行乙個整數表示答案。

樣例輸入

【樣例1】

3 5 3

2 14 1

【樣例2】

5 7 2

2 24 1

5 26 1

樣例輸出

【樣例1】

1【樣例2】

2

#include using namespace std;

typedef long long ll;

const int mod=1e9+7;

const int maxn=1e6+10;

struct nodea[maxn];

bool operator<(const node &a,const node &b)

ll f[maxn];

int n,m,p,ans;

int fl(int x) else l = mid + 1;

}return res;

}int fr(int x) else r = mid - 1;

}return res;

}int main()

}printf("%lld\n", (ans + f[n + 1]) % mod);

return 0;

}

B Light bulbs 離散化 差分

b.light bulbs 離散化 差分 題意 n個燈剛開始是關的,m次操作對 l,r 內的全部的燈反轉。問最後有幾個燈亮著。思路 剛開始差分直接便利了所有點,t了。所有只需要考慮哪些有貢獻的2 m個點就行了,對於區間中哪些0的部分,就不需要遍歷了。對於重複的點也不用管。include using ...

離散化系列 離散化 字首和 差分

區間和 acwing 802.區間和 這道題所展現的情況就是,資料並不是很多,利用到的元素值也不大,但關鍵就是下標太大,無法正常的以陣列下標來進行操作。因此,離散化,在這裡就是很合適了,把大的下標對映為小的下標後再進行處理。對於這道題的解題步驟具體可分為一下幾步 1.儲存,就是將所用用到的下標存起來...

upc 考試 離散化 差分

考試 時間限制 1 sec 記憶體限制 128 mb 題目描述 s中開展了省選集訓,有n位選手的實力參差不齊。眾所周知,如果題目太水,那麼就會有人ak離場後打遊戲,如果題目太難,那麼就會有人頹廢離場後打遊戲。作為出題人的你自然不希望有太多人出去打遊戲,不然ob就會很生氣。所以你需要設定題目的難度,盡...