2025.10 国庆集训模拟赛总结

news/2025/10/8 22:02:01/文章来源:https://www.cnblogs.com/Dreamerseve/p/19130183

image

把门视为点,找环,答案就是环的长度


image

d4faywvv7v

amzsfknpzp


image

先预处理前缀和

然后预处理f[i]表示满足j<i且aj==ai的最大的j。

答案就变成了:

image

第一问用树套树类结构维护

第二问直接二分第一问就行,因为第一问我们在先做了。

树套树太难写,所以直接BIT套vector就行了

https://www.cnblogs.com/cjl-world/p/14255060.html

#include <bits/stdc++.h>
using namespace std;struct Fenwick {int n;vector<int> bit;Fenwick() : n(0) {}Fenwick(int n_) { init(n_); }void init(int n_) {n = n_;bit.assign(n + 1, 0);}void add(int i, int v) {for (; i <= n; i += i & -i) bit[i] += v;}int sum(int i) {int s = 0;for (; i > 0; i -= i & -i) s += bit[i];return s;}int rangeSum(int l, int r) {if (r < l) return 0;return sum(r) - sum(l - 1);}
};void solve_case() {ios::sync_with_stdio(false);cin.tie(nullptr);int n, q;cin >> n >> q;vector<int> a(n + 1);for (int i = 1; i <= n; ++i) cin >> a[i];vector<int> prev(n + 1, 0);{unordered_map<int,int> last;last.reserve(n * 2);for (int i = 1; i <= n; ++i) {auto it = last.find(a[i]);if (it != last.end()) prev[i] = it->second;else prev[i] = 0;last[a[i]] = i;}}vector<int> f(n + 1, 0);{Fenwick bit(n);bit.init(n);unordered_map<int,int> last;last.reserve(n * 2);for (int i = 1; i <= n; ++i) {int v = a[i];if (last.count(v)) bit.add(last[v], -1);bit.add(i, 1);last[v] = i;int leftSum = prev[i] ? bit.sum(prev[i]) : 0;f[i] = bit.sum(i) - leftSum;}}vector<vector<int>> vec(n + 1);for (int i = 1; i <= n; ++i) {for (int j = i; j <= n; j += j & -j) vec[j].push_back(f[i]);}vector<vector<int>> nodeBit(n + 1);for (int j = 1; j <= n; ++j) {if (!vec[j].empty()) {sort(vec[j].begin(), vec[j].end());vec[j].erase(unique(vec[j].begin(), vec[j].end()), vec[j].end());nodeBit[j].assign(vec[j].size() + 1, 0);}}auto nodeAdd = [&](int j, int pos, int val) {auto &bit = nodeBit[j];int m = (int)bit.size() - 1;for (; pos <= m; pos += pos & -pos) bit[pos] += val;};auto nodeSum = [&](int j, int pos) {int s = 0;auto &bit = nodeBit[j];for (; pos > 0; pos -= pos & -pos) s += bit[pos];return s;};auto activate_idx = [&](int i) {for (int j = i; j <= n; j += j & -j) {if (vec[j].empty()) continue;int pos = int(lower_bound(vec[j].begin(), vec[j].end(), f[i]) - vec[j].begin());nodeAdd(j, pos + 1, 1);}};auto query_pref = [&](int pos, int k) {int res = 0;for (int j = pos; j > 0; j -= j & -j) {if (vec[j].empty()) continue;int cnt = int(upper_bound(vec[j].begin(), vec[j].end(), k) - vec[j].begin());res += nodeSum(j, cnt);}return res;};vector<vector<int>> idxByPrev(n + 1);for (int i = 1; i <= n; ++i) if (prev[i] >= 1) idxByPrev[prev[i]].push_back(i);struct Q1 { int l, r, k, id; };struct Q2 { int l, r, need, id; int lo, hi, mid, res; };vector<Q1> q1s;vector<Q2> q2s;q1s.reserve(q);q2s.reserve(q);for (int i = 0; i < q; ++i) {int t,l,r,k0;cin >> t >> l >> r >> k0;if (t == 1) q1s.push_back({l,r,k0,i});else q2s.push_back({l,r,k0,i,1, r - l + 1, -1, -1});}vector<long long> ans(q, -1);for (int j = 1; j <= n; ++j) if (!nodeBit[j].empty()) fill(nodeBit[j].begin(), nodeBit[j].end(), 0);int curL = n;sort(q1s.begin(), q1s.end(), [](const Q1 &x, const Q1 &y){ return x.l > y.l; });for (auto &qq : q1s) {while (curL >= qq.l) {for (int idx : idxByPrev[curL]) activate_idx(idx);--curL;}int tot = query_pref(qq.r, qq.k) - query_pref(qq.l - 1, qq.k);ans[qq.id] = tot;}if (!q2s.empty()) {bool any = true;while (true) {any = false;vector<int> act;act.reserve(q2s.size());for (int i = 0; i < (int)q2s.size(); ++i) {if (q2s[i].lo <= q2s[i].hi) {any = true;q2s[i].mid = (q2s[i].lo + q2s[i].hi) >> 1;act.push_back(i);}}if (!any) break;sort(act.begin(), act.end(), [&](int u, int v){ return q2s[u].l > q2s[v].l; });for (int j = 1; j <= n; ++j) if (!nodeBit[j].empty()) fill(nodeBit[j].begin(), nodeBit[j].end(), 0);curL = n;for (int idxQ : act) {auto &Q = q2s[idxQ];while (curL >= Q.l) {for (int idx : idxByPrev[curL]) activate_idx(idx);--curL;}int cnt = query_pref(Q.r, Q.mid) - query_pref(Q.l - 1, Q.mid);if (cnt >= Q.need) {Q.res = Q.mid;Q.hi = Q.mid - 1;} else {Q.lo = Q.mid + 1;}}}for (auto &Q : q2s) {if (Q.res == -1) ans[Q.id] = -1;else ans[Q.id] = Q.res;}}for (int i = 0; i < q; ++i) cout << ans[i] << '\n';
}int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int T;if (!(cin >> T)) return 0;while (T--) solve_case();return 0;
}

image

直接按时间顺序处理每个区间,记录这个点能否被访问。

然后树剖维护即可。


image

找到最大的d,使得区间[l+d,r-d]不合法但是[l+d-1,r-d+1]合法,并将合法区建设为[l1,r1]。

容易发现[1,n]一定会被转移到[l1,r1],并且[l1,r1]后决策只有两种,就是先手动左面或者右面,然后就只能拿一边了,二分出两种情况,只要有一种是奇数先手就是赢得,所以直接判奇偶性即可

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

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

相关文章

详细介绍:https和http有什么区别-http各个版本有什么区别

详细介绍:https和http有什么区别-http各个版本有什么区别pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consola…

CF2150F Cycle Closing

感觉上判是否能一次完成是困难的。设两次的路径长度分别为 \(a, b\),考虑一些特殊情况。 题目一定有解,考虑取出一棵生成树。可以发现,第二次操作时的边数实际上很多,感觉上对于 \(b\) 不能限制得太小。考虑 \(a\)…

Easysearch 字段隐身之谜:source_reuse 与 ignore_above 的陷阱解析

背景问题 前阵子,社区有小伙伴在使用 Easysearch 的数据压缩功能时发现,在开启 source_reuse 和 ZSTD 后,一个字段的内容看不到了。 索引的设置如下: {......"settings": {"index": {"co…

QOJ856 Cactus 广义串并联图

题意 给定一棵仙人掌, 你需要用 \(k\) 种颜色给每个结点染色, 且保证有边相连的结点的颜色不相同, 求染色的方案数对 \(10^9+7\) 取模的结果。仙人掌定义为一张特殊的无向图, 其中每条边至多在一个简单环上。 题解 因为…

CF2152 订题

context A 除了最小的数字每种数字都会占用一次,去重后直接输出 \(2n-1\) 即可。 B 太神秘了,先咕咕咕。 C 发现如果一个区间内存在至少一个长度 \(\ge 2\) 的同色连续段,那么这个连续段可以通过删除两个同色之间的…

TortoiseSVN账号切换 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

房产中介 网站开发天津招投标天津建设工程信息网

电脑 远程桌面连接你的凭据不工作解决方法 方法/步骤 第一步我们首先需要知道远程桌面连接你的凭据不工作原因是&#xff0c;远程的电脑拒绝了访问&#xff0c;需要设置在远程的电脑上设置安全选项&#xff0c;按winR键&#xff0c;打开运行&#xff0c;输入“gpedit.msc”&a…

GJ Round 2025赛季

Round 1 (9.1) A给定正整数序列 \(a_1,a_2,\cdots,a_n\),对于 \(\forall k \in [0,n] \cap \mathbb Z\),完成以下问题: 令 \(S \subseteq A = \{1,2,\cdots,n\}\),当且仅当存在一个集合 \(T \subseteq S\),满足 \…

resolvers: [ElementPlusResolver()] 有什么用? - 详解

resolvers: [ElementPlusResolver()] 有什么用? - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&…

ASP.NET Core 中读取 UserAgent 的正确姿势

今天读了 Andrew Lock 的2篇博文学到的招式,记录一下。 两篇博文的链接:Using default interface methods for performance gains in IHeaderDictionary A brief look at StringValues之前的读取 UserAgent 的代码:…

Git学习记录(二):代码patch

Git中的一笔commit提交,可以成为patch生成Patch带有commit信息: git format-patch -1 HEAD only代码应用Patchcheck是否有冲突 git apply --check 0001-xxx.patch 应用Patchgit apply 0001-xxxx.patch git am 0001-xx…

网站开发有关费用网站建设服务费一年多少钱

Ubuntu从起后居然把Windows的设置给记住了。显示ok。我晕。以前倒是也有过这问题&#xff0c;在双系统情况下&#xff0c;外接键盘的灯会继承Windows的早就有心弄个显示器&#xff0c;把笔记本的外接上&#xff0c;倒不是说非要2个屏幕来工作如何如何&#xff1f;只是因为我的本…

2025年10月化妆品代工厂最新推荐排行榜:聚焦 OEM/ODM/ 网红爆款需求,精选优质企业助品牌高效合作

2025 年化妆品 ODM 行业规模预计突破 1128 亿元,功效型护肤等细分领域增速迅猛,但行业内企业资质悬殊问题突出。部分代工企业缺乏核心研发能力,配方同质化严重难以适配 “成分党” 需求;部分生产标准落后,未达十万…

西安地产网站制作公司四川网站建设公司 登录

## 路由与伪静态### 路由>[info] 字面上解释&#xff0c;路是线路&#xff0c;道路&#xff1b;由&#xff0c;缘由&#xff0c;指意&#xff0c;表示规则&#xff1b;所以意思就是按照什么规则&#xff0c;或者意义&#xff0c;被指派到什么地方去。所以路由是指线路分发&a…

Exchange安全漏洞分析:ProxyOracle攻击链详解

本文深入分析Microsoft Exchange中的ProxyOracle攻击链,包含CVE-2021-31195 XSS漏洞和CVE-2021-31196填充Oracle攻击,攻击者可通过恶意链接获取用户明文密码,涉及FBA认证机制和加密cookie解析过程。Orange:MS Exch…

北京建站公司哪家好都选万维科技电脑维护网站模板

题目链接 2865. 美丽塔 I - 力扣&#xff08;LeetCode&#xff09; 解题思路 根据题意可以知道&#xff0c;假设数组的长度为n,对于山状数组heights定义如下&#xff1a; 假设heights[i]为数组中的最大值&#xff0c;则i左边的值均小于等于heights[i]&#xff0c;i右边的值…

将word档案转为kindle可识别的azw3材料的方法

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

牛客 周赛111 20251008

牛客 周赛111 20251009 https://ac.nowcoder.com/acm/contest/117763 A: 题目大意: void solve(){int a, b, c;cin >> a >> b >> c;if (b != a + 1 || c != b + 1) cout << "No";…

本人于2025上半学期编码需要遵守的规范(参考腾讯内部编码规范)

编码的规范可以使代码更加具有易维护性以及编码安全性等等 程序的板式 缩进使用 4 个空格,禁止混用 Tab 键。 行宽限制 80 字符,长表达式在低优先级操作符处换行,操作符置于新行首。 大括号{}独占一行并与代码对齐,…

常州语言网站建设龙岩网站开发

hw_breakpoint 是由处理器提供专门断点寄存器来保存一个地址&#xff0c;是需要处理器支持的。处理器在执行过程中会不断去匹配&#xff0c;当匹配上后则会产生中断。 内核自带了硬件断点的样例linux-3.16\samples\hw_breakpoint\data_breakpoint.c static void sample_hbp_h…