2025.1.18——1300

news/2025/1/19 22:06:34/文章来源:https://www.cnblogs.com/jkkk/p/18680381

2025.1.18——1300


A 1300

There are \(n\) cities located on the number line, the \(i\)-th city is in the point \(a_i\). The coordinates of the cities are given in ascending order, so \(a_1 < a_2 < \dots < a_n\).

The distance between two cities \(x\) and \(y\) is equal to \(|a_x - a_y|\).

For each city \(i\), let's define the closest city \(j\) as the city such that the distance between \(i\) and \(j\) is not greater than the distance between \(i\) and each other city \(k\). For example, if the cities are located in points \([0, 8, 12, 15, 20]\), then:

  • the closest city to the city \(1\) is the city \(2\);
  • the closest city to the city \(2\) is the city \(3\);
  • the closest city to the city \(3\) is the city \(4\);
  • the closest city to the city \(4\) is the city \(3\);
  • the closest city to the city \(5\) is the city \(4\).

The cities are located in such a way that for every city, the closest city is unique. For example, it is impossible for the cities to be situated in points \([1, 2, 3]\), since this would mean that the city \(2\) has two closest cities (\(1\) and \(3\), both having distance \(1\)).

You can travel between cities. Suppose you are currently in the city \(x\). Then you can perform one of the following actions:

  • travel to any other city \(y\), paying \(|a_x - a_y|\) coins;
  • travel to the city which is the closest to \(x\), paying \(1\) coin.

You are given \(m\) queries. In each query, you will be given two cities, and you have to calculate the minimum number of coins you have to spend to travel from one city to the other city.
Input

The first line contains one integer \(t\) (\(1 \le t \le 10^4\)) — the number of test cases.

Each test case is given in the following format:

  • the first line contains one integer \(n\) (\(2 \le n \le 10^5\));
  • the second line contains \(n\) integers \(a_1, a_2, \dots, a_n\) (\(0 \le a_1 < a_2 < \dots < a_n \le 10^9\));
  • the third line contains one integer \(m\) (\(1 \le m \le 10^5\));
  • then \(m\) lines follow; the \(i\)-th of them contains two integers \(x_i\) and \(y_i\) (\(1 \le x_i, y_i \le n\); \(x_i \ne y_i\)), denoting that in the \(i\)-th query, you have to calculate the minimum number of coins you have to spend to travel from the city \(x_i\) to the city \(y_i\).

Additional constraints on the input:

  • in every test case, for each city, the closest city is determined uniquely;
  • the sum of \(n\) over all test cases does not exceed \(10^5\);
  • the sum of \(m\) over all test cases does not exceed \(10^5\).

B 1300

In this problem, you are initially given an empty multiset. You have to process two types of queries:

  1. ADD \(x\) — add an element equal to \(2^{x}\) to the multiset;
  2. GET \(w\) — say whether it is possible to take the sum of some subset of the current multiset and get a value equal to \(w\).
    Input

The first line contains one integer \(m\) (\(1 \le m \le 10^5\)) — the number of queries.

Then \(m\) lines follow, each of which contains two integers \(t_i\), \(v_i\), denoting the \(i\)-th query. If \(t_i = 1\), then the \(i\)-th query is ADD \(v_i\) (\(0 \le v_i \le 29\)). If \(t_i = 2\), then the \(i\)-th query is GET \(v_i\) (\(0 \le v_i \le 10^9\)).


C 1300

You are given an integer array \(a_1, a_2, \dots, a_n\), all its elements are distinct.

First, you are asked to insert one more integer \(a_{n+1}\) into this array. \(a_{n+1}\) should not be equal to any of \(a_1, a_2, \dots, a_n\).

Then, you will have to make all elements of the array equal. At the start, you choose a positive integer \(x\) (\(x > 0\)). In one operation, you add \(x\) to exactly one element of the array. Note that \(x\) is the same for all operations.

What's the smallest number of operations it can take you to make all elements equal, after you choose \(a_{n+1}\) and \(x\)?
Input

The first line contains a single integer \(t\) (\(1 \le t \le 10^4\)) — the number of testcases.

The first line of each testcase contains a single integer \(n\) (\(1 \le n \le 2 \cdot 10^5\)).

The second line contains \(n\) integers \(a_1, a_2, \dots, a_n\) (\(-10^9 \le a_i \le 10^9\)). All \(a_i\) are distinct.

The sum of \(n\) over all testcases doesn't exceed \(2 \cdot 10^5\).


D 1300

Vlad found an array \(a\) of \(n\) integers and decided to sort it in non-decreasing order.

To do this, Vlad can apply the following operation any number of times:

  • Extract the first element of the array and insert it at the end;
  • Swap that element with the previous one until it becomes the first or until it becomes strictly greater than the previous one.

Note that both actions are part of the operation, and for one operation, you must apply both actions.

For example, if you apply the operation to the array [\(4, 3, 1, 2, 6, 4\)], it will change as follows:

  • [\(\color{red}{4}, 3, 1, 2, 6, 4\)];
  • [\(3, 1, 2, 6, 4, \color{red}{4}\)];
  • [\(3, 1, 2, 6, \color{red}{4}, 4\)];
  • [\(3, 1, 2, \color{red}{4}, 6, 4\)].

Vlad doesn't have time to perform all the operations, so he asks you to determine the minimum number of operations required to sort the array or report that it is impossible.


E 1300

Yarik has already chosen \(n\) notes that he wants to use in his new melody. However, since their integers can be very large, he has written them down as an array \(a\) of length \(n\), then the note \(i\) is \(b_i = 2^{a_i}\). The integers in array \(a\) can be repeated.

The melody will consist of several combinations of two notes. Yarik was wondering how many pairs of notes \(b_i, b_j\) \((i < j)\) exist such that the combination \((b_i, b_j)\) is equal to the combination \((b_j, b_i)\). In other words, he wants to count the number of pairs \((i, j)\) \((i < j)\) such that \(b_i^{b_j} = b_j^{b_i}\). Help him find the number of such pairs.
Input

The first line of the input contains one integer \(t\) (\(1 \le t \le 10^4\)) — the number of test cases.

The first line of each test case contains one integer \(n\) (\(1 \leq n \leq 2 \cdot 10^5\)) — the length of the arrays.

The next line contains \(n\) integers \(a_1, a_2, \dots, a_n\) (\(1 \leq a_i \leq 10^9\)) — array \(a\).

It is guaranteed that the sum of \(n\) over all test cases does not exceed \(2 \cdot 10^5\).


------------------------思考------------------------

  • 前缀维护信息+二进制/充分性+数学+发现结论+配对优化


A

  1. 前缀维护信息,区间询问。
  2. 思考点是如何计算前缀。

B

  1. 充分性:判断是否可以组成时,枚举每一位进行判断。
  2. 思考点是判断某位是否可以被组成。

C

  1. 将一数组元素任意加某一确定数,致所有数相同。加的数为所有数 \(gcd\) 操作次数最少。
  2. 之前做过类似的题,但想不到为什么这样思考。自己数学推一下就想明白了。
  3. 至于 \(a[i+1]\) ,一开始出了假思路 \(a[n]+g /a[n]-g\) 。实际最大值减某个倍数的最大公约数才是最优解。

D

  1. 模拟一下,观察发现结论即可。

E

  1. 除了相同的情况,二进制数中仅有24==42,统计对数,维护信息扫一遍即可。

------------------------代码------------------------

A

#include <bits/stdc++.h>
#define int long long //
#define endl '\n'     // attention: interactive/debug
#define el cout << endl
using namespace std;
#define bug(BUG) cout << "bug:# " << (BUG) << endl
#define bug2(BUG1, BUG2) cout << "bug:# " << (BUG1) << " " << (BUG2) << endl
#define bug3(BUG1, BUG2, BUG3) cout << "bug:# " << (BUG1) << ' ' << (BUG2) << ' ' << (BUG3) << endl
#define bugv(VEC, ST)                     \for (int i = ST; i < VEC.size(); i++) \cout << VEC[i] << ' ';            \el;void _();
signed main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cout << fixed << setprecision(10);int T = 1;cin >> T;while (T--)_();return 0;
}void _()
{int n;cin >> n;vector<int> a(n + 1);for (int i = 1; i <= n; i++)cin >> a[i];vector<int> pre(n + 1), suf(n + 2);auto closest = [&](int u, int r, int l){return abs(a[u] - a[r]) <= abs(a[u] - a[l]);};for (int i = 2; i <= n; i++){pre[i] = a[i] - a[i - 1];if (i == 2 || closest(i - 1, i, i - 2))pre[i] = 1;pre[i] += pre[i - 1];}for (int i = n - 1; i; i--){suf[i] = a[i + 1] - a[i];if (i == n - 1 || closest(i + 1, i, i + 2))suf[i] = 1;suf[i] += suf[i + 1];}// bugv(pre, 1);int q;cin >> q;while (q--){int st, ed;cin >> st >> ed;int res = pre[ed] - pre[st];if (st > ed)res = suf[ed] - suf[st];cout << res << endl;}
}

B

#include <bits/stdc++.h>
#define int long long //
#define endl '\n'     // attention: interactive/debug
#define el cout << endl
using namespace std;
#define bug(BUG) cout << "bug:# " << (BUG) << endl
#define bug2(BUG1, BUG2) cout << "bug:# " << (BUG1) << " " << (BUG2) << endl
#define bug3(BUG1, BUG2, BUG3) cout << "bug:# " << (BUG1) << ' ' << (BUG2) << ' ' << (BUG3) << endl
#define bugv(VEC, ST)                     \for (int i = ST; i < VEC.size(); i++) \cout << VEC[i] << ' ';            \el;void _();
signed main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cout << fixed << setprecision(10);int T = 1;// cin >> T;while (T--)_();return 0;
}void _()
{int q;cin >> q;vector<int> x(32);while (q--){int op, v;cin >> op >> v;if (op == 1)x[v]++;else{auto t = x;bool f = 1;for (int i = 0; v >> i; i++)if (v >> i & 1){int ned = 1, j = i;for (int j = i; ned && j >= 0; j--, ned <<= 1){int has = min(t[j], ned);t[j] -= has, ned -= has;}if (ned)f = 0;}cout << (f ? "YES" : "NO") << endl;}}
}

C

#include <bits/stdc++.h>
#define int long long //
#define endl '\n'     // attention: interactive/debug
#define el cout << endl
using namespace std;
#define bug(BUG) cout << "bug:# " << (BUG) << endl
#define bug2(BUG1, BUG2) cout << "bug:# " << (BUG1) << " " << (BUG2) << endl
#define bug3(BUG1, BUG2, BUG3) cout << "bug:# " << (BUG1) << ' ' << (BUG2) << ' ' << (BUG3) << endl
#define bugv(VEC, ST)                     \for (int i = ST; i < VEC.size(); i++) \cout << VEC[i] << ' ';            \el;void _();
signed main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cout << fixed << setprecision(10);int T = 1;cin >> T;while (T--)_();return 0;
}void _()
{int n;cin >> n;vector<int> a(n + 1);for (int i = 1; i <= n; i++)cin >> a[i], a[i] += 1e9;sort(a.begin() + 1, a.end());int g = 0;for (int i = 2; i <= n; i++)g = __gcd(g, a[i] - a[i - 1]);if (!g)g = 1;map<int, bool> has;for (int i = 1; i <= n; i++)has[a[i]] = 1;for (int st = a[n] - g;; st -= g)if (!has[st]){a[0] = st;break;}int res = 0;for (auto v : a)res += (a[n] - v) / g;cout << res << endl;
}
// void _()
// {
//     int n;
//     cin >> n;
//     vector<int> a(n + 1);
//     for (int i = 1; i <= n; i++)
//         cin >> a[i], a[i] += 1e9;
//     sort(a.begin() + 1, a.end());
//     int g = 0;
//     for (int i = 2; i <= n; i++)
//         g = __gcd(g, a[i] - a[i - 1]);
//     if (!g)
//         g = 1;
//     bool f = 1;
//     for (int i = 1; i <= n; i++)
//         if (a[i] == a[n] - g)
//             f = 0;
//     a[0] = f ? a[n] - g : a[n] + g;
//     int mx = max(a[0], a[n]);
//     int res = 0;
//     for (auto v : a)
//         res += (mx - v) / g;
//     cout << res << endl;
// }

D

#include <bits/stdc++.h>
#define int long long //
#define endl '\n'     // attention: interactive/debug
#define el cout << endl
using namespace std;
#define bug(BUG) cout << "bug:# " << (BUG) << endl
#define bug2(BUG1, BUG2) cout << "bug:# " << (BUG1) << " " << (BUG2) << endl
#define bug3(BUG1, BUG2, BUG3) cout << "bug:# " << (BUG1) << ' ' << (BUG2) << ' ' << (BUG3) << endl
#define bugv(VEC, ST)                     \for (int i = ST; i < VEC.size(); i++) \cout << VEC[i] << ' ';            \el;void _();
signed main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cout << fixed << setprecision(10);int T = 1;cin >> T;while (T--)_();return 0;
}void _()
{int n;cin >> n;vector<int> a(n);int mn = 1e10, id = -1;for (int i = 0; i < n; i++){int &x = a[i];cin >> x;if (x < mn)mn = x, id = i;}bool f = 1;for (int i = id + 1; i < n; i++)if (a[i] < a[i - 1])f = 0;cout << (f ? id : -1) << endl;
}

E

#include <bits/stdc++.h>
#define int long long //
#define endl '\n'     // attention: interactive/debug
#define el cout << endl
using namespace std;
#define bug(BUG) cout << "bug:# " << (BUG) << endl
#define bug2(BUG1, BUG2) cout << "bug:# " << (BUG1) << " " << (BUG2) << endl
#define bug3(BUG1, BUG2, BUG3) cout << "bug:# " << (BUG1) << ' ' << (BUG2) << ' ' << (BUG3) << endl
#define bugv(VEC, ST)                     \for (int i = ST; i < VEC.size(); i++) \cout << VEC[i] << ' ';            \el;void _();
signed main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cout << fixed << setprecision(10);int T = 1;cin >> T;while (T--)_();return 0;
}void _()
{int n;cin >> n;int res = 0;map<int, int> cnt;while (n--){int x;cin >> x;res += cnt[x];if (x == 1)res += cnt[2];if (x == 2)res += cnt[1];cnt[x]++;}cout << res << endl;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/871880.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

K-D树及其应用

K-D树及其应用 简介 在单个维度的范围搜索场景下,如:搜索创建时间最靠近某个日期的商品信息。可以通过遍历所有的商品信息,计算每个商品的创建日期的差值,得到差值最小的商品即可,这样每次查询的时间复杂度为 \(O(n)\);或者通过构造一个 BST,通过日期进行比较查询,这样…

基础动态规划讲解

(标题就叫这个吧,我也没什么主意了) 动态规划,要给这个这个东西下个定义,确实不太好下,他是一种基于状态来思考问题的算法思想 用来表示状态的话,那就是dp,(这么说好抽象),就直接说涉及动态规划的题目怎么处理吧 ,这个还是有步骤可行的,就按如下步骤操作 1.寻找子…

遗传算法个人入门笔记

先举一个简单的求解例子: 变量x,y 函数f(x,y) = (x-5)^2 + (y+3)^2 - 5 求最小值。 def test(x,y):return (x - 5)**2 + (y - 3)**2 - 5显然,这个函数在x=5,y=3时取最小值-5。现在我们尝试用遗传算法解决之。 遗传算法主要是模拟生物进化的过程,将每一个值视作一个生物,有…

excel快速定位到某一行

左上角输入框输入:A100定位到第100行

2024秋季学期 电子技术基础期末复习笔记

这期末也太难了吧,15*2,俩超级难的电路,直接给我算麻了电路分析模拟电路

【牛客训练记录】牛客周赛 Round 77

训练情况赛后反思 打一半吃饭去了,C题看到 ax+by=k 的问题,简单的扩欧exgcd没反应过来,简单数论还是不熟悉TAT,D题DSU计算联通块大小时 \(i\) 打成 \(a_i\) 疯狂 RE 被硬控了十几分钟 A题 输出题目所述的第几个字符串即可 #include <bits/stdc++.h> // #define int l…

LIS于LCS

LIS与LCS是动态规划中最常见的两种情况,LIS也就是最长上升子序列,而LCS是最长公共子序列。 在解决这个问题之前,先要明白为什么是序列,举个例子来说明,在数组 [1,2,3,4,5,6]中,[2,3,5]就是其子序列,也就是说,子序列其实就是数组中存在先后顺序,但不强调连续的子数组。…

层次分析法:数学建模

今天学习了层次分析法和数学建模,这里就简单写一下自己的学习新的,参考的资料是B站上的免费网课,老师讲的不错,可以去围观,学习,希望可以拿个奖。https://www.bilibili.com/video/BV1p14y1U7Nr/?spm_id_from=333.337.search-card.all.click 上面这里是链接。本文的大部分…

那些年我在 HL 集训做的题【某人别催了!】

某人别催了!!!Day 0 1.16 下午到 HL,居然还写了一道题? P8855 [POI2002] 商务旅行 LCA 板子。不理解当时为啥要写这个东东,可能是为了热热身吧。 Day 1 讲整体二分,但是没听懂。貌似是魔改版 CDQ...不管它。但是我似乎发现了一片新天地,一切的一切都从下面的一道题说起…

Mac 刷题环境配置

方便Mac 刷题,记录一些环境配置Mac 刷题环境配置 这篇博文主要记录自己为了更方便的在 Mac 上写算法题,主要是基于 Clion做的一些环境配置;有些操作其实在 Windows ,Linux 下也是通用的,如果看到的小伙伴也可以结合自己的情况参考。 Clion 插件 推荐一下这个插件 C/C++ Si…

excel对列数据去重(数据核对)

第一步,选中A列数据,单击功能区——数据选项卡——高级第二步,在弹出的对话框中,选中“将筛选结果复制到其他位置”,"列表区域"填写A列的地址:$A$1:$A$17,“复制到”填写:B1,把“选择不重复记录”勾上,确定即可。结果如下图

前端开发day1

day1 目的:开发一个平台(网站)- 前端开发:HTML、CSS、JavaScript- Web框架:接收请求并处理- MySQL数据库:存储数据地方快速上手:基于Flask Web框架让你快速搭建一个网站出来。深入学习:基于Django框架(主要)1,快速开发网站 pip install flaskfrom flask import Flask…