日记 2023.9.22:2023 syzx 秋季训练 2

hydro hack 添加方法:

  1. 添加一个空的 subtask,依赖 subtask 1,分数可以调成 10,subtask 1 分数调成 90。
  2. 上传 validator.cpp。
  3. 上传 checker.cpp,不能依赖 .ans,其实是个 std。
  4. 调整评测方式为 testlib,配置加上 validator: validator.cpp 这一行。
  5. 点开 AC 提交就可以 hack 了。
  6. .cc 是 c++ 文件的一种格式。

https://vjudge.net/contest/582648

A

\(n>100\) 说明某个最高位出现了三次以上,这叫鸽巢原理,如果有的话将后面两个异或掉完成操作。

否则怎么暴力怎么来。

B

若所有 \(c_i\) 为正,按降序做,有负数要先做正数。然后一直做直到前缀和变成负数,压缩成一个数。现在就是有 \(m\) 个数,然后要分成 \(k+1\) 组,要求每一组里面绝对值升序,而且高度尽可能小,就是尽可能高度平均。考虑有两个桶 \(A,B\) 使得 \(|A|-|B|\geq 2\),可以将 \(A\) 桶底的元素放到 \(B\) 桶底,这样贡献(的绝对值)只会更小。

C

答案长度要么是 \(L\in\{|y|,|k|\}*\{0,+1,+2\}\),要么是 \(L=|y|\),前者直接暴力检查。后者枚举是哪一位升变,然后能知道他是否能成为答案。特判 \(x=y\),用方程组解出 \(c_0,c_1\)

D

每段区间取出的要么是空要么是后缀。动态规划之,枚举前面有没有交,然后用数据结构优化。

E

skipped(扫描线)

F

由于状物结果是三角形,我们旋转 45 度!

考虑一个点,记录它左上角‘、右上角、正上方对它的影响。对于 \((i,j)\),发现他这些影响和 \((i-1,j-1),(i-1,j+1),(i-1,j)\) 关系密切(这是因为在旋转 45 度意义下这些点与它同行、同列、同主对角线)。可以直接转移影响,以后即可决定是否翻转。

G

旋转 45 度!!!

\((x,y)\to(x'=x+y,y'=x-y)\)(曼哈顿转切比雪夫)

然后变成“窗口的星星”


前方高能。


H

\((x,y)\to(x+y,x-y)\)

我们应该是将向左走转化为在两条垂直对角线上各走一步,然后值考虑一条斜线。则斜线循环后的长度为 \(n\) 或者什么东西(\(2n+4\) 云云)。这样边界就明晰了。所以 \(n\neq m\) 很可能不可做,因为斜线长度不定了。

I

这个东西具有对称性,因为可以拆成很多个位移拼起来以证明对称,所以 \(n/2\)\((n+1)/2\) 的答案一样。

J

固定了一个数字之后,希望它的因数选的尽量大,倍数选的尽量小,然后同一组必然连续(否则中间的可以用两边拼起来),所以考虑上限应该是因数说的,下限应该是倍数说的。

K

你应该考虑的是,假如已经知道最终排列,你用最终排列给原序列重新标号,这样使你的终局状态变成有序序列。然后考虑怎么交换能使交换次数最优?如果是有交不包含的,逆序对个数算出来一个是 \(1\) 一个是 \(3\),肯定选 \(1\) 那个;如果没有交的,别动它最优;包含的,逆序对个数无论什么顺序都是一样的,所以随意了。

posted @ 2023-11-06 18:29  caijianhong  阅读(27)  评论(0编辑  收藏  举报