My Journey @ ICPC NAC 2025

Harry Huang (aka Wenyuan Huang, 黄问远)

中文 Chinese

2025 NAC 游寄。

今年的 NAC 还是在 UCF (University of Central Florida) 举行,赞助商有Jane Street, Citadel, Jump Trading, Hudson River Trading, Jetbrain以及NSA(仙之人兮列如麻)。

不过这几天奥兰多的天气不是很好,从第二天开始每天都有雷阵雨,经常下午活动结束出门之后就在下雨。气温也很高,白天几乎都在25度以上,非常闷热。

日程总体是玩三天,打一天比赛,然后各回各家。总之玩的很开心,打的很烂。


DAY0 - 到达/注册日

到酒店之后见到了两位南外的学长/学姐(但是没认出我xd),面基了隔壁学校的网友,开心:)

晚饭前开始注册,发现教练没到,把酒店找了一圈才发现教练没来.

前一天晚上赶大巴/飞机几乎没睡觉,巨困无比,到房间洗了个澡就睡大觉了。


DAY1 - 开幕日

六点半爬起来吃Jane Street赞助的早饭,好困。

到UCF之后听Jane Street介绍了他们在工作中用到的一些和CP(Competitive Programming)的知识(比如用二分查找进行交易权重(?)分配),学到许多!

Progamming Camp的时候Jingbang老师讲了一些竞赛技巧,下午做了一些题目,又双叒叕被计算几何卡了。(冥冥之中预演了2天后的正式比赛)

晚饭和tourist合影了。开心!

晚上回房间之后准备明天的简历,期间酒店莫名说我们订了饭,下去确认不是队友定的,还把自己关出去了:(


DAY2 - Career Fair

又是七点爬起来吃早饭:(

今天是Jetbrain讲课,又没听懂。Tourist讲了很多trick,介绍了一下他自己以及给了一些比赛建议,学到许多!(可惜正式赛全忘了)

下午的Career Fair非常隆重,所有赞助商(除了NSA)把lobby围成了一个圈,大家都在和各家赞助商代表激情聊天。Jetbrain大概是因为不在美国招人摊位格外空(xd)结束前嗓子都要说哑了,最后Jump Trading和Hudson River Trading收了我的纸质简历,开心。

晚上和tourist以及教练组聊天,问了一些竞赛的发展以及AI对竞赛的影响相关的问题,感觉大家人都很好,又学到许多!


DAY3 - 正式比赛

两个字概括:炸了。

凌晨一点被队友手机亮光晃醒,早上起床的时候就在昏昏欲睡。

十点开场之后从后往前开题,先是看到了L题(整场比赛的万恶之源),想了一会之后和队友说doable,但是由于这是道计算几何就skip了。然后立马看到了K题,感觉K题非常有可能做出来。细想之后发现是个弱智结论题,秒了。

回头开始仔细想L题,推了一会之后发现对于一个固定的列数,最大的行数是一个函数的取整部分,因此可以直接求出的local maximum点,答案就是或者,然后就WA了。

检查了大约2h还是没有发现哪里有问题,决定暂时放弃,帮队友开其他题。A题貌似是数论,推了一会之后发现实际上是个构造,从大到小过一遍每个质因子就行了。把A扔给队友做了之后开始验H题,没发现贪心思路有错,但是不知道为何一直在WA。同样的还有D题。

此时队友把A和B过了,因此此时我们有D,H,L三题思路没错,但是过不了的题目。

此时我们依旧觉得优势在我:只要把这三道题在结束前改出来就有六题,再开出一题就大概率能进前17了。然而接下来在比赛结束之前,我们D,H,L三道题都没有改出来。 我主攻的是L题,在比赛结束前一直在尝试各种trick(例如手写取整除法,取整开根号),但直到countdown结束都没有改出来。赛后发现原因是扫描的范围太小,只要把的取值范围(即)增加到1000或以上就能过了。


反思

比赛的症结所在是一直卡着L题开不出来,占用了绝大部分机时。我们队都不擅长计算几何,因此这次这道并不算难的计算几何题完美的卡住了我们的进度。我们没有放弃L的原因是L的解法过于简单,在赛场上我们一致认为L的解法完全不可能出错,白白浪费了大量时间去修正若有若无的精度问题。

判断失误的根本原因还是对于我们对于计算几何不熟悉——可以说是几乎没有怎么练习过,心态上患得患失,没有勇气暂时放弃一道题去开剩下的题,导致全面崩盘。如果我们对计算几何更熟悉一点,至少知道增加扫描区间这样的小trick,我们的结果也不会如此糟糕。

总之,这次比赛全面爆炸的主要原因在于1) 不熟悉计算几何 2) 赛前训练太少。但由于我们队几乎不具备组队训练的条件(三个本科生队员都很忙,大家都没时间训练),这次的爆炸也算是情理之中的结果。

明年大概不会以选手身份参赛了,如果dieter教练同意的话大概会作为co-coach指导校队的训练吧。下次参赛应该会在26年,希望到时候能有更高的水平和更有热情的队伍。

Anyway,从9月开始一直忙到现在了,我也该放暑假了。

祝大家暑假愉快!


English 英文

NAC 2025 Trip Report. (AI Translated from Chinese above.)

This year’s NAC was once again held at the University of Central Florida (UCF), with sponsors including Jane Street, Citadel, Jump Trading, Hudson River Trading, JetBrains, and the NSA.

Unfortunately, the weather in Orlando wasn’t great. Starting from the second day, there were thunderstorms every day, usually right after the afternoon activities ended. The temperature was also quite high—above 25°C during the day—and very humid.

The schedule was basically three days of fun, one day of competition, then heading home.


1. DAY 0 – Arrival / Registration

After arriving at the hotel, I ran into two alumni from my high school (but they didn’t recognize me lol) and met an online friend from a neighboring university in person :)

Having barely slept the night before due to the bus/flight, I was extremely tired. After taking a shower, I went straight to bed.


2. DAY 1 – Opening Day

Got up at 6:30 AM for a breakfast sponsored by Jane Street. Exhausted.

At UCF, Jane Street gave a talk about how they apply Competitive Programming (CP) knowledge in their work — for example, using binary search to allocate trading weights (?). Learned a lot!

During Programming Camp, Jingbang shared some contest tips. We worked on some problems in the afternoon and, once again, got stuck on computational geometry.
(A sign of what was to come two days later...)

Took a photo with tourist during dinner — wow!

Back at the hotel in the evening, I worked on my resume for the next day. At one point, the hotel oddly said someone in our room had ordered food. When I went down to check and found it wasn’t ours, I accidentally locked myself out :(


3. DAY 2 – Career Fair

Another 7 AM breakfast (so tired).

Today JetBrains gave a talk, but I didn’t quite understand it again.
Tourist shared a bunch of tricks and introduced himself, along with some contest advice — learned a lot!
(Too bad I forgot everything during the actual contest...)

The afternoon Career Fair was very lively. All the sponsors (except NSA) set up booths around the lobby, and people were enthusiastically chatting with recruiters.
JetBrains' booth was particularly empty — probably because they don’t hire in the US xd.
Before the fair ended, Jump Trading and Hudson River Trading took my printed resume — felt great!

In the evening, we chatted with tourist and the coaching team about the future of CP and the impact of AI. Everyone was super nice, and I learned a lot again!


4. DAY 3 – Contest Day

Three words: We are cooked.

The contest started at 10 AM. We began solving problems from the back. First, we saw Problem L. After some discussion, I told my teammates it was "doable", but since it was computational geometry, we decided to skip it for now.
Then we saw Problem K, which looked very promising. After realizing it was a simple observation problem, we solved it quickly.

We went back to Problem L. After some analysis, I discovered that for a fixed column number , the maximum row count was the integer part of a function .
So we could find the local maximum , and the answer would be either or the best value in the interval . But we got WA.

We spent 2 hours debugging and still couldn’t figure it out. I temporarily gave up and helped open other problems.
Problem A looked like number theory but turned out to be a construction problem. After passing the prime factors in descending order, we handed it off to a teammate.

I started validating our approach for Problem H. The greedy logic seemed sound, but we kept getting WA. Same for Problem D.

At this point, we had solved A and B, so we were stuck on D, H, and L — three problems where our logic seemed correct but we couldn’t get AC.

We still believed we had the upper hand: if we could fix these three problems, we’d have six in total, and one more might push us into the top 17.
But in the end, we didn’t fix D, H, or L.
I focused on Problem L, trying all sorts of tricks (e.g., hand-written floor division, square root), but still didn’t fix it before the countdown ended.
Post-contest analysis showed our setting of scanning range for was too narrow — we only needed to increase the range (i.e., ) to over 1000 to pass.


Reflection

The main issue was getting stuck on Problem L, which consumed nearly all of our machine time.
None of us were good at computational geometry, and although the problem wasn’t particularly difficult, it completely stalled our progress.

We didn’t give up on it because its solution was deceptively simple, and we thought it had to be correct.
This was a misjudgment rooted in our unfamiliarity with computational geometry — we’d barely practiced it.
Add in fear of missing out, and our failure to temporarily abandon the problem to open others, and it led to a full collapse.

In summary, the main reasons for this total meltdown were:

  1. Lack of computational geometry practice
  2. Not enough training before the contest

But since we hardly had any conditions for team training (everyone is busy with classes), this outcome was somewhat expected.


I probably won’t compete as a contestant next year. If Professor Dieter van Melkebeek (our coach) agrees, I’ll likely become a co-coach and help train the school team.

My next competition will probably be in 2026. Hopefully, by then, I’ll have improved and be working with a passionate team.

Anyway, I’ve been busy non-stop since September, and now it’s finally time for summer break.

Wishing everyone a great summer!

  • Title: My Journey @ ICPC NAC 2025
  • Author: Harry Huang (aka Wenyuan Huang, 黄问远)
  • Created at : 2024-12-28 02:31:58
  • Updated at : 2025-05-27 19:24:48
  • Link: https://whuang369.com/blog/2024/12/28/CS/ICPC/NAC 2024/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments