当前位置: 首页 > news >正文

2025.2.14——1400

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';
//     }
// }

相关文章:

2025.2.14——1400

2025.2.14——1400 A 1400 B 1400 C 1400 D 1400 E 1400 F 1400 G 1400 H 1400 ------------------------------------------------ 思维排序/双指针/二分/队列匹配思维二分/位运算思维数学思维 A 一眼想到的是维护信息计数。维护两个信息同时用长的一半去找短的一半…...

DeepSeek教unity------MessagePack-04

Union 联合 MessagePack for C# 支持序列化接口类型和抽象类类型的对象。它的行为类似于 XmlInclude 或 ProtoInclude。在 MessagePack for C# 中&#xff0c;这些被称为Union。只有接口和抽象类可以被 Union 属性注解。需要唯一的联合键。 /******************************…...

Java异常体系深度解析:从Exception到Error

文章目录 前言一、Java异常体系概览ExceptionError 二、受检异常与非受检异常受检异常&#xff08;Checked Exception&#xff09;非受检异常&#xff08;Unchecked Exception&#xff09; 三、常见的Error类型四、异常处理机制try-catch-finally结构Throws关键字 五、自定义异…...

【linux】文件与目录命令 - ln

文章目录 1. 基本用法2. 常用参数3. 用法举例4. 注意事项 ln 命令用于在文件系统中创建硬链接或符号链接&#xff08;软链接&#xff09;&#xff0c;是文件共享和路径引用的常用工具。 1. 基本用法 语法&#xff1a; ln [选项] 源文件 [目标文件/目标目录]功能&#xff1a; 创…...

Xilinx kintex-7系列 FPGA支持PCIe 3.0 吗?

Xilinx kintex-7系列资源如下图 Xilinx各系列的GT资源类型和性能 PCIe Gen1/2/3的传输速率对比 K7上面使用的高速收发器GTX最高速率为12.5GT/s&#xff0c; PCIe Gen2 每个通道的传输速率为 5 GT/s。 PCIe Gen3 每个通道的传输速率为 8 GT/s。 所以理论上硬件支持PCIe3.0&#…...

无人机遥感技术在农业中的具体应用:株数和株高、冠层覆盖度、作物倒伏检测、叶面积指数、病虫害监测、产量估算、空间数据综合制图

近年来&#xff0c;随着无人机技术的飞速发展&#xff0c;其在智慧农业领域的应用越来越广泛。无人机遥感作为一种高效的空间大数据获取手段&#xff0c;能够为农业生产提供多时相、多维度、大面积的农情信息&#xff0c;为实现精准农业和智慧农业提供了有力支持。今天&#xf…...

前端框架React知识回顾

首先&#xff0c;得确定用户的需求&#xff0c;可能是一个准备面试的前端开发者&#xff0c;想要系统复习React相关知识点。接下来要考虑React的核心概念&#xff0c;比如组件、生命周期、Hooks这些肯定是必须的。然后&#xff0c;面试中常问的问题&#xff0c;比如虚拟DOM、状…...

坑多多之ac8257 i2c1 rtc-pcf8563

pcf85163 ordering information Ordering information Package Description Version Marking code PCF85163T/1 SO8 ① SOT96-1 PF85163 PCF85163TS/1 TSSOP8 ② SOT505-1 85163 ①plastic small outline package; 8 leads;body width 3.9 mm ②plastic thin…...

webpack构建流程

文章目录 [TOC](文章目录) 运行流程初始化流程编译构建流程compile编译make 编译模块build module 完成模块编译 输出流程seal输出资源emit输出完成 小结 运行流程 是一个串行的过程&#xff0c;它的工作流程就是将各个插件串联起来 在运行过程中会广播事件&#xff0c;插件只…...

React - 组件之props属性

在 React 中&#xff0c;props&#xff08;即属性&#xff09;是组件之间传递数据的一种方式。它是 React 组件的基础&#xff0c;用于将数据从父组件传递到子组件。 一、类组件中 1. props 的作用 数据传递: props 允许父组件向子组件传递数据。子组件可以使用这些数据来渲…...

PMTUD By UDP

通过UDP探测MTU&#xff0c;并实现udp echo server // Description: UDP echo server. // g udp_echo_server.cc -o udp_echo_server #include <iostream> #include <cstring> #include <arpa/inet.h> #include <unistd.h>#define PORT …...

Hutool - BloomFilter:便捷的布隆过滤器实现

1. 布隆过滤器简介 布隆过滤器&#xff08;Bloom Filter&#xff09;是一种空间效率极高的概率型数据结构&#xff0c;用于判断一个元素是否存在于一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法&#xff0c;但缺点是有一定的误判率&#xff0c;即判断元素存在…...

【学习资源】时间序列数据分析方法(1)

时间序列数据分析是一个有趣的话题&#xff0c;让我们多花一些时间来研究。此篇为第一篇文章。主要介绍特征提取方法、深度学习时序数据分析模型、参考资源。期望能帮助大家解决工业领域的相关问题。 1 特征提取方法&#xff1a;信号处理 (来源:INTELLIGENT FAULT DIAGNOSIS A…...

盛铂科技SWFA100捷变频频率综合器:高性能国产射频系统的关键选择

在现代射频系统中&#xff0c;频率综合器是实现精确频率控制和快速跳频的核心组件。盛铂科技推出的SWFA100捷变频频率综合器凭借其卓越的性能和小型化设计&#xff0c;成为高性能射频系统中的理想选择。 SWFA100捷变频频率综合器 高速跳频与宽频覆盖 SWFA100捷变频频率综合器能…...

释放你的元数据:使用 Elasticsearch 的自查询检索器

作者&#xff1a;来自 Elastic Josh Asres 了解如何使用 Elasticsearch 的 “self-quering” 检索器来通过结构化过滤器提高语义搜索的相关性。 在人工智能搜索的世界中&#xff0c;在海量的数据集中高效地找到正确的数据至关重要。传统的基于关键词的搜索在处理涉及自然语言的…...

【快速幂算法】快速幂算法讲解及C语言实现(递归实现和非递归实现,附代码)

快速幂算法 快速幂算法可用分治法实现 不难看出&#xff0c;对任意实数a和非负整数n&#xff0c;有&#xff1a; a n { 1 , n 0 , a ≠ 0 0 , a 0 ( a n 2 ) 2 , n > 0 , n 为偶数 ( a n 2 ) 2 ∗ a , n > 0 , n 为奇数 a^n \begin{cases} 1, & n 0, a\neq 0…...

3. 导入官方dashboard

官方dashboard&#xff1a;https://grafana.com/grafana/dashboards 1. 点击仪表板 - 新建 - 导入 注&#xff1a;有网络的情况想可以使用ID&#xff0c;无网络情况下使用仪表板josn文件 2. 在官方dashboard网页上选择符合你现在数据源的dashboard - 点击进入 3. 下拉网页选…...

怎么理解 Spring Boot 的约定优于配置 ?

在传统的 Spring 开发中&#xff0c;大家可能都有过这样的经历&#xff1a;项目还没开始写几行核心业务代码&#xff0c;就已经在各种配置文件中耗费了大量时间。比如&#xff0c;要配置数据库连接&#xff0c;不仅要在 XML 文件里编写冗长的数据源配置&#xff0c;还要处理事务…...

Dify 是什么?Dify是一个开源的LLM应用开发平台,支持快速搭建生成式AI应用,具有RAG管道、Agent功能、模型集成等特点

首先&#xff0c;Dify是一个开源的LLM应用开发平台&#xff0c;支持快速搭建生成式AI应用&#xff0c;具有RAG管道、Agent功能、模型集成等特点75。根据搜索结果&#xff0c;网页6详细对比了多个RAG和AI开发框架&#xff0c;包括MaxKB、FastGPT、RagFlow、Anything-LLM等。其中…...

数据预处理都做什么,用什么工具

数据预处理是数据分析、数据挖掘和机器学习中的关键步骤&#xff0c;其目的是将原始数据转换为适合后续分析或建模的格式。以下是关于数据预处理的主要内容及常用工具的详细介绍&#xff1a; 一、数据预处理的主要任务 数据预处理的主要任务包括以下几个方面&#xff1a; 数据…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

【C++进阶篇】智能指针

C内存管理终极指南&#xff1a;智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...