題意:,Bi可以是小數。
思路:很機智的想法,對於連續M個1+N個0的一塊來說,最優解一定是,Bi=M/(M+N),因為Bi是遞增的(可以手推),所以如果出現在後面的一塊中的Bi>前面一塊的Bi,那麼就不可能取到最優解,所以將兩塊合並一起處理,這樣過程中就需要用棧來維護了。
代碼:
#include #include #include #include #include #include #include #include #include #include #include #include #include #define PI acos(-1.0) #define maxn 105 #define INF 0x7fffffff #define eps 1e-8 typedef long long LL; typedef unsigned long long ULL; using namespace std; int aa[1000005]; struct Line { int t0,t1; double val; void calc() { val=(double)t1/(double)(t1+t0); } double sum() { return val*val*(double)(t0)+(1-val)*(1-val)*(double)(t1); } } l[1000005],h; int main() { int T; scanf(%d,&T); while(T--) { memset(l,0,sizeof(l)); memset(aa,0,sizeof(aa)); int tot,head=-1,tail=-1; scanf(%d,&tot); for(int i=0; i=0; i--) if(aa[i]==0) { tail=i; break; } if(tail<=head) printf(0.000000 ); else { int t=head,top=0; while(t st; while(!st.empty()) st.pop(); for(int i=0;il[i].val) { h=st.top(); st.pop(); l[i].t0+=h.t0; l[i].t1+=h.t1; l[i].calc(); } st.push(l[i]); } } double ans=0; while(!st.empty()) { h=st.top(); ans+=h.sum(); st.pop(); } printf(%.6lf ,ans); } } return 0; }
hdu 5288 OO’s Sequence(2015多校第
HDU 4135 Co-prime (容斥原理) 題目戳
FIFO頁面置換算法,fifo置換算法本文以序列長度20的{
C++ 二維數組/多維數組的動態分配(new)和釋放(del
print?// //&nbs
/***************