妈妈的考试

链接:https://ac.nowcoder.com/acm/contest/880/A

 初步判断w1与题目的对错顺序无关,而和题目的对错个数有关。于是计算(s1+s2+……+sn)后可以发现 s13+s23+……+sn是等于w0的,而各项平方之和是等于n的,同时存在6×w1,于是就可以得到w1=  (w03  + w0( 2 - 3n ) ) / 6,对右边求导得到3w0+( 2 - 3 * n ) ,于是求零点即可。对于第一问,列出不等式并根据同号得正的方法分类讨论一下,求出端点(三个),然后在+-5的范围内取符合条件的极值,但是需要注意取值必需与n同奇偶,并在-n与n之间。对于第二问把求导取得的零点中负的那个按+-5范围求值取符合条件的极值即可。+-5的操作是为了防止卡精度,然后注意一下开int128。各种小细节没注意让我WA了好几发。

#include<cstdio>
#include<algorithm>
#define rep(i,j,k) for(int i=j;i<=k;i++)
#include<cmath>
#include<cctype>
 
using namespace std;
typedef __int128 ll;
 
template <typename T> inline T in(T &x){
    char c11=getchar(),ob=0;x=0;
    while(c11^'-'&&!isdigit(c11))c11=getchar();if(c11=='-')c11=getchar(),ob=1;
    while(isdigit(c11))x=x*10+c11-'0',c11=getchar();if(ob)x=-x;return x;
}
 
ll sqrt(ll x)
{
    ll l=0,r=2000000000,mid;
    while(l!=r)
    {
        mid=((l+r)>>1)+1;
        if(ll(mid)*mid<=x) l=mid;
        else    r=mid-1;
    }
    return l;
}
 
ll g(ll w0,ll n){return (w0*w0*w0+w0*(2-3*n))/6;}
 
void out(ll xx){if(xx){out(xx/10);putchar(xx%10+'0');}}
 
void kw0(ll n){
    ll a=sqrt(3*n-2);
    ll ans=9000000000000000000,tp;
    for(ll i=a-5;i<=a+5;i++){
        if(i>=-n&&i<=n&&(n-i)%2!=1){
            tp=g(i,n);
            if(tp<=0) continue;
            ans=min(ans,tp);
        }
    }
    a=-a;
    for(ll i=a-5;i<=a+5;i++){
        if(i>=-n&&i<=n&&(n-i)%2!=1){
            tp=g(i,n);
            if(tp<=0) continue;
            ans=min(ans,tp);
        }
    }
    a=0;
    for(ll i=a-5;i<=a+5;i++){
        if(i>=-n&&i<=n&&(n-i)%2!=1){
            tp=g(i,n);
            if(tp<=0) continue;
            ans=min(ans,tp);
        }
    }
    out(ans);
    printf(" ");
    return ;
}
 
void kw1(ll n){
    ll a=(n*3-2)/3,ans=-9000000000000000000;
    a=-sqrt(a);
    for(ll i=a-5;i<=a+5;i++){
        if(i>=-n&&i<0&&(n-i)%2==0){ 
            ans=max(ans,g(i,n));
        }
    }
    out(ans);
    return ;
}
 
int main(){
    int T;
    ll n;
    in(T);
    rep(i,1,T){
        in(n);
        kw0(n);
        kw1(n);
        putchar(10);
    }
    return 0;
}

 

posted @ 2019-05-12 08:50  IEQEFCR  阅读(192)  评论(0编辑  收藏  举报