Xcraft 嵌入洛谷开源项目 Markdown*Palettes。
以下是测试用例。
一级标题
二级标题
三级标题
四级标题
五级标题
六级标题
正文字体
斜体文本,粗体文本,粗斜体文本
分割线
删除线
无序列表
- 第一项
- 第二项
- 第三项
另一种无序列表
- 1
- 2
- 3
无序列表嵌套
- 第2篇
- 第2.1章
- 第2.1.1节
- 第2.1章
有序列表
- 第一项
- 第二项
- 第三项
另一种有序列表
-
111
-
111
-
111
有序列表和无序列表嵌套
- 第一项:
- 第一项嵌套的第一个元素
- 第一项嵌套的第二个元素
- 第二项:
- 第二项嵌套的第一个元素
- 第二项嵌套的第二个元素
区块
> 123
>
> ### 标题
>
> 代码
>
> cpp
> int main()
> {
> int a, b;
> cin >> a >> b;
> cout << a + b;
> return 0;
> }
>
| 左对齐 | 右对齐 | 居中对齐 |
|---|---|---|
| 单元格 11111111 | 单元格 11111111 | 单元格 11111111 |
| 单元格 | 单元格 | 单元格 |
公式
$$ \mathbf{V}_1 \times \mathbf{V}_2 = \begin{vmatrix} \mathbf{i} & \mathbf{j} & \mathbf{k} \\\\ \frac{\partial X}{\partial u} & \frac{\partial Y}{\partial u} & 0 \\\\ \frac{\partial X}{\partial v} & \frac{\partial Y}{\partial v} & 0 \\ \end{vmatrix} $$
$$ 1+1= 2 \\ 1+2=3 \\ 1 + 3 = 4 \\ 123123123 $$
我们惊人地发现了一个重要的科学秘密,这对全世界人类都非常重要,这就是——$1+1=2$。
∮MATH5∮1+1=2∮MATH6∮(document).ready(function () {
alert('RUNOOB');
});
\`\`\`
长代码段
\`\`\`cpp
#include <bits/stdc++.h>
#define px2 (p << 1)
#define px2add (p << 1 | 1)
#define tp t[p]
#define tpx2 t[px2]
#define tpx2add t[px2add]
#define middle(l, r) int mid = (l + r) >> 1
using namespace std;
const int LEN = 5e4 + 5;
int n, m;
struct kkk
{
int v, l0 = 0, r0 = 0, len = 0, pl, pr, tag = -1, maxl = 0;
} t[4 * LEN];
// v 表示当前区间最大连续 1 的长度
// l0、r0 表示左边/右边连续的 0(即空房)的个数
// pl、pr 表示区间左、右端点
// tag 为标记,0 表示区间退房,1 表示区间住房
// maxl 为当前区间最大连续 1 那一段的左端点
int debug()
{
cout << "== debug ==\n";
printf(" p v pl pr l0 r0 tg ml le\n");
for (int i = 1; i <= /*253*/ 11; i++)
if (t[i].len != 0)
printf("%3d %3d %3d %3d %3d %3d %3d %3d %3d\n",
i, t[i].v, t[i].pl, t[i].pr, t[i].l0, t[i].r0, t[i].tag, t[i].maxl, t[i].len);
cout << "\n";
return 0;
}
int vs_max(int p, int vs, int left) // 比较猎奇的更新当前节点的 v 和 maxl 的实现
{
if (tp.v < vs)
{
tp.v = vs;
tp.maxl = left;
}
return 0;
}
int push_up(int p)
{
tp.len = tpx2.len + tpx2add.len;
tp.l0 = (tpx2.l0 == tpx2.len) ? tpx2.l0 + tpx2add.l0 : tpx2.l0;
tp.r0 = (tpx2add.r0 == tpx2add.len) ? tpx2add.r0 + tpx2.r0 : tpx2add.r0;
tp.v = 0;
vs_max(p, tpx2add.v, tpx2add.maxl);
vs_max(p, tpx2.r0 + tpx2add.l0, tpx2.pr - tpx2.r0 + 1);
vs_max(p, tpx2.v, tpx2.maxl);
return 0;
}
int build(int p, int l, int r)
{
tp.pl = l;
tp.pr = r;
if (l == r)
{
tp.len = 1;
tp.l0 = 1;
tp.r0 = 1;
tp.v = 1;
tp.maxl = l;
}
else
{
middle(l, r);
build(px2, l, mid);
build(px2add, mid + 1, r);
push_up(p);
}
return 0;
}
int add_tag(int p, int op)
{
if (op == 1) // 区间住房
{
tp.l0 = 0;
tp.r0 = 0;
tp.v = 0;
tp.tag = 1;
}
else // 区间退房
{
tp.l0 = tp.len;
tp.r0 = tp.len;
tp.v = tp.len;
tp.maxl = tp.pl;
tp.tag = 0;
}
return 0;
}
int push_down(int p)
{
if (tp.tag != -1)
{
add_tag(px2, tp.tag);
add_tag(px2add, tp.tag);
tp.tag = -1;
}
return 0;
}
int update(int p, int l, int r, int op)
{
if (l <= tp.pl && tp.pr <= r)
add_tag(p, op);
else
{
middle(tp.pl, tp.pr);
push_down(p);
if (l <= mid)
update(px2, l, r, op);
if (r > mid)
update(px2add, l, r, op);
push_up(p);
}
return 0;
}
int query(int p, int m)
{
if (tp.v < m)
return 0;
else if (tp.pl == tp.pr)
return tp.pl;
push_down(p);
if (tpx2.v >= m)
return query(px2, m);
else if (tpx2.r0 + tpx2add.l0 >= m)
return tpx2.pr - tpx2.r0 + 1;
else
return query(px2add, m);
}
int main()
{
// freopen("p2894.out", "w", stdout);
// ios::sync_with_stdio(false);
// cin.tie(0);
cin >> n >> m;
build(1, 1, n);
while (m--)
{
int op, x, y;
cin >> op;
if (op == 1)
{
cin >> x;
int ans = query(1, x);
if (ans != 0)
{
cout << ans << "\n";
update(1, ans, ans + x - 1, 1);
}
else
cout << 0 << "\n";
}
else
{
cin >> x >> y;
update(1, x, x + y - 1, 0);
}
// debug();
}
return 0;
}
\`\`\`
图片
