HDU 1030 Delta-wave

来源:互联网 发布:台式电脑怎么链接网络 编辑:程序博客网 时间:2024/06/02 12:23

我会告诉你我把这道题当模拟题写的么。。。坑爹啊

#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<cstdlib>#include<string>#include<queue>#include<vector>using namespace std;int a[100000];int main(){    int n,m,i,ans;    double t=sqrt(1000000000.0);//    printf("%.f\n",t);    for(i=0;i<=t;i++)        a[i]=i*i+1;//    printf("%d\n",a[i-1]);    while(cin>>n>>m){        if(n>m){            int k=n;            n=m;            m=k;        }        ans=0;        for(i=0;i<=t;i++)            if(n<a[i])                break;        int nx=i-1,ny=n-a[i-1];        for(i=0;i<=t;i++)            if(m<a[i])                break;        int mx=i-1,my=m-a[i-1];    //    printf("%d %d\n%d %d\n",nx,ny,mx,my);        if(my<=ny)            ans+=(mx-nx)*2+ny-my;        else{            if(mx==nx)                ans=my-ny;            else{                if(my&1){                    mx-=1;                    my-=1;                    ans=1;                }                if(mx==nx){                    ans+=my-ny;                }                else{                //    if(my-ny>1)                //    {                        if(my-ny>=(mx-nx)*2)                            ans+=my-ny;                        else{                            ans+=(my-ny)/2*2;                            mx-=(my-ny)/2;                            my-=(my-ny)/2*2;                //    }                            ans+=(mx-nx)*2;                            ans+=(my-ny);                        }                    }            }            }        printf("%d\n",ans);        }    return 0;}


 

 

原创粉丝点击