〔水〕2022.8.25 闲话

NOI 啊 .

Euphoria

网易云音乐


その日、眺めていた校庭は
那一天,眺望过的校园中

薄く青い空が染みていて
染上了淡淡的天蓝色

不意にガランとした教室に
不经意间变得空旷的教室中

君はもう、いなかった
你已经,不在了

昨日読めなかった小説の
昨天没有看的小说中

消えない夢を見ていた少年は
做着不会消失的梦的少年

赤く光る星を追っていた
追逐着赤红闪耀的星辰

それの一つになりたかった
想要变成其中的一颗

強く願えば願うほど
当迫切地祈愿的时候

もどかしい言葉が、喉を伝う
焦急的言语 经过了喉咙

最終の電車の窓に映り込む
映照于末班电车的窗户上

自分は、誰に見える?
自己,会看到谁?

あぁ、青春の在り処も
啊,因为青春的所在

幸福のルールも見つかってないから
和幸福的规则都没有找到

泥に塗れたって
就算全身沾满了泥土

足が縺れたって
就算脚步也被死死拖住

探しているんだろう
也会在寻找着

探していくんだろう
也在寻找着吧?

あぁ、少年の僕らよ
啊,少年的我们

情熱の日々も、約束もまた
如果热情的日子和约定也

消えてしまうなら
消逝的话

過ぎ去ってしまうなら
变成过去的话

ここに残そう
就设法留下痕迹吧

同じ世界に、立っていたんだと
在同一个世界伫立着

道の向こうには、自分がいて
在道路的另一侧的自己

あどけない笑顔で呼んでいる
以天真无邪的笑脸呼唤着

きっと、先にたどり着いたんだ
一定,比我先到达了

消えないうちに、行かなくちゃ
要在消失之前赶到啊

傷が痛めば、痛むほど
伤痕越是隐隐作痛之时

進むべき指針が強く浮かぶ、始まりの合図に鼓動が高鳴る
理应前进的指针强烈地浮现在眼前,在开始的信号中心跳加速

変わらない、いつもの音で
用未曾改变的声音

あぁ、青春の在り処も
啊,青春的所在

本当のゴールも、まだ先にあるから
和真正的终点还在前面呢

きっと大人たちも
大人们一定也是

幼い子供みたいに
像幼小的孩子那般

続けているんだろう
持续下去吧

続けていくんだろう
持续下去吧

あぁ、少年の僕らよ
啊,少年的我们

戦いの日々は、ずっとこれから
战斗的日子,会从现在开始持续下去

瞳の奥で、心の側で
一定会在眼眸的深处,在心的旁边

きっと輝く
闪耀着

君はもう 気付いているんだろう
你也已经注意到了吧

不安と、消えない恐怖を引き連れて
带着不安与仍未消失的恐怖

飛べないまま、羽ばたくんだ
仍然举步维艰,但再次试着起飞了

自然と、その場所が理由になるって
自然地,那个地方也成为了理由

誰よりも、期待している
比谁都要期待着

あぁ、少年の僕らよ
啊,少年的我们

心の中に、戸惑いがあるなら
如果心中仍有着疑惑

きっとそれ自体が
但是它本身也会

きっとこの世界で
成为在这个世界的

一番綺麗で、眩しい想いだろ
最漂亮的,最炫目的思绪吧

あぁ、青春の在り処の
啊,青春的所在的

その一ページのその先でまた
那一页的先端

君は笑顔で、泣きそうな声で
你仍然在那里笑着,却用泫然欲泣的声音

そっと呟く
小声说道

「同じ世界に、立っていたんだ」と
“在同一个世界 站起来了”

「同じ未来に、立っているんだ」と
“也会站在同一个未来”

以后闲话看我心情更 .

爆搜

如果是计数类问题就可以考虑记忆化搜索 .

如果是最优化问题可以考虑卡时、退火啥的 .

卡时

卡时为什么在最前面呢?

因为一切最优化问题都可以卡时做 .

我们的 clock() 函数可以返回当前程序运行的秒数乘上 CLOCKS_PER_SECCLOCKS_PER_SEC 这个东西可能随编译器 & 系统会有变化 .

于是我们可以通过 clock() / CLOCKS_PER_SEC 获取当前程序运行的秒数 .

于是我们可以整一个超时就退出的东西,类似

if (1.0 * clock()/CLOCKS_PER_SEC > MAX_TIME){OutputAns(); exit(0)};

或者

while ((double)clock()/CLOCKS_PER_SEC < MAX_TIME) brute();

DFS / BFS

最平凡朴素的搜索算法 .

属于语言基础内容,没啥好优化的 .

可以考虑剪枝或者 BFS -> DFS 云云 .

A*

设计一个估价函数,按估价函数 DFS .

有些情况下会优化很多 .

典例:\(k\) 短路 .

模拟退火(SA)

如果函数单峰你还退啥火啊,直接三分不完了吗 .

考虑随便一个答案函数 .

大概就是每次在状态周围找一个状态,如果更优直接要,否则一定概率要 .

我们整一个估价函数 \(f(X)\) 计算一个局面的能量 .

我们在状态周围找的范围需要不断缩小,设初始温度 \(T_0\),降温系数 \(d\),终止温度 \(T_k\) .

大概需要 \(T_k\) 是一个非常小的正数,\(T_0\) 是一个非常大的数,\(d\) 是一个非常接近 \(1\) 的数 .

然后温度 \(T\) 初始等于 \(T_0\),每次 \(T\gets d\cdot T\),然后当 \(T<T_k\) 时结束 .

这个其实类似爬山法的过程 .

生成状态与算能量的做法依题而定 .

然后按啥概率要状态呢?听说叫 Metropolis 算法 .

算出目前状态 \(X\) 与新状态 \(X'\) 的能量差 \(\Delta E=f(X)-f(X')\)(注意此时必须有 \(\Delta\ge 0\),要不然你直接要就完了)

然后我们要的概率就是

\[\boxed{P=\exp\left(\dfrac{-\Delta E}{T}\right)} \]

这就是模拟退火 .

实际用的时候可以做一些优化,例如:

  • 取所有找到过的解的最优值 .
  • 在最终解旁边扰动看看有没有更优解 .
  • 分块模拟退火(答案函数峰很多、震荡很大的情况用)
  • 跑很多次退火 .
  • 卡时退火 .
  • 玄学调参 .

这方面比较玄学了 .

典中典图片:

打表

比如你写了一个解法,然后其中需要一个神秘函数 \(f\),你本机能跑出来但是不能在规定时限内跑出来,此时可以考虑打表 .

但是打表需谨慎,要是打了几个小时表打出来发现代码长度过长交不上去就 GG 了 .

直接打表

把你得到的数据直接丢到数组里就完了 .

数据压缩

如果每个数都比较小可以压到一起 .

如果值域贼小可以考虑时间换空间换一个比较小的进制 .

数据压缩这方面比较高,我自然是不会的 .

分块打表

如果你求的东西形如一个前缀和,可以考虑分块打表 .

大概就是整体数据范围为 \(N\),块长为 \(B\),那么每 \(\left\lfloor\dfrac NB\right\rfloor\) 个数据存一下前缀和,算出所在块然后暴力 \(O(B)\) 算散块贡献即可 .

注意打表的复杂度是 \(O(N)\) .

交互

交互怎么做呢

You should learn binary-search.

Hack 交互库

这是不正当手段 .

暴力

空循环跑两亿,炸掉你的交互库

ILE, ILE, ILE

决策树与信息熵

WC2022 猜词

题答

题答怎么做呢?

手玩

内容和标题简直一模一样 .

手玩 .

posted @ 2022-08-25 21:19  Jijidawang  阅读(91)  评论(0编辑  收藏  举报
😅​