不可視境界線

2022-09-20 15:21:16 字數 2187 閱讀 6391

總之就是很離譜。

\(1\le n\le 10^5;1\le k\le 2;\) 座標範圍在 \([0,10^4)\) 之間。

題目中的式子長得就很像距離,維護 \(dp_i\) 表示前 \(i\) 個的總傷害,把根號內看成單次傷害,發現轉移的時候能把後面的 \(-a\) 抵消掉。

又有 \(k\) 維,所以我們直接上k-d樹,將 \(k\) 維座標轉換為 \(k+1\) 維,前面一維加乙個dp值來方便,為了避免過多開方而導致常數過大,所以我第乙個值用的曼哈頓距離,不用平方。

//12252024832524

#include #define tt templateusing namespace std;

typedef long long ll;

const int maxn = 100005;

const double alpha = 0.65;

const ll inf = 1ll << 60;

int n,k,rb[maxn];

int nxt[3] = ;

ll read()

while(c >= '0' && c <= '9')

return x * f;

}tt void put1(t x)

tt void put(t x,char c = -1)

tt t max(t x,t y)

tt t min(t x,t y)

tt t abs(t x)

int tot,rt,mode;

struct pointtmp[maxn];

bool operator < (point a,point b)

#define lc t[x].ch[0]

#define rc t[x].ch[1]

struct nodet[maxn];

ll sq(ll x)

ll dis(point a,point b)

int newnode()

void up1(int x,int son)

void up(int x)

bool wc(int x)//which child :)

void build(int &x,int l,int r,int now)

int nd,cur;

void dfs(int x)

void pia(int x)

point pp;

void ins(int &x,int now)

mode = now;

if(pp < t[x].p) ins(lc,nxt[now]),t[lc].fa = x;

else ins(rc,nxt[now]),t[rc].fa = x;

up(x);

if(max(t[lc].siz,t[rc].siz) > t[x].siz * alpha) nd = x;

if(x == rt && nd) pia(nd);

}ll ans;

ll closest(int x,point p)

return ret;

}void query(int x)

else }

int main()

; ins(rt,0);

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

; ans = inf;

for(int j = 1;j < k;++ j) pp.x[j] = read();

query(rt);

pp.x[0] = ans; ins(rt,0);

printf("%.4f\n",sqrt(ans));

} return 0;

}

有趣的是因為這道題沒有**,是我們內部造的資料,所以我先寫了一發暴力(無替罪羊式重構),最大跑了1.9s。此時的時限是1s。

後來改成有重構版本,竟然要跑16s+,我直接震撼,後來把平衡因子從0.69改成了0.99才跑過。(???)

當然最後發現是寫錯了,大概就是如果發現有某個點不平衡,重構整棵樹。改了就過了。

於是我加了兩組卡0.99那個版本的資料,然後我的正解竟然也過不了,被迫把時限開成2s。

然後網上的標程t了,我的0.99錯誤版本偶爾還能過。

2015 6 24 XJOI T1 不可視境界線

4 1 02 0 3 04 0 2.00001s512mb 考試的時候只想到了cdq分治.沒想到b的處理方法所以寫了40分的結果拼上去的暴力掛了只剩下3 4的20分了 其實這題cdq分治的確可做 首先題目那個 a是忽悠你的。可以直接去掉 那麼轉移方程就是f i min f i sqrt f j f ...

分界線 安裝打包到三維視覺化

很久沒有來這裡寫點什麼了,不是沒來過,主要是自己現在的工作重心發生變化,由原來的安裝打包變換到了乙個新的領域 三維視覺化。安裝打包我依然會關注,但作為乙個存在20年的軟體產品,能到現在已經是奇蹟了,而我的重心卻不得不轉移,這件事情其實在兩年之前就在進行中,我進入了乙個全新的世界,並且樂此不疲,所以我...

學習的三重境界(想成功的人都不可錯過)

據說人生有幾重境界,一開始時 看山是山,看水是水 然後再高一層境界時就會 看山不是山,看水不是水 再到後來層次更深時的 看山還是山,看水還是水 以前我也只是略微的了解,並沒有把他放在心上,因為我覺得那個離我很 遠 我不修道,而且人生還年輕,應該更積極的進取。但昨天我似乎對這句話的理解更深入了乙個層次...