2019杭電多校第十場1003題解

2021-09-26 09:04:32 字數 636 閱讀 1251

思路:

感覺這題滿足一種單調性,滿足排完序後試著合併到概率減小之後再合併概率都會減小的性質。

於是就試著寫了幾組資料測試了一下,發現滿足這個規律。

所以寫法就是先將所有的概率排序,然後逐個合併到會減小時找到最大值就好了。如果給的資料中有大於0.5的也可以直接輸出最大的數字,可以證明別的資料都會讓其減小,都是對的寫法,個人感覺這樣寫不特判0.5也不會複雜很多。

ac**:

#include

using namespace std;

const

int maxn=

10000+50

;int t;

double p[maxn]

;bool comp

(double a,

double b)

double

cal(

int n)

ans+

=ans1;

}return ans;

}int

main()

else

break;}

printf

("%.9lf\n"

,fin);}

return0;

}

2019杭電多校第十場

從大到小不斷組合,如果開心1次的概率大於開心0次概率就可以break了 因為x會越來越小 include define fo i,a,b for i a i b i define fd i,a,b for i a i b i using namespace std int t,n,i,k doubl...

2019牛客多校第十場

對於s n s n s n 考慮某個字母是從s n 1 s n 1 s n 1 轉移還是從s n 2 s n 2 s n 2 轉移 include define fo i,a,b for i a i b i define n 10005 using namespace std int t,n,q,p...

2019杭電多校第五場

有兩個題隊友補的,先安利一波 1005 permutation 1 hdu 6628 題意 給你乙個n和k,求n的全排列中,相鄰兩數的差值的陣列字典序第k小的排列 思路 其實就是兩個字,暴力.字典序第k小,k的範圍是n!跟10000取min,8!40320,是第乙個大於10000的數,所以當n小於等...