zoukankan      html  css  js  c++  java
  • CodeForces-1278B-A-and-B

    题意

    对于(t(1leq tleq 100))个测试点,给两个数(a)(b),作如下操作:

    第一次挑一个数使其加(1),第二次挑一个数使其加(2),以此类推,最后两个数相等,问最小操作数。

    分析

    题目所述意思即为挑选最小的(n),满足以下等式((pm)表示可取正号可取负号())

    [pm1pm2pm3pmcdotspm n= left|a-b ight| ag{1} ]

    我们令(left|a-b ight|)(x),我们先找到最小的(k)满足(frac{k*(k+1)}{2}geq x),即((1))式中全为加号(()如果全为加号都不满足,其中一些变为减号肯定更不满足())。我们有一个以下式子

    [1+2+cdots+k=x+y ag{2} ]

    其中(y)为超过的部分。

    (1.)如果(y)是偶数,我们已知(y<k),否则不满足上述(k)最小。那么我们将(frac{y}{2})的符号变为负号即可满足((1))式,那么答案就是(k)

    (2.)如果(y)是奇数,那么该式子将一些正号变为负号也肯定不满足(改变后式子的值变化为偶数),我们往((2))式左右都加上(k+1)

    • 如果(k+1)是偶数,那么(y+k+1)仍然为奇数,同上,仍不满足,我们需两边再加上(k+2)(y+2*k+1)为偶数,我们将(frac{y+1}{2})(k)的符号变为负号即可满足((1))式,((y+1=2*k)显然不满足条件()),那么答案就是(k+2)
    • 如果(k+1)是奇数,那么(y+k+1)为偶数,我们将(frac{y+k+1}{2}(frac{y+k+1}{2}<k+1))的符号变为负号即可满足((1))式,那么答案就是(k+1)
    #pragma GCC optimize(3, "Ofast", "inline")
    
    #include <bits/stdc++.h>
    
    #define start ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    #define ll long long
    #define LL long long
    #define pii pair<int,int>
    #define int ll
    #define ls st<<1
    #define rs st<<1|1
    using namespace std;
    const int maxn = (ll) 1e5 + 5;
    const int mod = (ll) 1e9 + 7;
    const int inf = 0x3f3f3f3f3f3f3f3f;
    int sum[maxn];
    
    signed main() {
        start;
        for (int i = 1; i < maxn; ++i)
            sum[i] = sum[i - 1] + i;
        int T;
        cin >> T;
        while (T--) {
            int a, b;
            cin >> a >> b;
            if (a > b)
                swap(a, b);
            int x = b - a;
            int ans = lower_bound(sum, sum + maxn, x) - sum;
            if ((sum[ans] - x) & 1) {
                if (ans & 1)
                    cout << ans + 2 << '
    ';
                else
                    cout << ans + 1 << '
    ';
            } else
                cout << ans << '
    ';
        }
        return 0;
    }
    

    我现在连(Div2)(B)都能卡一小时吗,我是真的菜

  • 相关阅读:
    js多图上传展示和删除
    简单的下拉加载和上拉加载
    js实现放大镜效果
    js表格拖拽
    js表格上下移动添加删除
    js写的滑动解锁
    关于serialize() FormData serializeArray()表单序列化
    js日历
    js树状菜单
    Restful API官方文档
  • 原文地址:https://www.cnblogs.com/F-Mu/p/12072341.html
Copyright © 2011-2022 走看看