JSOI2015 JZOJ 4063 非誠勿擾

2021-07-27 01:26:00 字數 951 閱讀 8890

對於每個女性,開乙個vector記錄可選的男性

掃一遍,可以o(1)算出該女性選擇第i個男性的期望(推推公式發現是等比數列)

有了這個就好辦啦,按女性為第一關鍵字男性第二關鍵字排個序,用樹狀陣列記錄下前面的女性選擇比當前大的男性的概率和

o(nlogn)

在算期望時涉及除法運算,精度誤差較大,所以要開long double或者強行不用等比數列直接乘多幾次

#include

#include

#include

#include

#define fo(i,a,b) for(int i=a;i<=b;i++)

using

namespace

std;

typedef

long

double db;

const

int n=500005;

db p,bit[n];

int n,m,num;

vector

a[n];

struct node

b[n];

bool cmp(node a,node b)

db get(int x)

void add(int x,db y)

int main()

fo(i,1,n)

}sort(b+1,b+num+1,cmp);

db ans=0;

fo(i,1,num)

printf("%.2lf",ans);

return

0;}

JSOI2015 染色問題

傳送門 雖然不是第一反應,不過還是想到了要容斥。題意轉化 需要求滿足 n m c 個條件的方案數。然後我們就列舉三個數 i,j,k 表示當前方案中,至少不用 k 種顏色,至少不塗 i 行 至少不塗 j 列。然後直接組合數算 式子不難看懂 最後容斥即可。那麼寫出來就是 ans sum n sum m ...

JSOI2015 子集選取

傳送門 看到這個資料範圍,就知道肯定是要找規律。如果把集合看成乙個長度為 n 的 01 串,0 表示沒有這個元素,1 表示有這個元素,那麼我們可以發現對於題中的約束關係,不同位上的 01 之間不會互相影響。那麼我們只需要對於只有一位也就是 n 1 的情況計算出方案 記為 x 那麼最後的答案就是 x ...

JSOI2015 最小表示

題目大意 盡可能多地去掉乙個有向無環圖上的邊,使得圖的連通性不變。思路 拓撲排序,然後倒序求出每個結點到出度為 0 的點的距離 d 再倒序遍歷每乙個點 x 以 d 為關鍵字對其出邊降序排序,嘗試加入每一條邊,若加邊之前兩點已經連通,則說明這條邊可以刪去。可以用bitset維護圖的連通性,注意原圖是有...