2024.4 模拟赛日志
2024.4 模拟赛日志
- 2024.4 模拟赛日志
- 2024 年 syzx 春季训练 1(20240315)
- SS240323(20240323)
- 冲刺NOI2024联测1(20240329)
- 2024 年 syzx 春季训练 2(20240331)
- 冲刺NOI2024联测2(20240330)
- 冲刺NOI2024专题1:构造&交互(20240331)
- 冲刺NOI2024联测3(20240401)
- 冲刺NOI2024联测4(20240402)
- 冲刺NOI2024专题2:dp(20240402)
- 冲刺NOI2024联测5(20240404)
- 冲刺NOI2024专题3:数论和组合数学(20240404)
- 冲刺NOI2024联测6(20240405)
- 冲刺NOI2024联测7(20240406)
- 冲刺NOI2024专题4:代数、多项式类(20240407)
- 冲刺NOI2024联测8(20240408)
- 冲刺NOI2024联测9(20240409)
- 高一高二恢复性杂题训练7(20240410)
- 高一高二恢复性杂题训练8(20240411)
- 多校国赛模拟赛1(20240412)
- NOI2024容斥原理的简单应用「重庆八中刘洋」(20240413)
- 多校NOI2024国赛模拟赛2 (20240415)
- 多校NOI2024国赛模拟赛3暨重庆市友谊赛(20240416)
- NOI2024字符串选讲1-ACAM、PAM、SA、SAM「广实黄建恒」(20240417)
- NOI2024字符串选讲2-基本子串结构「广实黄建恒」 (20240417)
- 多校NOI2024国赛模拟赛4(20240419)
- NOI2024简单技巧杂题选讲「成外李枨夏」(20240420)
- 多校NOI2024国赛模拟赛5(20240422)
- 多校NOI2024国赛模拟赛6(20240423)
- NOI2024简单杂题选讲「金华一中赵晟昊」(20240424)
2024 年 syzx 春季训练 1(20240315)
https://www.cnblogs.com/caijianhong/p/18076181
SS240323(20240323)
http://cplusoj.com/d/senior/contest/65fd9320ccaa6dc9eee1e44f
- [A 魔环上的树] 计数,数树,平面图三角剖分(的结构)
- [B 序列舞蹈] 斜率相关,数据结构
- C 脱单计划 最小费用最大流,曼哈顿距离转化
冲刺NOI2024联测1(20240329)
http://47.92.197.167:5283/contest/482
- [A 帽子] 序列构造双射的构造题
- [B 我希望你们永远不要用到的洗牌法] 很困难写的分治贪心题
- [C 一路向“北” / CF1621H Trains and Airplanes] 数据结构,整除分段的值
反思:T1 想错方向了,往相邻颜色上面想(具体见题目),没有发现是一个构造题;T2 的暴力 dp 复杂度写成
线段树合并新写法
- 定义 static 的数组可以不写数组大小
- 如果 static 函数与 std 重名(如下面的 merge),需要指明
int T;
struct segtree {
static constexpr int N = 200010 << 6;
static int ch[N + 10][2], tot, ans[N + 10];
static void maintain(int p) { ans[p] = ans[ch[p][0]] + ans[ch[p][1]]; }
static void insert(int x, int k, int &p, int l, int r) {
if (!p) p = ++tot;
if (l == r) return ans[p] += k, void();
int mid = (l + r) >> 1;
if (x <= mid)
insert(x, k, ch[p][0], l, mid);
else
insert(x, k, ch[p][1], mid + 1, r);
maintain(p);
}
static int merge(int p, int q, int l, int r) {
if (!p || !q) return p + q;
int z = ++tot;
if (l == r) return ans[z] = ans[p] + ans[q], z;
int mid = (l + r) >> 1;
ch[z][0] = merge(ch[p][0], ch[q][0], l, mid);
ch[z][1] = merge(ch[p][1], ch[q][1], mid + 1, r);
maintain(z);
return z;
}
static int query(int L, int R, int p, int l, int r) {
if (!p) return 0;
if (L <= l && r <= R) return ans[p];
int mid = (l + r) >> 1;
int ret = 0;
if (L <= mid) ret += query(L, R, ch[p][0], l, mid);
if (mid < R) ret += query(L, R, ch[p][1], mid + 1, r);
return ret;
}
int root = 0;
void insert(int x, int k) { insert(x, k, root, 0, T - 1); }
static segtree merge(segtree a, segtree b) {
return {merge(a.root, b.root, 0, T - 1)};
}
int query(int L, int R) { return query(L, R, root, 0, T - 1); }
int qall() { return query(0, T - 1, root, 0, T - 1); }
};
int segtree::ch[][2], segtree::tot, segtree::ans[];
int n, Q, K, col[200010];
vector<pair<int, int>> g[200010];
segtree t[200010][26];
int top[200010];
LL det[200010], f[26], w[26];
void dfs(int u, int fa, int topf) {
top[u] = topf;
t[u][col[u]].insert((det[u] - 1) % T, 1);
for (auto e : g[u]) {
int v = e.first, w = e.second;
if (v == fa) continue;
if (col[v] == col[u])
det[v] = det[u] + w, dfs(v, u, topf);
else
det[v] = w, dfs(v, u, u);
for (int j = 0; j < K; j++) t[u][j] = segtree::merge(t[u][j], t[v][j]);
}
}
原来以为是单点的,写的 dsu on tree。大家可以欣赏一下狗屎 shared_ptr
代码。其实线段树更好写更短。
struct dsuontree {
int me;
int buc[200010], tot, rsz[200010];
vector<pair<int, shared_ptr<int>>> qry[200010];
map<int, int> mp;
shared_ptr<int> ask(int u, int T) {
if (T >= 0) {
shared_ptr<int> ansp = make_shared<int>(-1);
if (!mp.count(T)) {
int t = mp.size();
mp[T] = t;
}
qry[u].emplace_back(mp[T], ansp);
return ansp;
} else {
return shared_ptr<int>(&rsz[u], [](int*) {});
}
}
void dfs(int u, int fa, int ban, int k) {
if (col[u] == me && det[u] >= 0)
buc[det[u]] += k, tot += k;
for (auto e : g[u]) {
int v = e.first;
if (v == fa || v == ban)
continue;
dfs(v, u, ban, k);
}
}
void solve(int u, int fa, bool keep) {
if (col[u] == me)
det[u] = mp.count(det[u] % T) ? mp[det[u] % T] : -1, rsz[u] = 1;
for (auto e : g[u]) {
int v = e.first;
if (v == fa || v == son[u])
continue;
solve(v, u, false);
rsz[u] += rsz[v];
}
if (son[u])
solve(son[u], u, true), rsz[u] += rsz[son[u]];
dfs(u, fa, son[u], 1);
for (auto q : qry[u]) *q.second = buc[q.first];
if (!keep)
dfs(u, fa, 0, -1);
}
} robot[26];
struct func {
map<int, LL> mp; // record delta
map<int, shared_ptr<int>> ques;
shared_ptr<int> all;
LL gen = 0;
void askall(int me, int u) {
for (auto e : mp) ques[e.first] = robot[me].ask(u, e.second);
all = robot[me].ask(u, -1);
}
LL answer() {
int gall = *all;
for (auto e : ques) gall -= *e.second;
if (gall)
return gen;
LL mn = 1e18;
for (auto e : ques) {
if (*e.second)
mn = min(mn, mp[e.first]);
}
return mn + gen;
}
};
2024 年 syzx 春季训练 2(20240331)
https://vjudge.net.cn/contest/617477
冲刺NOI2024联测2(20240330)
http://47.92.197.167:5283/contest/483
- [A 签到题] 构造,平面图三角剖分(的结构)
- [B 简单题] 构造,整除相关
- [C 模板题] 多项式,连通图计数
T1 原题。T3 是模板题,卡常卡过去了。如果题目问什么什么的奇数的情况,可以考虑求总数和偶数 - 奇数,这个技巧考虑一下。T2 打表瞪出来的,感觉正解也差不多?整除相关的可以注意一下因子
冲刺NOI2024专题1:构造&交互(20240331)
*https://vjudge.net.cn/contest/619645
冲刺NOI2024联测3(20240401)
- [A 恭喜你发现签到题(sequence)] 交互,子序列
- [B 过山车(roller)] 轮廓线 dp / 网络流
- [C 木棍(stick)] 差分约束、负环判定、hall 定理、线段树优化最短路
冲刺NOI2024联测4(20240402)
- [A 斩首] 分治优化 dp
- [B 抓扑满挑战 / ARC128F] 贪心,格路计数,组合推导
- [C 战争] 树上启发式合并
冲刺NOI2024专题2:dp(20240402)
https://vjudge.net.cn/contest/620019
冲刺NOI2024联测5(20240404)
- %A 铲雪 数据结构维护带
的式子,均摊分析 - [B 游戏] 根号分治(类似),线性递推,容斥 / 组合
- [C 海盗] 凸优化相关
%T1 可以重新写一次。
一个函数
冲刺NOI2024专题3:数论和组合数学(20240404)
*https://vjudge.net.cn/contest/620552
冲刺NOI2024联测6(20240405)
- [A star] 神秘构造,调整法
- [B rescue] 数据结构,根号重构
- [C text] Lyndon Word,生成函数计数(ln,莫反)
冲刺NOI2024联测7(20240406)
- [A 排列] 数论(exgcd,同余最短路)
- [B 数据删除] 博弈论,数据结构维护函数复合
- [C 不要恐慌] dp,数据结构优化,“格路”计数
冲刺NOI2024专题4:代数、多项式类(20240407)
*https://vjudge.net.cn/contest/621071
冲刺NOI2024联测8(20240408)
- [A 树(toptree)] 改变重链剖分的标号
- [B 考拉爆炸 (koalabomb) ] 概率与期望,对称,
容斥 - [C 次方数 (pow) ] 数论,(质)因数分解,神秘复杂度分析
冲刺NOI2024联测9(20240409)
- [A Limbo] 二分答案,期望 dp(带环,带 min),拆 min / 维护凸函数
- [B 集合] 线性基,贪心,凸包优化(强行找到答案点集的凸包,由平面上整点个数不超过
保证复杂度)。 - [C 比赛] 对抗 dp,dp 状态数分析和优化
高一高二恢复性杂题训练7(20240410)
http://becoder.com.cn/contest/5110
已全部完成。
高一高二恢复性杂题训练8(20240411)
http://becoder.com.cn/contest/5111
已全部完成。
多校国赛模拟赛1(20240412)
- [A 研究所] 裴蜀定理,整体二分,线段树维护单点修改和区间 gcd(的复杂度为单次
) - [B 游戏] 万能欧几里得
- [C sunset] 笛卡尔树上用李超线段树与闵可夫斯基和等凸技巧乱做
NOI2024容斥原理的简单应用「重庆八中刘洋」(20240413)
http://becoder.com.cn/contest/5119
- *AT_agc060_d [AGC060D] Same Descent Set
- *AT_arc156_e [ARC156E] Non-Adjacent Matching
- *AT_agc065_d [AGC065D] Not Intersect
多校NOI2024国赛模拟赛2 (20240415)
http://becoder.com.cn/contest/5125
完全没看。计划是不动它。
多校NOI2024国赛模拟赛3暨重庆市友谊赛(20240416)
- [A P8859 冒泡排序] 通过确定所计算的东西转化为对树计数,然后直接 dp。
- [B CF452F Permutation](上树)维护 hash 值判断回文。
- [C P9394 白鹭兰] “点双连通 耳分解 双极定向”
因为没有打,而且有可能三个题都看过(但是 T2 没想起来,T3 听的时候感冒不起 😦 ),所以没有分。
T2 的启发是:如果要多次比较两个字符串,可以考虑 hash 或者转化为回文串问题,将一些看上去不可做差卷积转化为简单形式。同时也要注意到 OI 中有很多算法能将不可做的问题转化为可做问题(……在说什么?例如最短路,不觉得能求出一个图的单源最短路是很炫酷的事情吗 qwq)
T3 就是科技题吧。这个的话就看看,也要复习。图的连通性其实还有很多没有学,一切都因为那天听 ix35 本人讲课的时候生病了。记得翻课件。有没有懂 20230804\sol2.pdf
的。
NOI2024字符串选讲1-ACAM、PAM、SA、SAM「广实黄建恒」(20240417)
http://becoder.com.cn/contest/5132
已全部完成。[AGC064C] Erase and Divide Game 是卡常的,atcoder 能过。
- *CF1393E2 Twilight and Ancient Scroll (harder version) 这个好像说不是基本字串结构题,挂在这里
NOI2024字符串选讲2-基本子串结构「广实黄建恒」 (20240417)
http://becoder.com.cn/contest/5133
资料:https://www.cnblogs.com/crashed/p/17382894.html 与 https://www.cnblogs.com/sizeof127/articles/17579027.html。
多校NOI2024国赛模拟赛4(20240419)
- [A Three]
从值域考虑的问题 - [B Robot] 差分
- C P5397 [Ynoi2018] 天降之物 根号分治 / 序列分块
NOI2024简单技巧杂题选讲「成外李枨夏」(20240420)
又名:树的遍历与背包问题
http://becoder.com.cn/contest/5136
因为今天要放假,所以不写。就是故意留了两个最难写的。
多校NOI2024国赛模拟赛5(20240422)
- [A 早八] 简单数据结构
- [B 派对] 性质题,题意是刻画
的排列;矩阵快速幂优化 dp - [C 间谍] 闵可夫斯基和;平面上凸多边形范围查询(也是查询多边形面积的方法:对每条边两个端点作垂线,改成无限长梯形(上下底平行
轴,一条腰是歪的,另一条腰在 负半轴方向无限远处)(上凸壳 - 下凸壳 = 答案),发现可以根据多边形的边的斜率分类作扫描线转化为二维数点)
多校NOI2024国赛模拟赛6(20240423)
- [A Lethe] 费用流建模
- [B P7811 [JRKSJ R2] 你的名字。] 根号分治,根号平衡
- [C Gift] Polya 原理,容斥
(假设
这是一个著名定理。
NOI2024简单杂题选讲「金华一中赵晟昊」(20240424)
又名:ACM 题目选讲
https://www.becoder.com.cn/contest/5154
https://www.becoder.com.cn/contest/5155
很困难,看着做。额怎么开始倒数了。
- *QOJ5445 [2022 ICPC 沈阳] Vulpecula 这个题扩展出去了 P5607
- *QOJ8047 [2023 ICPC EC Final] DFS Order 4
[QOJ5442]没讲的题P10222 [省选联考 2024] 最长待机没讲- P10219 [省选联考 2024] 虫洞 这个可以考虑学一下
该用户已在现实中的 4 月 26 日中午离开重庆市第八中学校(沙坪坝校区)。
本文来自博客园,作者:caijianhong,转载请注明原文链接:https://www.cnblogs.com/caijianhong/p/18104517/contests-in-202404
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架