題目描述
眾所周知,9406計算機大佬眾多,他們不僅**能力強,而且都精通物理。物理無處不在,甚至坐電梯的時候,zck和xxr都在討論若電梯突然失重會怎樣。身為文科生的華華和奕奕非常難過,他們決定學習物理,不能讓小夥伴們看不起。奕奕現在正在研究一道物理題。
有q次操作:
若op1,輸入v,t,m,表示在t時刻從無窮高處以初速度v垂直向下丟擲乙個質量為m的小球。
若op2,輸入v,t。表示詢問t時刻所有速度小於等於v的小球的動能之和是多少。
乙個速度為v,質量為m的物體的動能等於0.5mvv,為了防止精度誤差,設原來的答案是ans,則你只需輸出2ans%(1e9+7)即可。
輸入描述:
輸入q。 接下來q行。
先輸入op,若op1,輸入v,t,m。
若op2,輸入v,t表示一次詢問。
1<=q,t,m<=3e5。
若op1,1<=v<=3e5。
若op2,1<=v<=4e6。
t是不嚴格遞增的,即t[1]<=t[2]<=t[3]<=…<=t[q]
重力加速度取g=10m/s^2
輸出描述:
對於每次詢問輸出2*ans%(1e9+7)
示例1
輸入複製
71 1 1 2
2 1 2
2 11 2
1 3 2 5
1 1 4 3
2 20 4
2 30 4
輸出
複製
0242
32648
如果我們不做改變,很難判斷有哪些速度是小於當前詢問的速度的。
於是我們想到,我們定乙個標準。全部都看成從 t = 0 時開始丟下的小球,那麼我們就很好判斷了,直接樹狀陣列維護一下即可。
那我們怎麼計算答案呢?我們可以看一下公式:m * (v0 + g * t) ^2
,不難化簡,我們維護三個變數即可,因為起點已經確定了,所以最後把t帶入計算答案即可。
ac**:
#include
#define int long long
using namespace std;
const
int p=
1e9+7;
const
int n=
8e6+
10,base=
4e6;
int q,d[n][3
];inline
void
add(
int x,
int v,
int k)
inline
intask
(int x,
int k)
signed
main()
else
}return0;
}
華華送奕奕小禮物
題意 給出陣列a,b,矩陣c i j a i b j 問子矩陣和在l r之間的個數 反思 開始直接暴力 c i j a i b j 怎麼看都是有作用的 很容易得出乙個子矩陣的和就是對應a,b下標區間和的乘積所以先把a 的區間全部列舉出來,排序一下,在二分看b的區間中符合條件的個數。include i...
華華跟奕奕玩遊戲 數學期望遞推式
有乙個箱子,開始時有n個黑球,m個藍球。每一輪遊戲規則如下 第一步 奕奕有p的概率往箱子裡新增乙個黑球,有 1 p 的概率往箱子裡新增乙個藍球。第二步 華華隨機從箱子裡取出乙個球。華華喜歡黑球,他想知道k輪遊戲之後箱子裡黑球個數的期望。輸入五個整數n,m,k,a,b。1 n,m 1e6,1 k 1e...
華華和月月種樹
時間限制 c c 2秒,其他語言4秒 空間限制 c c 131072k,其他語言262144k 64bit io format lld 華華看書了解到,一起玩養成類的遊戲有助於兩人培養感情。所以他決定和月月一起種一棵樹。因為華華現在也是資訊學高手了,所以他們種的樹是資訊學意義下的。華華和月月一起維護...