平面直角座標系內有n個點,第i個點的座標為(i,hi),順次連線這n個點。
現在給出一條直線y=h,求這條直線以下的由這條直線和其他線段圍成的圖形的面積。
茲瓷單點修改。
n<=10^5,hi<=1000
語文不好,放圖來講講道理。
左邊這張圖的答案是3.75,右圖為6.
考慮hi和hi+1所連的線段。 若h
i,那麼答案是(h
−hi)
22(h
i+1−
hi)
這是個二次多項式。那麼我們可以用樹狀陣列維護當h=x時的每一項的係數。 若h
i+1<=
h ,那麼答案是h−
hi+1
−hi2
。只有一次項和常數項,同樣可以做。
具體用樹狀陣列的實現,因為當h∈
[hi,
hi+1
] 的時候,它所形成的答案的多項式的係數都是一樣的,那麼就用樹狀陣列的「區間加法」就好了。
剩餘的同理。
#include
#include
#include
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define n 100005
#define h 1005
using namespace std;
typedef double db;
db t[3][h];
int n,m,x,y,h[n];
char ch[1];
void add(int z,int
x,db y)
db find(int z,int
x) void calc(int
x,int
y,int f)
add(1,y+1,f);add(2,y+1,-f*(
x+y)*1.0/2);
}int main() else }}
GDOI2013模擬1 最短路
這題就是個暴力spfa。我們就從節點1開始更新,每次更新一圈。我們可以發現,每個完全子圖暴力掃過以後就不需要再掃了 因為不會再優 所以就可以過了 判一判是否掃過就可以了 這題有個重構圖的解法。就是對於每個完全子圖構建成乙個菊花圖,而邊權便是1 2,然後跑一遍spfa就可以了。include incl...
JZOJ3187 GDOI2013模擬8 的士
在乙個數軸上,有些人要從某個點到達另乙個點。計程車從最左端出發,將所有人送到它們的目的地,最終到達最右邊的點。計程車只能做乙個乘客,並且可以在圖中將乘客丟下。問最短時間。一看就覺得是神仙題,往dp方向思考,沒有一點點長進 壓根就沒有想過貪心 然而這題又沒得打暴力,於是一分都沒有拿。面對這種神仙題,為...
GDOI模擬4 24 4 26總結DAY1
day1 第一題,一看就知道是字尾陣列,不過忘記了字尾陣列有乙個東西怎麼線性處理,所以就只能夠暴力搞字尾陣列,所以也只能暴力搞字尾陣列,然後暴力的來求。把height從大到小填進去是乙個很套路的東西,但是只打過一次字尾陣列,對他的用法還不太熟練。所以對於很多省選的知識,由於打得不多,所以很多東西還不...