牛客網暑期ACM多校訓練營(第五場) (A,F)

2021-08-22 04:28:44 字數 2091 閱讀 5069

比賽鏈結: a

gpa題意:給出kanade的n門課的學分si和成績ci,kanade的gpa計算方法如下:

解析:典型01分數規劃問題,按模板做就好,

01分數規劃問題:所謂的

01分數規劃問題就是指這樣的一類問題,給定兩個陣列,

a[i]

表示選取

i的收益,

b[i]

表示選取

i的代價。如果選取

i,定義

x[i]=1

否則x[i]=0

。每乙個物品只有選或者不選兩種方案,求乙個選擇方案使得

r=sigma(a[i]*x[i])/sigma(b[i]*x[i])

取得最值,即所有選擇物品的總收益

/總代價的值最大或是最小。

這裡給出

n個門課,每門課i收益si*ci代價si

,選擇n-k門課

,詢問∑si*ci/∑si

的最大值。我們可以直接二分這個最大值

x,而∑si*ci/∑si≥

x就等價於

∑si*ci−

x*∑si≥

0。所以我們發現二分好x後按si*ci−x*s

i排序,然後把最大的

n-k門課選出來求此時這n-k門課的∑si*ci−

x*∑s

i,如果大於0,那麼當前二分的x就是合法的,可以繼續向右二分找最x。

**

#include using namespace std;

typedef long long ll;

const ll maxn=1e5+5;

const double eps=1e-8;

int n,k;

struct node

p[maxn];

double t[maxn];

bool judge(double x)

return ans>=0;}

int main()

cout

take

題意:有 n 個箱子,第 i 個箱子有 p[i] 的概率出現大小為 d[i] 的鑽石 現在 小a 一開始手裡有乙個大小為 0 的鑽石,他會根據 i 從小到大開啟箱子, 如果箱子裡有鑽石且比小 a 手中的大,那麼小 a 就會交換手中的鑽石和箱子裡 的鑽石 求期望的交換次數。

解析

來自牛客多校群,侵刪。

參考

**

#includeusing namespace std;

typedef long long ll;

const int mod=998244353;

const int maxn=1e5+5;

int p[maxn],d[maxn];

int len,ha[maxn];

int n,bit[maxn];

ll pow_mod(ll n,ll k,ll mod) //快速冪求n^k餘m的結果

return res;

}inline int lowbit(int i)

void add(int x,int v)

}int sum(int x)

return res;

}int main()

sort(ha+1,ha+1+n);

len=unique(ha+1,ha+n+1)-(ha+1);

for(int i=1;i<=n;i++)//離散化d

d[i]=lower_bound(ha+1,ha+len+1,d[i])-ha;

for(int i=0;i<=len;i++)//初始化樹狀陣列

bit[i]=1;

int ans=0;

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

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

return 0;

}

牛客網暑期ACM多校訓練營(第五場)

二分答案,然後就轉化為是否滿足 frac d sum s i c i sum s i d sum s i c i d 0 顯然科目越少gpa越高,於是去掉最小的k個判斷即可。include define rep i,a,b for int i a i b i define per i,a,b for...

牛客網暑期ACM多校訓練營(第五場)F take

題目意思就是從前往後有n個箱子,每個箱子中有p i 的概率會出現價值為d i 的鑽石,當箱子內的鑽石價值大於當前手上的鑽石的價值的時候,將手上鑽石跟箱子內的鑽石交換,問最後交換次數的期望。思路 結果要求的是交換次數的期望,我們可以將每個箱子交換的期望求出來相加即可。那麼顯而易見的是,當前箱子交換的概...

2020牛客暑期多校訓練營(第五場)

總結 f題添老師一發ac,i 題起初不會做在想怎麼化簡那個式子,後來就直接畫出了最優的圖,然後猜了一發2 3過了。ef 一級目錄 一級目錄 一級目錄 乙個包括n個音符的陣列,音符按下標1 n排列,表示音符由低到高。有兩個操作 drop 2 將第二高的音符移到最低的位置 即將倒數第二個移到第乙個。in...