這是乙個數學題牛客訓練賽E

2022-05-01 01:51:14 字數 1196 閱讀 9438

已知有乙個n+1個數的數列,對於給定的a0和an ,當i滿足當1<=i<=n-1時有 

現在小星想知道對於這個數列一段區間的和。

第一行輸入四個數 n,a0,an,q
接下來q行 每行輸入兩個數l,r

0=< n,a0,an<=1e9,q<=100000

0<=l<=r<=n

對於每組查詢輸出al到ar的和
示例1

3 0 3 2

1 11 3

1

6

為了對萌新表現出友好,資料保證了對於ai的每一項都是整數

今天比賽遇上這個題,開始以為要用到組合數,而且資料比較大,可能會超時,一時間沒有思路。

比賽快結束時發現

可以化簡為 ai=(a0*(n-i)+an*j)/n  把組合數消掉了,極大加快運算速度,將每項依次算出來再相加,
於是匆匆寫好了**,提交後發現過了百分之20,後面的超時了,比賽結束了我還沒找到原因

翻看別人的**,發現他沒用用到累加,看樣子有通式,突然我想到了等差數列的求和公式,ai確實滿足等差數列的通項,寫好**又發現沒過

#include #include 

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

intmain()

}return0;

}

view code

想了很久想到可能會爆掉資料,把那些an m l r不超過int範圍的資料改成long long後就ac了,做個題真不容易

雖然那些資料不會爆,但是它們在計算過程中會爆掉,比如 m和n都是int型別  m+n超過int範圍的話會使m+n的結果出錯

做這道題真是不容易啊

E 這是乙個數學題

已知有乙個n 1個數的數列,對於給定的a 0和an 當i滿足當1 i n 1時有 現在小星想知道對於這個數列一段區間的和。第一行輸入四個數 n,a0,an,q接下來q行 每行輸入兩個數l,r 0 n,a 0,an 1e9,q 100000 0 l r n 對於每組查詢輸出al 到ar的和 3 0 3...

牛客訓練賽25 A 因數個數

題目鏈結 無語。這題很迷啊,原諒我的菜,剛開始想用預處理尤拉篩和字首和,可是這題太血崩了,這樣一樣要遍歷,1 e9的範圍,後來翻網上題解,發現其實是個還算經典的問題 這題可以用離散和做嘛,如何離散和?先別著急,我們先想想,為啥這題不用尤拉函式做。我們平時尤拉函式的題,都還能算比較難的題了,這題不僅僅...

牛客寒假第一場訓練賽

比賽鏈結 題解b題 構造題先找構造括號效率比較高的方法 這種括號裡面套括號效率比較高而且合法 所以思路就是對所給整數開方,剩餘的零頭我們用列舉的方法。但是對於一些資料直接用開方得到的數x構造的話,會導致零頭太小,不好構造零頭 第一步構造的是乙個對稱的括號,有x個左括號,如果零頭小於x的話,就不好構造...