ACM模板库

ACM模板库


例题

<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/ec391541ba4494e8b69080fe5595f223" alt="" /> <img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/fdee01ea2ce5feca2de51a7e4d5cf587" alt="" /></p> <pre><code class="language-cpp">#include &lt;bits/stdc++.h&gt; using namespace std; const double eps=1e-9; const int N=21,LIM=(1&lt;&lt;20)+10; int n,lim; double p[LIM],g[LIM]; int main() { scanf("%d",&amp;n); lim=(1&lt;&lt;n)-1; for(int i=0;i&lt;=lim;i++) { scanf("%lf",&amp;p[i]); if(p[i]+eps&gt;1.0){ (i==lim)?puts("1.00000000"):puts("INF"); return 0; } } for(int i=1;i&lt;=lim;i&lt;&lt;=1) for(int j=0;j&lt;=lim;j++) if(j&amp;i) p[j]=p[j]+p[j^i]; for(int i=0;i&lt;=lim;i++) g[i]= (p[i]+eps&gt;1.0) ?0 :-1.0/(1.0-p[i]); for(int i=1;i&lt;=lim;i&lt;&lt;=1) for(int j=0;j&lt;=lim;j++) if(j&amp;i) g[j]=g[j]-g[j^i]; if(g[lim]&lt;eps) {puts("INF"); return 0;} printf("%.10f",g[lim]); }</code></pre>

页面列表

ITEM_HTML