普普通通的题解?
2025-05-08 21:49:08
发布于:浙江
3阅读
0回复
0点赞
肥肠简单
#include<bits/stdc++.h>
#define int long long
#define I using
#define AK namespace
#define IOI std
#define I_will return
#define AK_IOI 0;
I AK IOI;
int ksm(int x,int y)
{
	int t = 1;
	while(y)
    {
		if(y&1)
        {
            t=t*x;
        }
		x = x*x;
		y/=2;
    }
	return t;
}
int lowbit(int x)
{
    return x&-x;
}
int dfs(int n,int m)
{//深搜
    if(n==0&&m==0)
    {
        return 0;
    }
    if(n==0)
    {
        return dfs(0,m-lowbit(m))+lowbit(m);
    }
    if(m==0)
    {
        return dfs(n-lowbit(n),0)+lowbit(n);
    }
    return dfs(n-lowbit(n),m-lowbit(m))+lowbit(n)+lowbit(m);
}
int rf(int n,int m)
{//二分
    int l = 0,r = 2000000005;
    while(l<r)
    {
        int mid = (l+r)>>1;
        if(mid>n+m)
        {
            r=mid-1;
        }else
        {
            l = mid+1;
        }
    }
    if(l==m+n)
    {
        return l;
    }
    else if(r==m+n)
    {
        return r;
    }else
    {
        return n+m;
    }
}
int mj(int n,int m)
{//枚举
    for(int i = min(2*n,2*m);i<=max(2*n,2*m);i++)
    {
        if(i==n+m)
        {
            return i;
        }
    }
    return 114514;
}
int sl1(int n,int m)
{//数论1
    double pjs = (n+m)/2.0;
    return pjs*2;
}
int sl2(int n,int m)
{//数论2
    int n_m = n*m;
    return n_m-(n-1)*m+n_m-(m-1)*n;
}
signed main()
{
    int a,b;
    cin>>a>>b;
    cout<<(dfs(a,b)+rf(a,b)+mj(a,b)+sl1(a,b)+sl2(a,b))/5;
    I_will AK_IOI;
}
这里空空如也



有帮助,赞一个