動態仙人掌(dinosaur

2021-08-22 12:05:24 字數 1238 閱讀 9178

【分析】

這道題在考場看到我是完全的蒙蔽的,驚人的妄想著能否用資料離散化後的dp來騙分。。。

我果然很菜。。。

好吧,對於我這種菜雞來說,正解似乎有些難想,讓我們考慮從最基本的情況開始考慮。先將所有仙人掌按p為第一關鍵字排序,從左向右掃。這裡我們考慮乙個貪心策略,如果仙人掌兩兩之間距離足夠遠,則仙人掌之間跳躍的最小高度一定為最高仙人掌的高度。 關於兩個相鄰的仙人掌如果可以下落再上跳,則到下乙個仙人掌的高度就為它自身的高度。否則就不下落一路上公升。

不難發現上述貪心策略如果碰到的下下個仙人掌的高度的高度差,大於它與下個仙人掌的距離差,就很容易出現一種無解情況。難道,這道題目貪心就無法完成 wa ac的使命嗎?

再次觀察題目(這就是不能好好利用題目資訊的慘痛教訓),稍加思考,我們發現關於每棵仙人掌的那些不可能越過的點(不考慮上下的方向),恰好關於仙人掌形成兩個tan為1的等腰直角三角形,如圖

這裡我們可以以每個三角形的左端點為關鍵字排序。如果到第i棵仙人掌的左端點在原有區間的右端點的右邊,區間最左邊就為p[i]-h[i],最右邊就為

p[i]+h[i],同時用仙人掌的高度更新最大高度。反之,就不能下落,且需要構造乙個更大的三角形,以跳過這段區間中的所有仙人掌。

下方**:

#include

#include

#include

#include

using

namespace

std;

int n;

struct nodea[301000];

bool cmp(node x,node y)

}sort(a+1,a+n+1,cmp);

double minn=a[1].p-a[1].h;

double maxx=a[1].p+a[1].h;

for(int i=2;i<=n;i++)

else

}printf("%.1lf\n",ans);

return

0;}

清華集訓2015 靜態仙人掌 仙人掌剖分

毒瘤仙人掌,明明放到樹上一道板題的非要構造到仙人掌上來出題orz orz orz orz orz 在oi的上古時代,流傳著這樣乙個故事 有一天,小w到森林裡遊玩,回來之後跟小v說,我發現好多棵會動的樹耶!小v說,這有什麼好稀奇的,我用手指頭就能維護每棵樹的形態。於是又過了幾天小w到沙漠裡遊玩,回來之...

題解 仙人掌計數

題目傳送門 給出 q 個查詢,每次查詢 n 個點的無根有標號仙人掌有多少個。q le 5 times 10 4,n 131072 因為這道題太難碼了,所以先把題解寫了再寫 好奇怪啊 終於碼出來了,果然還是 text 好用 霧 為了方便,我們下面的答案其實求的是有根有標號的答案,最後除以 n 就好了。...

靜態仙人掌 模板 tarjan LCA

description 這是一道靜態仙人掌 block forest data structure 的模板題。如果您不知道什麼是仙人掌,那麼此處給出無向仙人掌圖的定義 任意一條邊至多只出現在一條簡單迴路的無向連通圖稱為仙人掌。給你乙個有 n 個點和 m 條邊的仙人掌圖,和 q 組詢問 每次詢問兩個點...