题意

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

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

分析

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

\[\pm1\pm2\pm3\pm\cdots\pm n= \left|a-b\right|\tag{1}
\]

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

\[1+2+\cdots+k=x+y\tag{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 << '\n';
else
cout << ans + 1 << '\n';
} else
cout << ans << '\n';
}
return 0;
}

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

CodeForces-1278B-A-and-B的更多相关文章

  1. codeforces B. A and B 找规律

    Educational Codeforces Round 78 (Rated for Div. 2) 1278B - 6 B. A and B  time limit per test 1 secon ...

  2. python爬虫学习(5) —— 扒一下codeforces题面

    上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...

  3. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

  4. 【Codeforces 738C】Road to Cinema

    http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...

  5. 【Codeforces 738A】Interview with Oleg

    http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...

  6. CodeForces - 662A Gambling Nim

    http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...

  7. CodeForces - 274B Zero Tree

    http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ...

  8. CodeForces - 261B Maxim and Restaurant

    http://codeforces.com/problemset/problem/261/B 题目大意:给定n个数a1-an(n<=50,ai<=50),随机打乱后,记Si=a1+a2+a ...

  9. CodeForces - 696B Puzzles

    http://codeforces.com/problemset/problem/696/B 题目大意: 这是一颗有n个点的树,你从根开始游走,每当你第一次到达一个点时,把这个点的权记为(你已经到过不 ...

  10. CodeForces - 148D Bag of mice

    http://codeforces.com/problemset/problem/148/D 题目大意: 原来袋子里有w只白鼠和b只黑鼠 龙和王妃轮流从袋子里抓老鼠.谁先抓到白色老鼠谁就赢. 王妃每次 ...

随机推荐

  1. 【Linux】详解Centos7的下载安装配置

    本文时间 2023-05-17 作者:sugerqube漆瓷 为什么是Centos7 centos8已经停止维护,centos7将在2024-06-30停止维护(所以暂时选7) 未来替代品参考: Al ...

  2. phpstudy-sqlilabs-less-13

    题目:POST - Double Injection - Single quotes- String - with twist 单引号与括号的双注入 先试试 uname=1' or 1=1#& ...

  3. JeeCms低代码开发平台了解及认知以及遇到的问题

    1.jeecms低代码开发平台自带标签,使用的标签延续freemarker标签或基于freemarker标签自定的标签(类似自jsp自定义标签) (1)什么是freemarker标签: FreeMar ...

  4. CANoe _ DBC 的创建过程

    在Canoe中创建DBC(Database Container)文件,用于描述和定义CAN总线上的节点.消息和信号,遵循以下步骤: 1.打开Canoe 启动Canoe软件. 2.创建新项目 在Cano ...

  5. 尚医通day01-【项目环境搭建和医院设置详细步骤】(内附源码)

    第01章-项目介绍 1.课程介绍 项目名称:尚医通预约挂号统一平台 项目原型:https://www.114yygh.com 北京市预约挂号统一平台 项目技术栈:前后端分离 后端技术:SpringBo ...

  6. 深入浅出MySQL - 架构与执行

    Photo by Merilin Kirsika Tedder from Pexels 一.MySQL的逻辑架构 MySQL作为一个流行的开源关系型数据库管理系统,它可以运行在多种平台上,支持多种存储 ...

  7. AI与健康管理:趋势与未来

    目录 引言 随着人工智能技术的不断发展,健康管理也逐渐成为了一个新的研究领域.AI技术可以为健康管理提供智能化.个性化.高效的支持,使得健康管理更加人性化和科学.本文将介绍AI与健康管理的技术原理.实 ...

  8. 常见的Web安全攻击类型及其应对方法

    目录 1. 引言 2. 技术原理及概念 3. 实现步骤与流程 4. 应用示例与代码实现讲解 5. 优化与改进 6. 结论与展望 7. 附录:常见问题与解答 常见的Web安全攻击类型及其应对方法 随着网 ...

  9. 「学习笔记」vector

    本文并不是 vector 的入门教程. 定义 std::vector 是封装动态数组的顺序容器. vector 通常占用多于静态数组的空间,因为要分配更多内存以管理将来的增长.如果元素数量已知,可以使 ...

  10. synchronized中wait、notify的原理与源码

    synchronized中wait.notify的原理与源码 1.wait和notify的流程图 2.JVM源码 java层面wait的方法 public final native void wait ...