码迷,mamicode.com
首页 > 其他好文 > 详细

CF995D Game

时间:2020-10-06 20:44:34      阅读:29      评论:0      收藏:0      [点我收藏+]

标签:mat   namespace   main   turn   efi   lin   代码   lan   ++   

Solution

我们考虑在第 \(i\) 步时,如果此时是 \(Allen\) ,他会将 \(x_s=t\) ( \(0\leq s\leq n,0\leq t\leq 1\) ),此时的 \(v_{s,t}\) 为最大,那么 \(v_{v,1-t}\) 就是最小的,也就是 \(Bessie\) 所做的。

我们递归可以知道,每一步会有两种不同的情况,那么到最后的时候, \(2^n\) 种情况应该都会出现。

所以 \(f=\dfrac {sum}{2^n}\) ,当某个 \(z\) 的值换成 \(g\) 时, \(f‘=\dfrac {sum-c_z+g}{2^n}\)

代码

#include<bits/stdc++.h>
#define ll long long

using namespace std;
const ll N=1<<18;
ll a[N],sum,n,r,z,g;

int main(){
    cin>>n>>r;
    for(int i=0;i<=(1<<n)-1;i++){
        cin>>a[i];
        sum+=a[i];
    }
    printf("%.6lf\n",1.0*sum/(1<<n));
    for(int i=1,x,y;i<=r;i++){
        cin>>x>>y;
        sum-=a[x];sum+=a[x]=y;
        printf("%.6lf\n",1.0*sum/(1<<n));
    }
    return 0;
}

CF995D Game

标签:mat   namespace   main   turn   efi   lin   代码   lan   ++   

原文地址:https://www.cnblogs.com/jasony/p/13772784.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!