CSP-S 20

news/2025/10/20 21:39:10/文章来源:https://www.cnblogs.com/HS-fu3/p/19153724

9.11

今天是挂分的好日子~~~

101=0+10+91

t1 追逐游戏 (chase)

倍增+k祖先

算了不想写了.......

第2次没保存然后死机丢失了...

不难理解也不难实现,细节手模即可。

t1 就这样吧,看代码。

code

点击查看代码
#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int n, q;
vector<int> e[N];
int fa[N][20], dep[N];void dfs1(int x, int f)
{fa[x][0] = f;dep[x] = dep[f] + 1;for (int i = 1; i <= 19; ++i)fa[x][i] = fa[fa[x][i - 1]][i - 1];for (auto y : e[x])if (y != f)dfs1(y, x);
}int LCA(int x, int y)
{if (dep[x] < dep[y])swap(x, y);for (int i = 19; ~i; --i)if (dep[fa[x][i]] >= dep[y])x = fa[x][i];if (x == y)return x;for (int i = 19; ~i; --i)if (fa[x][i] != fa[y][i])x = fa[x][i], y = fa[y][i];return fa[x][0];
}inline int get_dis(int x, int y)
{int lca = LCA(x, y);return dep[x] + dep[y] - 2 * dep[lca];
}inline int jump_k(int x, int k)
{for (int i = 19; ~i; --i) //~i --> i>=0!!!!!!!if (k & (1 << i))x = fa[x][i];return x;
}inline void solve(int x, int y)
{int dis = get_dis(x, y);int k = (dis + 1) >> 1;cout << k << ' ';if (dep[x] < dep[y])swap(x, y), k = dis - k;cout << jump_k(x, k) << "\n";
}signed main()
{freopen("chase.in", "r", stdin);freopen("chase.out", "w", stdout);ios::sync_with_stdio(0);cin.tie(0);cin >> n >> q;for (int i = 1, u, v; i < n; ++i){cin >> u >> v;e[u].push_back(v);e[v].push_back(u);}dfs1(1, 0);int s1, t, s2;while (q--){cin >> s1 >> t >> s2;int dis1 = get_dis(s1, t);int dis2 = get_dis(s2, t);if (dis1 < dis2)cout << dis2 << ' ' << t << "\n";elsesolve(s1, s2);}return 0;
}

t2 统计

赛时用memset挂了20pts...

正解巧妙。

类似异或哈希做法。

具体的:

对于 \(1\)\(m-1\) 中每个数随机一个哈希值,令 \(v_m=-\sum_{i=1}^{m-1}v_i\)

这样做可使满足要求的区间 \(l,r\)\(sum_r-sum_{l-1}\) 为0.

考虑快速统计答案:

\(sum\) 升序排列,之后快速统计。

“快速统计”部分看代码理解(语文功底太差导致的)。

code

点击查看代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e6 + 10;
int T;
int n, m;
int a[N], sum[N], v[N];mt19937_64 myrand(time(0));signed main()
{freopen("st.in", "r", stdin);freopen("st.out", "w", stdout);ios::sync_with_stdio(0);cin.tie(0);cin >> T;while (T--){cin >> n >> m;for (int i = 0; i <= n; ++i)sum[i] = 0, v[i] = 0;for (int i = 1; i < m; ++i)v[i] = myrand(), v[m] -= v[i];for (int i = 1; i <= n; ++i)cin >> a[i], sum[i] = sum[i - 1] + v[a[i]];sort(sum, sum + 1 + n); // 注意必须手动保证sum[0]为0!!!int cnt = 1, ans = 0;for (int i = 1; i <= n; ++i){if (sum[i] != sum[i - 1])cnt = 0;ans += cnt++;}cout << ans << "\n";}return 0;
}

t3 软件工程

抽象东西假贪心有 96pts!!?

假做法:

code

点击查看代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e5 + 10;
const int inf = 1e9 + 7;
int n, k;
bool flag[N];
struct node
{int l, r, id;
} a[N], b[N];inline bool cmp1(node a, node b) { return a.l < b.l; }
inline bool cmp2(node a, node b) { return a.l > b.l; }signed main()
{freopen("se.in", "r", stdin);freopen("se.out", "w", stdout);ios::sync_with_stdio(0);cin.tie(0);cin >> n >> k;for (int i = 1; i <= n; ++i){cin >> a[i].l >> a[i].r;a[i].id = i;b[i].l = a[i].r - a[i].l, b[i].r = i;}int ans = 0;if (k >= n){for (int i = 1; i <= n; ++i)ans += a[i].r - a[i].l;cout << ans << "\n";return 0;}sort(a + 1, a + 1 + n, cmp1);sort(b + 1, b + 1 + n, cmp2);for (int i = 1; i <= k - 1; ++i)ans += b[i].l, flag[b[i].r] = 1;int l = 0, r = inf;for (int i = 1; i <= n; ++i){if (flag[a[i].id])continue;l = max(l, a[i].l), r = min(r, a[i].r);}if (l < r)ans += r - l;memset(flag, 0, sizeof(flag));//下面几乎一样的部分你可以理解成针对hack的特判int maxn = 0, dat1 = 0, dat2 = 0;// for (int i = 1; i <= n; ++i)//     cerr << a[i].l << ' ' << a[i].r << "\n";for (int i = 1; i < n; ++i){if (min(a[i].r, a[i + 1].r) - a[i + 1].l > maxn)maxn = min(a[i].r, a[i + 1].r) - a[i + 1].l, dat1 = a[i].id, dat2 = a[i + 1].id;}int ans2 = maxn;// cerr << dat1 << ' ' << dat2 << "\n";flag[dat1] = flag[dat2] = 1;for (int i = 1; i <= min(k - 2, n); ++i){if (flag[i])continue;ans2 += b[i].l, flag[b[i].r] = 1;}l = 0, r = 1e9;for (int i = 1; i <= n; ++i){if (flag[a[i].id])continue;l = max(l, a[i].l), r = min(r, a[i].r);}// cerr << l << ' ' << r << "\n";// cerr << ans2 << "\n";if (l < r)ans2 += r - l;cout << max(ans,ans2) << '\n';return 0;
}

至于真的:

t4 命运的X

看看题解说的:
1

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

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

相关文章

Flutter应用设置插件 - 轻松打开iOS和Android系统设置

一个功能强大的Flutter插件,支持从应用中直接打开iOS和Android系统的各种设置页面,包括位置、Wi-Fi、通知、蓝牙等系统设置,简化了用户设置跳转流程。app_settings 一个用于从Flutter应用中打开iOS和Android手机设置…

CSP-S 22

9.169.16 原来史可以连着吃 挂了100 t1 简单贪心,不多解释。 没有大样例爆了 code点击查看代码 #include <bits/stdc++.h> #define int long long using namespace std; const int inf = 1e18; int minn; int T…

/usr/bin/sudo 二进制文件的权限有问题,导致所有用户都无法使用 sudo

[root@node1 sudoers.d]# su - student [student@node1 ~]$ sudo whoami sudo ls /root -bash: /usr/bin/sudo: Permission denied -bash: /usr/bin/sudo: Permission denied 问题很明确了!在 node1 上,/usr/bin/sud…

MySQL 8.0.43社区版本安装流程

MySQL 8.0.43社区版本安装流程> 1. MySQL的下载 点击MySQL官网地址进入https://www.mysql.com/cn/,选择页面download,选择社区版本下载。选择对应自己主机机型下载Windows或者Linux版本的,这里以Windows版本为例子…

CSP-S 19

9.109.10 125=10+20+75+20 废话 模拟赛能不能类人一点??? 因为四道题所以四个样例是吧,你给那小样例有任何作用吗我请问呢? t1 染色(color) 结论题 赛时想假了(你但凡有个稍微大点的样例我也不会想这么假) 显然…

LangGraph 记忆系统实战:反馈循环 + 动态 Prompt 让 AI 持续学习

代理系统或者 RAG 方案,基本都需要一个双层记忆架构,这样 LLM 既能保持对当前上下文的专注,又能记住过往交互的内容。 短期记忆负责单个会话内的即时信息管理,长期记忆则跨会话存储知识,让系统能够持续学习和进化…

【HOWTO】购买和销售二手测试仪器指南

测试仪器是电子工程师、技术人员和电子爱好者在进行信号分析、测量和诊断时不可或缺的工具。尽管全新的测试仪器通常能提供最先进的技术,但价格往往较高,特别是对于预算有限的人。因此,二手测试仪器市场成为了一种经…

CSP-S 18

9.89.8 100+0+20+0 废话 赛时t1先打的暴搜,大数据直接飞了,折半搜即过,30min(当时感觉写的挺快应该不会很差)。 t2先模样例,哎怎么不对?哦少考虑情况。哎怎么还是不对?啊乘写成加了... 各种唐诗错误开始发力了,…

研1转码自学黑马程序员Python第7天 | Python函数知识 - 指南

研1转码自学黑马程序员Python第7天 | Python函数知识 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Conso…

小马算力致敬程序员

10 月 20日凌晨,我把最后一条 CI 流水线从自建 GPU 机器迁移到小马算力,推送、合并、触发——单元测试跑完,账单弹出:0.82。 同一时刻,公司群里弹出财务提醒:上月闲置显卡折旧 4 300。那一刻,我意识到“算力”这…

Project. 2025.11化学小组pre

\(\boldsymbol{Project.}\) 2025.11 化学小组pre \(\rm I\) 选题阶段 \(\it 1.1\) 超导 【文献堆】介绍超导(泛) 常压下双层结构镍氧化物薄膜高温超导电性的发现与研究展望 高压下金属硼碳(氮)化合物的结构及超导电…

蛋白表达标签:重组蛋白研究的精妙引擎

在重组蛋白的世界里,效率与精准是核心追求。如何从复杂的细胞裂解液中快速捕获目标蛋白?如何直观地追踪其表达与定位?又如何让那些难以折叠的蛋白稳定溶解?这些问题的答案,常常不在于蛋白本身,而在于一个精妙的分…

106.腾讯地图位置服务再出错

106.腾讯地图位置服务再出错我再实现项目的一个客户端登录时候 出现问题为了实现此功能之前关于地图调用的总结https://www.cnblogs.com/gaodiyuanjin/p/19135390 以为换了就好了 但项目已经使用这个 顺便插一下 项目中…

Luogu P10034 「Cfz Round 3」Circle 题解 [ 蓝 ] [ 背包 DP ] [ 质数筛 ] [ 图论 ] [ 构造 ]

Circle:思维难度并没有很大,难点主要还是细节的特判上。 先转化题意:构造一张无自环的有向图,使得每个点的出度、入度均为 \(1\),并且部分点走 \(l\) 步后必须回到自己。 因为每个点的出度、入度均为 \(1\),所以…

2025.10.20模拟赛

赛时 T1是原...10分钟过了 然后先看了眼3个题,T2感觉可推,T3感觉更简单 想开T3,然后想到还是按顺序开吧,所以开的T2 先推了一会重复的性质,发现什么也没有 此时1h过去了 然后想到前缀和的性质,然后没怎么证明,然…

20232410 2025-2026-1 《网络与系统攻防技术》实验二实验报告

20232410 2025-2026-1 《网络与系统攻防技术》实验二实验报告 一、实验内容回答问题: (1)例举你能想到的一个后门进入到你系统中的可能方式? 比如某些钓鱼邮件或者钓鱼网站,携带着一些捆绑着后门程序的exe文件。若…

SQLite简单使用

SQLite的简单使用记录创建数据库创建完成简单使用先进行一个链接一个表 一个视图创建表 输入表明创建列后面的就跟MySQL大差不差了创建完之后点击OK点击这个可以查看SQL语句

Adaptive Learning Rate(自适应学习率) - -一叶知秋

Adaptive Learning Rate(自适应学习率) Adaptive Learning Rate(自适应学习率) 是指在模型训练过程中,学习率会根据参数更新的反馈自动调整,而不是使用一个固定值。其核心思想是: 👉 不同参数或不同训练阶段,…