SDOI2011 BZOJ2244 攔截飛彈

2021-07-10 02:42:39 字數 2244 閱讀 9713

description

某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷:雖然它的第一發炮彈能夠到達任意的高度、並且能夠攔截任意速度的飛彈,但是以後每一發炮彈都不能高於前一發的高度,其攔截的飛彈的飛行速度也不能大於前一發。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。

在不能攔截所有的飛彈的情況下,我們當然要選擇使國家損失最小、也就是攔截飛彈的數量最多的方案。但是攔截飛彈數量的最多的方案有可能有多個,如果有多個最優方案,那麼我們會隨機選取乙個作為最終的攔截飛彈行動藍圖。

我方間諜已經獲取了所有敵軍飛彈的高度和速度,你的任務是計算出在執行上述決策時,每枚飛彈被攔截掉的概率。

input

第一行包含乙個正整數n,表示敵軍飛彈數量;

下面 行按順序給出了敵軍所有飛彈資訊:

第i+1行包含2個正整數hi和vi,分別表示第 枚飛彈的高度和速度。

output

輸出包含兩行。

第一行為乙個正整數,表示最多能攔截掉的飛彈數量;

第二行包含n個0到1之間的實數,第i個數字表示第i枚飛彈被攔截掉的概率(你可以保留任意多位有效數字)。

sample input

3 30

4 40

6 60

3 30

sample output

0.33333 0.33333 0.33333 1.00000

【資料規模和約定】

對於100%的資料,1≤n≤5*104, 1≤hi ,vi≤109;

均勻分布著約30%的資料,所有vi均相等。

均勻分布著約50%的資料,滿足1≤hi ,vi≤1000。

hint

鳴謝kac提供sj程式!

source

第一輪day2

隱含著乙個三維偏序關係(時間,高度,速度)

所以果斷cdq

但是要注意方案數非常,非常,非常大,可以到

225000

! 正確的姿勢應該是存對數..但是資料裡並沒有,所以偷個懶,double騙過去

#include

#include

#include

#include

#include

#include

#define maxn 50010

#define get (ch>='0'&&ch<='9')

#define lowbit(x) (x&(-x))

using namespace std;

int n;

int sh[maxn],tph,sv[maxn],tpv,loc[maxn];

int sta[maxn],tp;

void in(int &x)

struct query

bool operator <(const query& a)const

inline void clear()

}tree[maxn];

inline void add(int

x,int v,double delta)

else

if (v==tree[x].v) tree[x].sum+=delta;

}inline bit query(int

x)void solve(int l,int r,int p)

int mid=(l+r)>>1,tp1=l,tp2=mid+1;

memcpy(newq+l,q+l,sizeof(query)*(r-l+1));

for (int i=l;i<=r;i++) (newq[i].pos

<=mid?q[tp1++]:q[tp2++])=newq[i];

solve(l,mid,p);tp1=l;

for (int i=mid+1;i<=r;i++)

for (int i=1;i<=tp;i++) tree[sta[i]].clear();tp=0;

solve(mid+1,r,p);

merge(q+l,q+mid+1,q+mid+1,q+r+1,newq+l);memcpy(q+l,newq+l,sizeof(query)*(r-l+1));

}inline bool cmp(int a,int b)

int main()

printf("%d\n",maxn);

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

}

bzoj2245 SDOI2011 工作安排

description 你的公司接到了一批訂單。訂單要求你的公司提供n類產品,產品被編號為1 n,其中第i類產品共需要ci件。公司共有m名員工,員工被編號為1 m員工能夠製造的產品種類有所區別。一件產品必須完整地由一名員工製造,不可以由某名員工製造一部分配件後,再轉交給另外一名員工繼續進行製造。我們...

BZOJ2245 SDOI2011 工作安排

題意 自行腦補,看懂分段函式是什麼即可。思路 顯然是最小費用最大流。對於每乙個工作人員的每一段,從原點到工作人員相應的點連一條費用與流量與這一段其相適應的邊。對於每乙個部件。從其相應的點到匯點連一條流量為須要的數目,費用為0的邊。然後就能夠出解了。建模還是非常顯然的。還有這題我寫spfa的多路增廣t...

BZOJ 2245 SDOI2011 工作安排

你的公司接到了一批訂單。訂單要求你的公司提供n類產品,產品被編號為1 n,其中第i類產品共需要ci 件。公司共有m名員工,員工被編號為1 m員工能夠製造的產品種類有所區別。一件產品必須完整地由一名員工製造,不可以由某名員工製造一部分配件後,再轉交給另外一名員工繼續進行製造。我們用乙個由0和1組成的m...