[BZOJ1271][BeijingWc2008][二分]秦腾与教学评估

<题目>

<算法>

二分

<分析>

看起来题目挺奇葩的。关键点在于判断的是奇偶,而且只有一处是奇数。利用奇偶数的性质,奇数点后面的数的前缀和全部都是奇数。利用这一性质我们就可以进行二分。

<注意>

用Long Long 比较保险

<代码>

#include 
   
   
    
    
#include 
    
    
     
     
#include 
     
     
      
      
#include 
      
      
       
       
#include 
       
       
         using namespace std; #define MAXN 50100 #define EPS 0.1 double x[MAXN],w[MAXN]; int n,testcase; double calc(double s) { double ans=0; for (int i=1;i<=n;i++) ans+=fabs(x[i]-s)*fabs(x[i]-s)*fabs(x[i]-s)*w[i]; return ans; } double Sanfen(double left,double right) { while (right-left>EPS) { double ll=(left+(right-left)/3),rr=(ll+(right-left)/3); double llAns=calc(ll); double rrAns=calc(rr); if (llAns 
        
          right) right=x[i]; } double ans=Sanfen(left,right); ans=calc(ans); printf("Case #%d: %d\n",p,(int)(ans+0.5)); } } 
         
       
      
      
     
     
    
    
   
   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值