AFAIK

Valar Morghulis

听说今年这两道题比较简单,我就来蹭蹭热度了。 P1 是一个不太难的题,但是我很可能把它想复杂了;P5 是一个非常巧妙的 brainteaser 。

P1

求所有实数 \(\alpha\) 满足:对任意正整数 \(n\),整数 \(\sum\limits_{i=1}^n \lfloor i \alpha \rfloor\) 均为 \(n\) 的倍数。

解答

\(S\) 表示所有满足要求的 \(\alpha\) 构成的集合。先来个小观察:如果 \(\alpha \in S\),那么 \(2 + \alpha \in S\):对于任何 \(n \in \mathbb{N}^+\),有 \[\sum_{i=1}^n \lfloor i (\alpha + 2) \rfloor = \sum_{i=1}^n \left( \lfloor i \alpha \rfloor + 2i \right) = \sum_{i=1}^n \lfloor i \alpha \rfloor + n (n + 1)\]

于是我们就只需要研究 \([0, 2)\) 里的 \(\alpha\) 即可。

  1. 显然有 \(0 \in S\);
  2. 如果 \(0 < \alpha < 1\),考虑 \(n = \lceil \alpha^{-1} \rceil \geq 2\),有 \(\sum\limits_{i=1}^n \lfloor i \alpha \rfloor = 1\),明显不满足要求;
  3. 显然有 \(1 \not\in S\):令 \(n = 2\) 即可。
  4. 如果 \(1 < \alpha < 2\):
    1. 如果 \(\alpha \not\in \mathbb{Q}\),对于任何 \(n \in \mathbb{N}^+\)\(\sum\limits_{i=1}^n \lfloor i (2 - \alpha) \rfloor = \sum\limits_{i=1}^n (2i - 1 - \lfloor i \alpha \rfloor)\) ,故 \(2-\alpha \in S\),又有 \(0 < 2 - \alpha < 1\),矛盾。
    2. 如果 \(\alpha \in \mathbb{Q}\),不妨令 \(\alpha = p / q\)\(gcd(p, q) = 1, q > 1\)。有 \[\sum_{i=1}^{q-1} \left\lfloor i \frac{p}{q} \right \rfloor = \frac{1}{2} \sum_{i=1}^{q-1} \left( \left\lfloor i \frac{p}{q} \right \rfloor + \left\lfloor (q - i) \frac{p}{q} \right \rfloor \right) = \frac{p - 1}{2} (q - 1) \equiv 0 \pmod {q - 1}. \] 可知 \(p\) 为奇数。又考虑 \[\sum_{i=1}^q \left\lfloor i \frac{p}{q} \right \rfloor = p + \frac{1}{2} \sum_{i=1}^q \left\lfloor i \frac{p}{q} \right \rfloor = p + \frac{p - 1}{2} (q - 1) \equiv 0 \pmod{q}. \] 可得 \[\frac{p + 1}{2} \equiv 0 \pmod{q},\] 而这是不可能的,因为 \(0 < \frac{p + 1}{2} < q\).

综上所述,\([0, 2) \cap S = \{0\}\),故 \(S = \{2k: k \in \mathbb{Z}\}\).

(这个对 \(\alpha \in \mathbb{Q}\) 的讨论好丑好想优化掉……)

P5

憨豆特工在一个 2024 行 2023 列的方格表上做游戏。方格表中恰有 2022 个方格各藏有一个坏人。初始时,憨豆不知道坏人的位置,但是他知道除了第一行和最后一行之外,每行恰有一个坏人,且每列至多有一个坏人。

憨豆想从第一行移动到最后一行,并进行若干轮尝试. 在每一轮尝试中,憨豆可以在第一行中任意选取一个方格出发并不断移动,他每次可以移动到与当前所在方格有公共边的方格内。(他允许移动到之前已经到达过的方格。)若憨豆移动到一个有坏人的方格,则此轮尝试结束,并且他被传送回第一行开始新的一轮尝试。坏人在整个游戏过程中不移动,并且憨豆可以记住每个他经过的方格内是否有坏人。若憨豆到达最后一行的任意一个方格,则游戏结束。

求最小的正整数 \(n\),使得不论坏人的位置如何分布,憨豆总有策略可以确保他能够经过不超过 \(n\) 轮尝试到达最后一行。

解答

以下给出一个 \(n = 3\) 的构造。所有的图里蓝色为坏人,黄色表示可行路径。

我们先确定第二行的坏人在哪里。这一步直接扫就好了。有两种情况:

  1. Case 1:坏人不在第一列或最后一列。如图所示,A 点和 B 点同行,所以至多有一个坏人。不妨设 B 点没坏人,按照黄色路径走即可。 Case 1
  2. Case 2:坏人在第一列或最后一列。不妨设坏人在第一列,那我们便从上到下依次遍历下图的所有绿色方块,遇到第一个坏人就停止。 Case 2
    1. Case 2-1:我们没有找到任何一个坏人,那么我们可以直接走最后一列即可;
    2. Case 2-2:我们找到了一个坏人,那么按照下面的黄色路径走即可: Case 2-2 A 点左上方的点没有坏人是因为 A 点是我们从上往下扫找到的第一个坏人。

至于 \(n\) 为啥不能小于 3:我们就考虑一个 adversarial 的放坏人的方式,

  • 第一次探索时我把坏人放在你探索的第一个方块上(在第二行);
  • 第二次探索时我把坏人放在你探索的第一个位于第三行的方块上,这个方块一定和我第一次放坏人的方块不在同一列上,因为你只能从第二行的非坏人方格到第三行。

又是一年 SIGYAO30。今年 SIGYAO30 在 Chicago,一来是因为之前美东美西都举办过 SIGYAO30 了,二来去年商定举办地点的时候,刚好 Chicago 有三个人,于是我们就决定放在 Chicago 了。事实上,我对芝加哥 downtown 印象挺好的,现代的城市,干净的街道,便捷的生活,低廉的物价,丰富的娱乐,多样的美食,就是冬天有点冷,南边不安全……

七年前才毕业,到现在居然已经毕业七年了。上次在芝加哥还是上次。半年不见,如隔六月。这次来芝加哥体验了好多游客项目,我在芝加哥住了一年半,但凡我稍微出门逛逛,也不至于一点也没逛。

Read more »

这是一道来自王格斯的妙题,有一个 10s 内能说出来的解法。

一个能被 25 个半径为 1 的大圆覆盖的长方形一定能被 100 个直径为 1 的小圆覆盖吗?

Read more »

一想到上一次回国还是疫情前,我心里就直痒痒。疫情期间回国特别麻烦,严格的防疫政策,上天的机票价格,一个个让我知难而退。本想着能不能拿 combo 卡回国,结果被 EB1 突然的排期打了个措手不及。F-1 虽然还没过期,但是交了 140 了,怕是不能用了。幸亏我运气好了一次,抽上了 H1b,这才让我有机会回国喘息一下。去年年底想回国,但是由于刚开始工作不久,假也不多,就此作罢。今年本来想浩浩荡荡把整个 12 月休掉,一来我 check 一般就是这么久,二来加上去年 rollover 的假刚好有这么多,但是由于种种原因,可能更好的选择是拆成两个半个月的假,那么我就九月底先休一次了。我这种长期被 check 体质的人要去办签证了,还是得和老板说一声。今年老板龙颜大悦,直接准了。

规划回国的第一件事,也是最重要的一件事就是约美国签证。我犹豫了好久,到底是在 HK 签好还是国内签好,最后还是决定去 HK。一来我对国内的美领馆的工作人员态度印象不佳,二来感觉国内会很严,但这可能只是我的错觉,可能对于敏感专业的中国人来说,哪里都很严……三来还有一件特别 subtle 的事:我被 check 后只能去 HK 工作,而在我的计划中,我是用护照 + GEP 去 HK,这带来的问题就是,我贴签那几天必须在领馆所在地。如果我在国内签,那么那几天我就只能在国内,没法工作了……理论上是有一些方法去搞定这个这个问题,但是都挺麻烦的……

第二件事,我得有一个合法的身份能在 HK 工作。这里有两种方法,第一种方法是搞一个香港高才,但是准备材料的时候我就直接怂了,还得要我档案所在单位出示一份文件,我连我档案在哪里都记不太清楚了,而且这是和港安通行证挂钩的,我港澳通行证早就过期了,我假期就两周,还不一定能办的下港澳通行证 + 逗留签注,办不下来就 gg 了。第二种是搞一个 HK 签证,用 General Employment Policy(GEP),之后往来 HK 和内地也是用护照。但是 GEP 要求居住在海外的中国公民,还得要我最近一年的出入境记录……说起来我还得在香港办一个居民身份证,但是这怎么这么难约啊?我在芝加哥下午三点钟到它网站上约,它居然让我排!一!个!小!时!的!队!来!预!约!这可是凌晨四点钟的香港啊!(你见过凌晨四点钟的香港的?黄牛:怎么了?)排完队我我更加震惊,我八月份去预约办一个香港身份证,居然只能约到十二月了!为啥十二月还有一个 slot?因为这是刚刚放出来的……昨天放出来的 slot 全部都没了……香港人民这么热爱办居民身份证吗……

第三件事,我得遵守公司的 travel policy。具体是啥我就懒得写了,也挺麻烦的,还得找一堆人签字审批,谁叫国内是 High Risk Country 呢 →_→ 我问能不能去上海,答曰不行。能去上海就太舒服了。

第四件事,就是好好计划假期了!好久没回国了,有太多的人要见,饭局一个接一个,两个星期的假其实不够的,可能只能将将把人见完……

Read more »

之前一直想重拾折纸,但是我一直拖……一个原因是我我觉得我的纸不行。之前 折小狗 的时候折着折着纸就破了。研究之后发现纸是有学问的,甚至还有人做了 评测。那这就好办了,是时候展现我的钞能力了!于是我前一段时间买了些纸,包括 Elephant Hide 和 Tant。

这次折的风格和之前不一样了,属于 Tessellation,教程取自 B 站被阿婆。这东西好看是好看,就是打线要打一年,上来就是一个 32x32 的网格 + 32x32 的对角线……不过由于这个动作不需要思考,我就一边看 Netflix 版三体一边打线了。而且,由于几乎所有的 tessellation 都是类似的网格,我甚至可以把一个折好的拆了去折另一个 23333

我第一次用的 Elephant Hide 15x15cm,结果就是中间的方块间隙太大,而且也不方。我又拿 Tant 20x20cm 试了一下,发现效果拔群,我有点不解,按道理不应该是 EH 更好折 Tessellation 吗?我不信邪,想着我第一次可能是没有经验,再次用 EH 折了一次,结果和第一次差不多,中间的方块不太能看……我也不知道是我技术不行,还是 EH 太小了,还是 EH 太厚了?后来反思,我觉得打线打到 16x16 的时候还没啥问题,但是最后的那个横竖 32x32 打线我明显能看出好些地方不太均匀,我甚至能感觉纸的曲率都变了……论非欧几何在折纸中的应用???不过不得不说,这两种纸都挺耐折的,要我之前的纸怕是早就破了。手感上 EH 更厚实,Tant 比较软。

最后就放几张图吧……从左到右分别是卖家秀、Elephant Hide v2 和 Tant,感觉 Tant 版除了是单色所以层次感差了点以外,其它和卖家秀差不多了。

卖家秀
Elephant Hide v2
Tant

某 quantum gravity 专家 cls 最近可意气风发。自打决定在湾区再多待一阵之后,cls 便研究起了买车。当然,cls 可以选择微啃一下买辆法拉利,但是作为一个新时代独立自主的男性,cls 没有选择啃老,而是先租一辆小破车体验一下,一来经济上稍微划算那么一丢丢,二来 cls 刚拿驾照没多久,还是先练练手吧。

刚好趁着与胡老师约饭的机会,cls 开着他的小破车从 Berkeley 来到了南湾。饭后大家一致决定(其实就脸哥和 cls)去 Hakone 赏花。但是去程就犯难了,谁来坐 cls 的车呢?现在我们有三位司机:

  • 以 cls 为代表的新司机,购买高额保险,体验刺激人生;
  • 以脸哥为代表的老司机,表演精湛技术,偶尔忘看红灯;
  • 以 cxq 为代表的 AI 司机,只需付费升级,纵享智慧 AI。

等王老爷子从饭馆出来,三位司机都向他抛出了橄榄枝。他将面临艰难抉择:到底该 pick 哪位司机?谁将助力完成他赏花的梦想?是初生牛犊不怕虎的他?还是经验老练的她?抑或是沉着冷静来自钞能力的它? (广告之后,精彩继续)

然而不幸的事情还是发生了,晚上回家的路上,志在必得的新司机 cls 带着我和王老爷子回家,车上三位加起来驾驶时长不超过 30h,结果在高速上遇上了年轻人的第一次高速事故,所幸人都没事。下午还在对着车型高谈阔论侃侃而谈的 cls,立马开始仔细钻研保险。我们以及和我们相撞的车都还好,但是在我们相撞的同时,我看着一辆车侧着在我们左前方飞过,地上还有阵阵火花,还是有点恐怖。我也不知道这辆车和我们到底有啥关系,我只能猜测是后车看到前面有车相撞,心里一紧一转方向盘,于是前车没事自己 gg 了。

Indeed, there are a bunch of formats available. Just list a few popular choices here:

  • JSON. Everyone who reads this post right now should have know it :)
  • INI. Do you know there is an operating system, called Windows?
  • YAML. Examples are Kubernetes, Jekyll, and CircleCI.
  • TOML. Examples are PEP 621, which introduces pyproject.toml to Python, and Cargo, which uses Cargo.toml to configure every Rust crate.
  • XML. Examples are Apache Hadoop and Apache Ant.

(Thanks to ChatGPT for providing some of the examples.)

I'd like to put the related formats into four categories, roughly based on the expressivity:

  • Lightweight configuration formats. Examples are JSON, INI, TOML, XML. There are basically human-readable serialization of dictionaries/lists.
  • Medium weight configuration formats. Examples are YAML, OmegaConf. These are more complex (in the sense that templating is possible to some extent) but not fully-fledged.
  • Heavyweight configuration formats. Examples are Nickel, Dhall, Jsonnet, Pkl and RCL. They introduce variables and function, becoming serious Domain-Specific Languages. Some of them are even Turing-complete.
  • General programming languages. Examples are Python (JupyterHub), Lua (WezTerm , neovim), VimL (Vim), Emacs Lisp (Emacs), and even Haskell (xmonad). What I find out is that these projects usually need to define functions/callbacks. I won't discuss them in this post.

Here is a comment from HackerNews, which has a similar classification:

  • Level 1 is just values in a file. The Linux kernel uses that.
  • Level 2 is a list of values, e.g. ini files.
  • Level 3 allows nesting. JSON, XML, and YAML are here.
  • Level 4 allows computation but limited. Dhall and Starlark are here.
  • Level 5 is a Turing-complete language. Python, Javascript, etc.
Read more »

这部剧也不新了。之前早就听说过它的人气,前几天终于抽了个时间把这部剧看了,感觉对得起我对它的期望。这里随手记录一下看过的感受,里面涉及对漫长的季节,Odd Taxi,Manchester by the Sea,The Invisible Guest 和 白夜行 的剧情讨论,没看过的还请绕道。

Read more »
0%