acmer-coach 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/LICENSE +28 -0
  2. package/README.md +258 -0
  3. package/assets/extension/luogu/README.md +104 -0
  4. package/assets/extension/luogu/content.js +137 -0
  5. package/assets/extension/luogu/manifest.json +22 -0
  6. package/assets/knowledge/DEPENDS.yaml +391 -0
  7. package/assets/knowledge/LICENSE +41 -0
  8. package/assets/knowledge/MAP.yaml +2540 -0
  9. package/assets/knowledge/NODE_ENTRY.yaml +465 -0
  10. package/assets/knowledge/NODE_META.yaml +457 -0
  11. package/assets/knowledge/skilltree.html +1702 -0
  12. package/assets/oiwiki/LICENSE +49 -0
  13. package/assets/oiwiki/chunks.jsonl +2177 -0
  14. package/assets/oiwiki/node-pages.json +1208 -0
  15. package/assets/pool/LICENSE +83 -0
  16. package/assets/pool/problems.jsonl.gz +0 -0
  17. package/assets/rules/coach-rules.md +425 -0
  18. package/build-node-meta.mjs +98 -0
  19. package/coach/analyze_map.py +138 -0
  20. package/coach/build_map.py +230 -0
  21. package/coach/build_node_pages.py +105 -0
  22. package/coach/check_page_syntax.mjs +48 -0
  23. package/coach/coach-metrics.py +313 -0
  24. package/coach/export_oiwiki_chunks.py +100 -0
  25. package/coach/export_problem_pool.py +64 -0
  26. package/coach/extract_oiwiki.py +110 -0
  27. package/coach/oiwiki_tree.json +2987 -0
  28. package/coach/render_map.py +226 -0
  29. package/coach/render_skilltree.py +197 -0
  30. package/coach/serve_map.py +181 -0
  31. package/coach/skilltree_template.html +1702 -0
  32. package/coach/validate_map.py +184 -0
  33. package/coach/verify_drag.mjs +51 -0
  34. package/coach/verify_interact.mjs +82 -0
  35. package/coach/verify_serve.py +138 -0
  36. package/cordis.patch.yml +10 -0
  37. package/dev/parity-check.mjs +169 -0
  38. package/dev/run-all.sh +70 -0
  39. package/dev/setup-check.mjs +191 -0
  40. package/dev/w1-check.mjs +170 -0
  41. package/dev/wiki-check.mjs +100 -0
  42. package/dev.sh +142 -0
  43. package/docs//350/256/276/350/256/241/346/226/271/351/222/210.md +325 -0
  44. package/index.js +5820 -0
  45. package/lib/client.js +209 -0
  46. package/lib/setup.js +455 -0
  47. package/package.json +33 -0
  48. package/progress-cli.mjs +67 -0
  49. package/verify-shape.mjs +315 -0
  50. package/verify.mjs +3535 -0
@@ -0,0 +1,465 @@
1
+ # ══════════════════════════════════════════════════════════════
2
+ # NODE_ENTRY.yaml — 每个知识点的「入门段位」· **本文件由机器生成**
3
+ #
4
+ # ⚠️ 不要手改 —— 手改会在下次跑 build-node-meta.mjs 时被冲掉。
5
+ # 要改标注意见,改 NODE_META.yaml(那个是人维护的)。
6
+ #
7
+ # 生成方式:
8
+ # node ~/.dsh/profiles/web/node_modules/acmer-coach/build-node-meta.mjs
9
+ #
10
+ # 字段:
11
+ # entry 入门段位 = 该节点题池难度的 **p25**(不是中位数!)
12
+ # pool 题池大小(打这个标签的题有多少道)
13
+ # median 中位数,仅作对比参考 —— 它回答不了"什么时候学得起"
14
+ #
15
+ # 为什么是 p25:模拟这类贯穿型技能 800~3000 都有题,中位数只会说
16
+ # "跨度很大";而可持久化线段树这类里程碑型技巧题池很窄。p25 对两种
17
+ # 类型都给出"开始有意义的那个水平"。
18
+ #
19
+ # 只有 pool >= 8 的节点才给 entry —— 样本太小算出来的数会骗人,
20
+ # 宁可不给,让教练知道"这个点没有可信的难度数据"。
21
+ # ══════════════════════════════════════════════════════════════
22
+ meta:
23
+ source: training.db
24
+ nodes: 349
25
+ nodes:
26
+ RMQ:
27
+ entry: 1600
28
+ pool: 14
29
+ median: 2000
30
+ 动态 DP:
31
+ entry: 2600
32
+ pool: 28
33
+ median: 2600
34
+ 区间 DP:
35
+ entry: 1700
36
+ pool: 108
37
+ median: 2000
38
+ 数位 DP:
39
+ entry: 2000
40
+ pool: 96
41
+ median: 2000
42
+ 树形 DP:
43
+ entry: 1700
44
+ pool: 334
45
+ median: 2000
46
+ 状压 DP:
47
+ entry: 2000
48
+ pool: 251
49
+ median: 2000
50
+ 背包 DP:
51
+ entry: 1500
52
+ pool: 250
53
+ median: 1700
54
+ 记忆化搜索:
55
+ entry: 1600
56
+ pool: 209
57
+ median: 1700
58
+ 斜率优化:
59
+ entry: 2300
60
+ pool: 58
61
+ median: 2600
62
+ 2-SAT:
63
+ entry: 2300
64
+ pool: 25
65
+ median: 2600
66
+ LGV 引理:
67
+ entry: 2600
68
+ pool: 8
69
+ median: 3000
70
+ Prüfer 序列:
71
+ entry: 1700
72
+ pool: 15
73
+ median: 2600
74
+ 二分图:
75
+ entry: 1700
76
+ pool: 230
77
+ median: 2000
78
+ 差分约束:
79
+ entry: 1700
80
+ pool: 32
81
+ median: 2000
82
+ 平面图:
83
+ entry: 2600
84
+ pool: 15
85
+ median: 2600
86
+ 拓扑排序:
87
+ entry: 1600
88
+ pool: 221
89
+ median: 1700
90
+ 最短路:
91
+ entry: 1600
92
+ pool: 748
93
+ median: 1700
94
+ 矩阵树定理:
95
+ entry: 2600
96
+ pool: 18
97
+ median: 2600
98
+ 网络流:
99
+ entry: 2000
100
+ pool: 361
101
+ median: 2400
102
+ 图匹配:
103
+ entry: 1600
104
+ pool: 80
105
+ median: 2000
106
+ 最近公共祖先:
107
+ entry: 1700
108
+ pool: 265
109
+ median: 2000
110
+ 树上启发式合并:
111
+ entry: 2000
112
+ pool: 42
113
+ median: 2600
114
+ 树分治:
115
+ entry: 2000
116
+ pool: 25
117
+ median: 2400
118
+ 树的直径:
119
+ entry: 1700
120
+ pool: 46
121
+ median: 2000
122
+ 树的重心:
123
+ entry: 2000
124
+ pool: 14
125
+ median: 2600
126
+ 树链剖分:
127
+ entry: 2000
128
+ pool: 273
129
+ median: 2400
130
+ 虚树:
131
+ entry: 2600
132
+ pool: 47
133
+ median: 2600
134
+ 上下界网络流:
135
+ entry: 2600
136
+ pool: 13
137
+ median: 2600
138
+ 最小割:
139
+ entry: 2600
140
+ pool: 61
141
+ median: 2600
142
+ 费用流:
143
+ entry: 2000
144
+ pool: 111
145
+ median: 2600
146
+ 双连通分量:
147
+ entry: 2000
148
+ pool: 48
149
+ median: 2600
150
+ 圆方树:
151
+ entry: 2600
152
+ pool: 31
153
+ median: 2600
154
+ 强连通分量:
155
+ entry: 1700
156
+ pool: 71
157
+ median: 2000
158
+ AC 自动机:
159
+ entry: 2300
160
+ pool: 51
161
+ median: 2600
162
+ Manacher:
163
+ entry: 1600
164
+ pool: 21
165
+ median: 2400
166
+ 自动机:
167
+ entry: 2000
168
+ pool: 233
169
+ median: 2400
170
+ A*:
171
+ entry: 1700
172
+ pool: 22
173
+ median: 2000
174
+ IDA*:
175
+ entry: 2000
176
+ pool: 10
177
+ median: 2000
178
+ 优化:
179
+ entry: 1600
180
+ pool: 4599
181
+ median: 2000
182
+ 启发式搜索:
183
+ entry: 2000
184
+ pool: 8
185
+ median: 2000
186
+ 位运算:
187
+ entry: 1500
188
+ pool: 504
189
+ median: 1600
190
+ 博弈论:
191
+ entry: 1600
192
+ pool: 417
193
+ median: 1700
194
+ 快速幂:
195
+ entry: 1600
196
+ pool: 350
197
+ median: 1600
198
+ 数论:
199
+ entry: 1600
200
+ pool: 1130
201
+ median: 1700
202
+ 概率论:
203
+ entry: 2000
204
+ pool: 95
205
+ median: 2000
206
+ 线性代数:
207
+ entry: 1600
208
+ pool: 267
209
+ median: 2000
210
+ 线性规划:
211
+ entry: 2600
212
+ pool: 15
213
+ median: 2600
214
+ 组合数学:
215
+ entry: 1600
216
+ pool: 1021
217
+ median: 2000
218
+ 群论:
219
+ entry: 2600
220
+ pool: 17
221
+ median: 2600
222
+ 快速傅里叶变换:
223
+ entry: 2400
224
+ pool: 196
225
+ median: 2600
226
+ 快速数论变换:
227
+ entry: 2400
228
+ pool: 215
229
+ median: 2600
230
+ 快速沃尔什变换:
231
+ entry: 2400
232
+ pool: 116
233
+ median: 2400
234
+ 拉格朗日插值:
235
+ entry: 2400
236
+ pool: 10
237
+ median: 2400
238
+ 高斯消元:
239
+ entry: 2000
240
+ pool: 107
241
+ median: 2400
242
+ 中国剩余定理:
243
+ entry: 1600
244
+ pool: 14
245
+ median: 2400
246
+ 二次剩余:
247
+ entry: 2600
248
+ pool: 8
249
+ median: 2600
250
+ 剩余:
251
+ entry: 2000
252
+ pool: 57
253
+ median: 2400
254
+ 卢卡斯定理:
255
+ entry: 2000
256
+ pool: 13
257
+ median: 2400
258
+ 原根:
259
+ entry: 2600
260
+ pool: 13
261
+ median: 2600
262
+ 最大公约数:
263
+ entry: 1500
264
+ pool: 114
265
+ median: 2000
266
+ 杜教筛:
267
+ entry: 2600
268
+ pool: 17
269
+ median: 2600
270
+ 欧拉函数:
271
+ entry: 1700
272
+ pool: 70
273
+ median: 2000
274
+ 筛法:
275
+ entry: 1600
276
+ pool: 116
277
+ median: 1600
278
+ 素数:
279
+ entry: 1500
280
+ pool: 224
281
+ median: 1700
282
+ 莫比乌斯反演:
283
+ entry: 2000
284
+ pool: 131
285
+ median: 2400
286
+ 向量:
287
+ entry: 2000
288
+ pool: 31
289
+ median: 2600
290
+ 矩阵:
291
+ entry: 1700
292
+ pool: 333
293
+ median: 2000
294
+ 线性基:
295
+ entry: 2000
296
+ pool: 79
297
+ median: 2400
298
+ 行列式:
299
+ entry: 2600
300
+ pool: 9
301
+ median: 2600
302
+ 卡特兰数:
303
+ entry: 1600
304
+ pool: 13
305
+ median: 1600
306
+ 容斥原理:
307
+ entry: 2000
308
+ pool: 224
309
+ median: 2600
310
+ 康托展开:
311
+ entry: 1700
312
+ pool: 8
313
+ median: 1700
314
+ 排列组合:
315
+ entry: 1600
316
+ pool: 249
317
+ median: 2000
318
+ 斯特林数:
319
+ entry: 2400
320
+ pool: 9
321
+ median: 2400
322
+ 置换群:
323
+ entry: 2400
324
+ pool: 13
325
+ median: 2400
326
+ K-D Tree:
327
+ entry: 2600
328
+ pool: 23
329
+ median: 2600
330
+ ST 表:
331
+ entry: 1700
332
+ pool: 126
333
+ median: 2000
334
+ 动态树:
335
+ entry: 2400
336
+ pool: 113
337
+ median: 2600
338
+ 单调栈:
339
+ entry: 1700
340
+ pool: 133
341
+ median: 2000
342
+ 单调队列:
343
+ entry: 1700
344
+ pool: 147
345
+ median: 1700
346
+ 可持久化数据结构:
347
+ entry: 2000
348
+ pool: 36
349
+ median: 2400
350
+ 哈希表:
351
+ entry: 1500
352
+ pool: 23
353
+ median: 1700
354
+ 堆:
355
+ entry: 1500
356
+ pool: 126
357
+ median: 1700
358
+ 并查集:
359
+ entry: 1600
360
+ pool: 640
361
+ median: 1700
362
+ 李超线段树:
363
+ entry: 2600
364
+ pool: 38
365
+ median: 2600
366
+ 栈:
367
+ entry: 1500
368
+ pool: 290
369
+ median: 1700
370
+ 树套树:
371
+ entry: 2300
372
+ pool: 46
373
+ median: 2600
374
+ 树状数组:
375
+ entry: 1700
376
+ pool: 667
377
+ median: 2000
378
+ 线段树:
379
+ entry: 2000
380
+ pool: 1563
381
+ median: 2300
382
+ 链表:
383
+ entry: 1500
384
+ pool: 76
385
+ median: 1700
386
+ 队列:
387
+ entry: 1500
388
+ pool: 290
389
+ median: 1600
390
+ 笛卡尔树:
391
+ entry: 2000
392
+ pool: 44
393
+ median: 2300
394
+ 可持久化线段树:
395
+ entry: 2000
396
+ pool: 140
397
+ median: 2600
398
+ 分数规划:
399
+ entry: 2000
400
+ pool: 28
401
+ median: 2000
402
+ 双指针:
403
+ entry: 1200
404
+ pool: 11
405
+ median: 1200
406
+ 离散化:
407
+ entry: 1600
408
+ pool: 277
409
+ median: 2000
410
+ 随机化:
411
+ entry: 2000
412
+ pool: 98
413
+ median: 2600
414
+ 整体二分:
415
+ entry: 2300
416
+ pool: 44
417
+ median: 2600
418
+ 模拟退火:
419
+ entry: 2000
420
+ pool: 40
421
+ median: 2600
422
+ 二分:
423
+ entry: 1600
424
+ pool: 1470
425
+ median: 1700
426
+ 倍增:
427
+ entry: 2000
428
+ pool: 285
429
+ median: 2300
430
+ 排序:
431
+ entry: 1200
432
+ pool: 1160
433
+ median: 1500
434
+ 构造:
435
+ entry: 1500
436
+ pool: 972
437
+ median: 1700
438
+ 枚举:
439
+ entry: 1200
440
+ pool: 2952
441
+ median: 1600
442
+ 模拟:
443
+ entry: 800
444
+ pool: 2791
445
+ median: 1300
446
+ 贪心:
447
+ entry: 1300
448
+ pool: 2852
449
+ median: 1600
450
+ 凸包:
451
+ entry: 2000
452
+ pool: 152
453
+ median: 2600
454
+ 半平面交:
455
+ entry: 2400
456
+ pool: 27
457
+ median: 2400
458
+ 扫描线:
459
+ entry: 2000
460
+ pool: 264
461
+ median: 2400
462
+ 旋转卡壳:
463
+ entry: 2600
464
+ pool: 11
465
+ median: 2600