2025.2.14——1400

news/2025/2/15 18:35:27/

2025.2.14——1400


A 1400

B 1400

C 1400

D 1400

E 1400

F 1400

G 1400

H 1400

------------------------------------------------

  • 思维+排序/双指针/二分/队列匹配+思维+二分/位运算+思维+数学+思维


A

  1. 一眼想到的是维护信息计数。
  2. 维护两个信息同时用长的一半去找短的一半。
  3. 较好的思维题。

B

  1. 贪心匹配:优先使用最小的匹配合法最小的。
  2. 排序+双指针/二分/队列匹配。

C

  1. 出现一次,子数组也是子序列,所以不能再出现了。
  2. 发现边界是控制出现与否的充要条件。

D

  1. 从每一位考虑,最初以为 k k k 每一位都需要出现,其实不是,但可以凭借这个思路计算出区间按位与具体数的。
  2. 另解:今天才知道 s t st st 表可以维护区间按位与、按位或值。

E

  1. 逆向思维+优化模拟:指针移动+找循环。
  2. 思维量挺多。

F

  1. 数学题。证明无解不太懂,限制次数过了。 洛谷题解。

G

  1. LCM与GCD问题,数学一下分析因子。

H

  1. 横向纵向分别考虑。横向可转化为纵向。
  2. 考虑纵向:交替发现对纵向平衡性无影响。同时对两行平衡性无影响且无后效性。

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

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)               \{                           \for (auto Vec : VEC)    \cout << Vec << ' '; \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;
}int has[6][46];
auto sum(string s, int l, int r)
{int ans = 0;for (int i = l; i <= r; i++)ans += s[i] - '0';return ans;
}
auto sum(string s)
{int ans = 0;for (auto v : s)ans += v - '0';return ans;
}
auto tar_sum(string s, int l, int r)
{return 2 * sum(s, l, r) - sum(s);
}
void _()
{int n;cin >> n;vector<string> s(n);for (auto &v : s){cin >> v;has[v.size()][sum(v)]++;}int res = 0;for (auto l : s){int ln = l.size();for (int i = 2; i <= 10; i += 2){int rn = i - ln;if (rn <= 0 || rn > ln)continue;int tar_r = tar_sum(l, 0, i / 2 - 1);if (tar_r < 0)continue;res += has[rn][tar_r];}}for (auto r : s){int rn = r.size();for (int i = 2; i <= 10; i += 2){int ln = i - rn;if (ln <= 0 || ln >= rn)continue;int tar_l = tar_sum(r, rn - i / 2, rn - 1);if (tar_l < 0)continue;res += has[ln][tar_l];}}cout << res;
}
// int has[6][46][6][46];
// void _()
// {
//     memset(has, 0x3f, sizeof has);
//     int n;
//     cin >> n;
//     // struct Node
//     // {
//     //     /* data */
//     //     int len, sum, prelen, presum;
//     // };
//     // map<Node, int> has;
//     auto get_suf = [&](string s, int suf)
//     {
//         int sum = 0, m = s.size();
//         for (int i = m - 1; i >= m - suf; i--)
//             sum += s[i] - '0';
//         return sum;
//     };
//     auto get_pre = [&](string s, int pre)
//     {
//         int sum = 0, m = s.size();
//         for (int i = 0; i < pre; i++)
//             sum += s[i] - '0';
//         return sum;
//     };
//     int res = 0;
//     for (int i = 0; i < n; i++)
//     {
//         string s;
//         cin >> s;
//         res++;
//         int m = s.size();//         for (int sum = 0; sum <= 90; sum += 2)
//             for (int len = 2; len <= 10; len += 2)
//             {
//                 int tar_sum = sum - get_pre(s, m);
//                 int tar_len = len - m;
//                 // bug3(len, m, tar_len);
//                 if (tar_sum < 0 || tar_len < 0 || tar_len > 5 || tar_sum > 45)
//                     continue;
//                 int half = len >> 1;
//                 if (m >= tar_len)
//                 {
//                     if (get_suf(s, half) << 1 == len)
//                     {
//                         for (int i = 1; i <= 5; i++)
//                             for (int j = 0; j <= 45; j++)
//                                 res += has[tar_len][tar_sum][i][j];
//                     }
//                 }
//                 else
//                 {
//                     // bug2(tar_len, tar_sum);
//                     // bug2(half, tar_sum >> 1);
//                     res += has[tar_len][tar_sum][half][tar_sum >> 1];
//                 }
//             }
//         int sum = get_pre(s, m);
//         for (int i = 0; i < m; i++)
//             has[m][sum][i + 1][get_pre(s, i + 1)]++, bug(has[m + 1][sum][i][get_pre(s, i + 1)]);
//     }
//     cout << res;
//     el;
// }

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)               \{                           \for (auto Vec : VEC)    \cout << Vec << ' '; \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<pair<int, int>> a;for (int i = 0; i < n; i++){int x;cin >> x;a.push_back({x, -1});}for (int i = 0; i < n; i++){int x;cin >> x;a.push_back({x, 1});}sort(begin(a), end(a));int res = n;queue<int> q;for (auto [x, y] : a){if (y == -1)q.push(x);else{if (q.size() && x > q.front())res--, q.pop();}}cout << res << '\n';
}
// void _()
// {
//     int n;
//     cin >> n;
//     vector<int> a(n), b(n);
//     for (int &x : a)
//         cin >> x;
//     for (int &x : b)
//         cin >> x;
//     sort(begin(a), end(a));
//     sort(begin(b), end(b));
//     int l = 0, r = 0, res = n;
//     for (; r < n; r++)
//         if (a[l] < b[r])
//             l++, res--;
//     cout << res;
//     el;
// }

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)               \{                           \for (auto Vec : VEC)    \cout << Vec << ' '; \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), f(n + 1), g(n + 1);for (int i = 1; i <= n; i++)cin >> a[i];map<int, bool> has;for (int i = 1; i <= n; i++)if (!has[a[i]])f[i] = 1, has[a[i]] = 1;has.clear();for (int i = n; i; i--)if (!has[a[i]])g[i] = 1, has[a[i]] = 1;int pre = 0, res = 0;for (int i = 1; i <= n; i++){pre += f[i];res += pre * g[i];}cout << res;el;
}

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)               \{                           \for (auto Vec : VEC)    \cout << Vec << ' '; \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<vector<int>> pre(30, vector<int>(n + 1));for (int i = 0; i < 30; i++)for (int j = 1; j <= n; j++)pre[i][j] = pre[i][j - 1] + (a[j] >> i & 1);// ST表  RMQ  倍增// dp[i][j] 以i为起点 长度为1<<j的区间的最大值vector<vector<int>> dp(n + 1, vector<int>(32));// initfor (int j = 0; j < 30; j++) // j 是每一层状态for (int i = 1; i <= n; i++){if (i + (1 << j) - 1 > n)continue;if (!j)dp[i][j] = a[i];elsedp[i][j] = dp[i][j - 1] & dp[i + (1 << j - 1)][j - 1];}// queryauto ask = [&](int l, int r){int k = __lg(r - l + 1);return dp[l][k] & dp[r + 1 - (1 << k)][k];};auto ok = [&](int l, int r, int k){// int ans = 0;// for (int i = 0; i < 30; i++)// {//     if (pre[i][r] - pre[i][l - 1] == (r - l + 1))//         ans += 1ll << i;// }// return ans >= k;return ask(l, r) >= k; // ST表只需这一句};// bug(ok(1, 1, 7));// bug(ok(1, 2, 7));int q;cin >> q;while (q--){int L, k;cin >> L >> k;int l = L - 1, r = n + 1;while (r - l - 1){int R = l + r >> 1;if (ok(L, R, k))l = R;elser = R;}// bug2(l, r);cout << (l < L ? -1 : l) << ' ';}el;
}

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)               \{                           \for (auto Vec : VEC)    \cout << Vec << ' '; \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, k;cin >> n >> k;vector<int> a(n + 1);for (int i = 1; i <= n; i++)cin >> a[i];int f = n;vector<int> vis(n + 1);while (k--){if (a[f] > n){cout << "No";el;return;}vis[f] = 1;f = (f - a[f] + n) % n;if (vis[f])break;}// k %= cnt;// while (k--)//     f = a[f];// for (int i = f + 1; i <= n; i++)//     cout << a[i] << ' ';// for (int i = 1; i <= f; i++)//     cout << a[i] << ' ';cout << "Yes";el;
}

F

#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)               \{                           \for (auto Vec : VEC)    \cout << Vec << ' '; \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, m;cin >> n >> m;n % m;int cnt = 100, res = 0;while (cnt--){if (n % m == 0){cout << res;el;return;}while (n < m){res += n;n <<= 1;}n %= m;}cout << -1;el;
}

G

#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)               \{                           \for (auto Vec : VEC)    \cout << Vec << ' '; \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, m;cin >> n;vector<int> t(n);map<int, int> a, b;for (int &x : t)cin >> x;for (int i = 0; i < n; i++){int x;cin >> x;a[t[i]] = x;}cin >> m;t.assign(m, 0);for (int &x : t)cin >> x;for (int i = 0; i < m; i++){int x;cin >> x;b[t[i]] = x;}constexpr int mod = 998244353;int res = 1;for (auto [x, y] : b)if (a[x] < y)res = 0;for (auto [x, y] : a)res *= y > b[x] ? 2 : 1, res %= mod;cout << res;el;
}

H

#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)               \{                           \for (auto Vec : VEC)    \cout << Vec << ' '; \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, m;cin >> n >> m;vector<string> s(n + 1);for (int i = 1; i <= n; i++)cin >> s[i], s[i] = ' ' + s[i];vector<vector<int>> f(n + 1, vector<int>(m + 1));bool fail = 0;for (int i = 1; i <= n; i++){int ans = 1;for (int j = 1; j <= m; j++)if (s[i][j] == 'U')f[i][j] = ans, ans = -ans, f[i + 1][j] = ans;}for (int j = 1; j <= m; j++){int ans = 1;for (int i = 1; i <= n; i++)if (s[i][j] == 'L')f[i][j] = ans, ans = -ans, f[i][j + 1] = ans;}for (int i = 1; i <= n; i++){int sum_row = 0;for (int j = 1; j <= m; j++)sum_row += f[i][j];if (sum_row)fail = 1;}for (int j = 1; j <= m; j++){int sum_col = 0;for (int i = 1; i <= n; i++)sum_col += f[i][j];if (sum_col)fail = 1;}if (fail){cout << -1 << '\n';return;}for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){if (f[i][j])cout << (f[i][j] == 1 ? 'W' : 'B');elsecout << '.';}cout << '\n';}
}
// void _()
// {
//     int n, m;
//     cin >> n >> m;
//     vector<string> s(n + 1);
//     for (int i = 1; i <= n; i++)
//         cin >> s[i], s[i] = ' ' + s[i];
//     vector<vector<int>> f(n + 1, vector<int>(m + 1));
//     bool fail = 0;
//     for (int i = 1; i <= n; i++)
//     {
//         int sum_row = 0;
//         for (int j = 1; j <= m; j++)
//         {
//             if (s[i][j] - '.')
//                 f[i][j] = i + j & 1 ? 1 : -1;
//             sum_row += f[i][j];
//         }
//         if (sum_row)
//             fail = 1;
//     }
//     for (int j = 1; j <= m; j++)
//     {
//         int sum_col = 0;
//         for (int i = 1; i <= n; i++)
//             sum_col += f[i][j];
//         if (sum_col)
//             fail = 1;
//     }
//     if (fail)
//     {
//         cout << -1 << '\n';
//         return;
//     }
//     for (int i = 1; i <= n; i++)
//     {
//         for (int j = 1; j <= m; j++)
//         {
//             if (f[i][j])
//                 cout << (f[i][j] == 1 ? 'W' : 'B');
//             else
//                 cout << '.';
//         }
//         cout << '\n';
//     }
// }


http://www.ppmy.cn/news/1572315.html

相关文章

网络安全 | 5G网络安全:未来无线通信的风险与对策

网络安全 | 5G网络安全&#xff1a;未来无线通信的风险与对策 一、前言二、5G 网络的技术特点2.1 超高速率与低延迟2.2 大容量连接与网络切片 三、5G 网络面临的安全风险3.1 网络架构安全风险3.2 设备终端安全风险3.3 应用场景安全风险3.4 用户隐私安全风险 四、5G 网络安全对策…

分享 UniApp 中超好看的卡片阴影样式

在 UniApp 开发中&#xff0c;页面的视觉效果对于提升用户体验至关重要。一个设计精美的卡片样式往往能让页面更加美观和吸引人&#xff0c;而阴影效果则是为卡片增添立体感和层次感的关键元素。今天&#xff0c;我就来和大家分享一个在 UniApp 中实现的卡片阴影样式&#xff0…

部门管理(体验,最原始方法来做,Django+mysql)

本人初学&#xff0c;写完代码在此记录和复盘 在创建和注册完APP之后&#xff08;我的命名是employees&#xff09;&#xff0c;编写models.py文件创建表 手动插入了几条数据 1.部门查询 urls.py和views.py在编写之前&#xff0c;都要注意导入对应的库 urls.py&#xff1a;…

【实测】用全志A733平板搭建一个端侧Deepseek算力平台

随着DeepSeek 的蒸馏技术的横空出世&#xff0c;端侧 SoC 芯片上运行大模型成为可能。那么端侧芯片跑大模型的效果如何呢&#xff1f;本文将在全志 A733 芯片平台上部署一个 DeepSeek-R1:1.5B 模型&#xff0c;并进行实测效果展示。 端侧平台环境 设备&#xff1a;全志A733平板…

Spring基于文心一言API使用的大模型

有时做项目我们可能会遇到要在项目中对接AI大模型 本篇文章是对使用文心一言大模型的使用总结 前置任务 在百度智能云开放平台中注册成为开发者 百度智能云开放平台 进入百度智能云官网进行登录&#xff0c;点击立即体验 点击千帆大模型平台 向下滑动&#xff0c;进入到模型…

深度学习与增强现实的完美邂逅:开启未来智能交互的新篇章

深度学习与增强现实的完美邂逅:开启未来智能交互的新篇章 近年来,随着深度学习和增强现实(AR)技术的飞速发展,二者的结合应用正逐步改变着我们的生活方式。从智能驾驶到医疗诊断,再到游戏娱乐,深度学习为增强现实提供了强大的算法支持,而增强现实则为深度学习提供了丰…

Spring Boot整合协同过滤算法,实现个性化推荐

1. 引言 在这篇文章中&#xff0c;我们将展示如何使用 Spring Boot 框架与 协同过滤算法 相结合来构建一个简单的推荐系统。推荐系统广泛应用于电商、电影推荐、社交平台等领域。协同过滤算法通过分析用户行为&#xff0c;找出相似的用户或者物品&#xff0c;从而实现个性化推荐…

美术教程2025

动画 必看 动画d【Unity初学者教程】如何制作 2D 游戏动画_哔哩哔哩_bilibili 如何在Unity中制作2D游戏动画 - 新手教程 - Blackthornprod_新手教程 可不看序列帧 【简明UNITY教程】2D游戏 动画制作实例详解_哔哩哔哩_bilibili unityspine 【Unity2D游戏开发教程】2D自定…