A
输出即可
B
根据题意模拟即可,以下题解只写solve函数
#include <bits/stdc++.h>
using namespace std;
#define ios \
ios::sync_with_stdio(false); \
cin.tie(0); \
cout.tie(0);
#define mian main
#define pii pair<int, int>
#define sz(x) ((int)x.size())
#define il inline
#define pii pair<int, int>
#define all(v) v.begin(), v.end()
typedef long long ll;
typedef unsigned long long ull;
const int N = 2e5 + 10;
const int INF = 0x3f3f3f3f;
const int mod = 998244353;
ll n, m, k, t;
ll res, ans, cnt;
il void solve()
{
int a, b, c, d;
cin >> t;
while (t--) {
cin >> a >> b >> c >> d;
if (1.0 * a / b > 1.0 * c / d) {
cout << 'S' << '\n';
} else {
cout << 'Y' << '\n';
}
}
}
int mian()
{
ios;
int _ = 1;
while (_--) {
solve();
}
return 0;
}
c
il void solve()
{
cin >> n;
for (int i = 1; i <= n; i++) {
int x = 0, s = i; // 拷贝一份
while (s > 0) {
x = x * 10 + s % 10; //反向求和,s%10为取s的个位数,例,123取3
s = s / 10; // 删除s的个位数,例,123变成12
}
ans += (x == i ? 1 : 0);
}
cout << ans;
}
D
il void solve()
{
cin >> n;
long double ans;
ans = 1.0 * 1e9 + 1;
for(int i = 1 ; i <= n ; i++){
int x;
cin >> x;
long double z = 1.0 * (x + 1) / i;
ans = min(ans, z);
//由于一定存在合法的公差 x,所以我们可以直接枚举等
//差数列每一项的可能最大值,直接计算出对这一项而言最
//大合法的公差 xi。最终的答案 x 就应该是所有 xi的最小值。
}
printf("%.6Lf",ans);
}
// 关闭缓冲流时,不要使用scanf和printf
E
il void solve()
{
cin >> t;
while (t--) {
string s, f;
cin >> s >> f;
bool flag = true;
map<char, int> v;
for (auto i : f) {
v[i]++;
}
for (auto i : s) {
if (!v.count(i))
flag = false;
}
cout << (flag ? 10 : 0) << '\n';
// 有不同的答案直接为0,否则就可以全都写对
}
}
F
il void solve()
{
cin >> t;
while (t--) {
cin >> n >> k;
bool flag = true;
for (int i = 1; i <= n; i++)
cin >> a[i];
a[1] -= k; // 让前面的数字尽量小一点,才能能形成递增
for (int i = 2; i <= n; i++) {
if (a[i] >= a[i - 1]) {
if (a[i] > a[i - 1] + k) {
a[i] -= k; // 前面的数字较大,尽量减小一点
} else {
a[i] = a[i - 1]; // 减小范围在k以内就和之前的相等
}
} else {
if (a[i - 1] - a[i] > k) {
flag = false; //无法形成递增就判负
break;
} else {
a[i] = a[i - 1]; // 同理
}
}
}
cout << (flag ? "Yes" : "No") << '\n';
}
}
G
il void solve()
{
cin >> n >> k;
string s;
cin >> s;
for (int i = 1; i < n; i++) {
if (s[i] == 'I') {
t = i; //找到光标的位置
break;
}
}
while (k--) {
string x;
cin >> x;
if (x == "backspace") {
if (s[t - 1] == '(' && s[t + 1] == ')' && t > 0 && t + 1 < sz(s)) {
s.erase(t + 1, 1); // 位置满足条件,就可以直接删
s.erase(t - 1, 1);
t--;
} else if(t > 0){
s.erase(t - 1, 1); // 不满足删一边
t--;
}
} else {
if (t + 1 < sz(s)) {
s.erase(t + 1, 1); //同理
}
}
}
cout << s ;
}
H
struct node {
int x;
bool flag;
} v[N];
// 根据题意模拟即可
il void solve()
{
cin >> t;
while (t--) {
int p;
int x = 0, y = 0;
cin >> n >> p;
for (int i = 1; i <= n; i++) {
cin >> v[i].x;
v[i].flag = true;
}
v[p].x++;
if (v[p].x < 10) {
cout << "0 0" << el;
continue;
}
int i = p - 1, j = p + 1;
int l = 1, r = 1;
while (1) {
if (i >= 1 && l) {
v[i].x++;
l--;
if (v[i].x == 10) {
l++;
r++;
i--;
}
}
else if (j <= n && r) {
v[j].x++;
r--;
if (v[j].x == 10) {
l++;
r++;
j++;
}
} else
break;
}
cout << l << ' ' << r << el;
}
}
I
时间紧急,后续完善
pii a[N], b[N];
il void solve()
{
cin >> t;
while (t--) {
cin >> n;
cnt = 0;
bool flag = true;
for (int i = 1; i <= n; i++) {
cin >> a[i].first;
b[i] = a[i];
b[i].second = i;
}
sort(b + 1, b + n + 1);
for(int i = 1 ; i <= n; i++){
a[b[i].second].second = i;
}
for (int i = 1; i <= (n + 1) / 2; i++) {
if (b[i].first + b[n - i + 1].first != b[n].first + b[1].first)
flag = false;
}
if (!flag) {
cout << "NO" << '\n';
} else {
cout << "YES" << '\n';
vector<pii> v;
for(int i = 1 ; i <= n ; i++){
while(a[i].second != i){
v.push_back({i, a[i].second});
swap(a[i], a[a[i].second]);
}
}
cout << sz(v) << '\n';
for(auto i : v){
cout << i.first << ' ' << i.second << '\n';
}
}
}
}