對任意給定的n和m,求
首先我們需要組合數表,可以使用遞推公式
void solve()}}
當我們得到了這個矩陣之後,我們要求n行m列之間所有元素的和,因為還有很多詢問,肯定不能暴力,我們只需要做預處理就可以解決問題,我們用 sum[i][j] 代表 第 i 行,前 j 個數的和,因此在詢問給出n,m之後,我們只需要對前n行的sum[i][m]求和即可時間複雜度o(n*q)
**如下:
#include using namespace std;
typedef long long ll;
const int maxn = 1e3 + 10;
const int mod = 19260817;
int c[maxn][maxn];
void solve()
}}int sum[maxn][maxn];
int main()
}int ans = 0,n,m;
for (int i=1; i<=t; i++)
printf("%d\n",ans);
}return 0;
}
P5239 回憶京都
先要了解一下組合數和楊輝三角的關係 c 0,0 c 1,0 c 1,1 c 2,0 c 2,1 c 2,2 楊輝三角大概就是這樣乙個結構,所以只要乙個二維字首就好了qaq就變成了 c 0,0 c 1,0 c 0,0 c 1,1 c 1,0 c 0,0 c 2,0 c 1,0 c 0,0 c 2,1 ...
洛谷七月月賽P3817
小a有n個糖果盒,第i個盒中有a i 顆糖果。小a每次可以從其中一盒糖果中吃掉一顆,他想知道,要讓任意兩個相鄰的盒子中加起來都只有x顆或以下的糖果,至少得吃掉幾顆糖。輸入格式 第一行輸入n和x。第二行n個整數,為a i 輸出格式 至少要吃掉的糖果數量。輸入樣例 1 3 3 2 2 2 輸出樣例 1 ...
洛谷三月月賽 P5238 整數校驗器
有些時候需要解決這樣一類問題 判斷乙個數 是否合法。合法當且僅當其滿足如下條件 你需要實現這樣乙個校驗器,對於給定的 l,rl,rl,r,多次判斷 是否合法。輸入格式 第一行三個整數 l,r,tl,r,tl,r,t,表示校驗器的校驗區間為 l,r l,r l,r 以及需要校驗的 的個數。接下來 tt...