思路:
感覺這題滿足一種單調性,滿足排完序後試著合併到概率減小之後再合併概率都會減小的性質。
於是就試著寫了幾組資料測試了一下,發現滿足這個規律。
所以寫法就是先將所有的概率排序,然後逐個合併到會減小時找到最大值就好了。如果給的資料中有大於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小於等...