Блог пользователя dXqwq

Автор dXqwq, 2 месяца назад, По-английски

UPD 1: Submitting a recording will be required in order to win (division top 3 or best female coder) prize. The format of the recording & rules are the same with AGC.

UPD 2: We've noticed that contest is unavailable in the X-Camp Contest System. We are investigating.

UPD 3: International contestants should also register at XinYouDui contest system.

UPD 4: You should submit your video file(or url) to [email protected].

2026 · The 8th Turing Cup Tournament

The Turing Cup is an invitational competition that is organized by one of the most successful informatics competition teams in China, the XinYouDui and partner with X-Camp Academy.

Timeline

Event Time (UTC+8)
Registration Time Jun 18, 2026, 06:00 PM — Jul 30, 2026, 12:29 PM
Opening Ceremony Jul 30, 2026, 07:50 AM — 08:30 AM
Contest Time Jul 30, 2026, 08:30 AM — 12:30 PM

Contest Details

Staff

Features

  • High Contest Quality: The contest problems will be set up by the XinYouDui from Hangzhou Xuejun High School, The problemset quality is ensured by IOI medalist and NOI medalist in China's national competitions.
  • Real-time Contest Ranking: Besides the real-time rank list during the contest, the final international ranking will release a few minutes after the contest ends.
  • International Contest: Compete with other top coding enthusiasts around the world, we have thousands of registered contestants from China, the US, Russia, Canada, and India.

Registration

Divisions & Difficulty

  • Novice group: The entry-level level of programming with basic language application and basic algorithms is recommended for beginners.
  • Intermediate group: Have the ability to apply basic data structure and common algorithms to solve problems. Candidates with certain contest experience are recommended to participate.
  • Advanced group: The ability to apply advanced data structure and algorithms to solve complex problems is recommended.

Rules

Program delivery uses standard I/O (stdin/stdout, no file operation required). The highest score of the previous submissions is the score of the problem. The time of submitting the program with the highest score for the first time is the time of the problem. After submitting the program, the system will quickly evaluate and feedback the evaluation score. The total score takes the highest score in previous evaluations as the final score, and the last program submission time that achieved the highest score for the first time as the total score. This ranking is the joint ranking of players from all over the world. When players have the same ranking results and scores, those with less time will be the top.


Award Eligibility & Rules

Age Requirements

  • Novice Group: Winners must be born after January 1, 2014
  • Intermediate Group: Winners must be born after January 1, 2012
  • Advanced Group: No age restrictions

Participation Rules

  1. Each contestant can only win awards in one division (Novice/Intermediate/Advanced)
  2. If qualifying in multiple divisions:
  • Higher-ranked award takes priority (e.g., 1st prize > 2nd prize)
  • For equal rankings: Higher division award prevails

Award Categories

Division Champions

Group Prize Quantity
Advanced Huawei MateBook Pro 1
Intermediate Huawei MatePad Pro 1
Novice Huawei MatePad Air 1

Division Runners-Up

Group Prize Quantity
Advanced Huawei MatePad Pro 1
Intermediate Huawei MatePad Air 1
Novice Huawei MatePad 1

Third Place Awards

Group Prize Quantity
Advanced Huawei MatePad Air 1
Intermediate Huawei Watch 1
Novice Huawei Watch 1

Special Awards

Award Category Prize Quantity
Future Star Xiaomi Smart Speaker 3 (1/group)
Best Female Coder Razer Wireless Mouse 3 (1/group)
Fastest Problem Solver ikbc Keyboard 8 (1/problem)

Certificates

  • First Prize: Top 10% per group
  • Second Prize: Top 20% per group
  • Third Prize: Top 30% per group
  • All winners receive electronic honor certificates

Organizers

XinYouDui

XinYouDui is a world-class competitive programming training organization founded by Xuejun High School’s International Olympiad in Informatics (IOI) Contest diamond-level coach Mr. Xianyou Xu, who has over 20+ years of teaching experience in competitive programming.

Since its inception, XinYouDui has won 7 world championships, 6 IOI gold medals, 4 ISIJ gold medals, 63 Asia-Pacific gold medals, 56 NOI gold medals, more than 770 first prize in the National Olympiad in Informatics in Provinces.More than 200 students have been admitted to Tsinghua University and Peking University, and many other students have been admitted to Harvard University, MIT, Stanford, Columbia and other international universities.Many of the students work in world-famous high-tech companies such as Google, Facebook, Microsoft, Baidu, etc.

X-Camp Academy

X-Camp Academy was founded in September 2017 in Silicon Valley by two Google software engineers , Yuan and Charlie. Over the past seven years, X-Camp has 53 students were selected in the US Camp and Canada Camp. Additionally, over 90 USACO contestants reached the platinum level, and over 450 reached the silver level or higher. X-Camp teaching team consists of seasoned engineers from major Silicon Valley tech companies and top-tier university CS students from MIT, Stanford, CMU, and UC Berkeley. They work closely with International Diamond-Level coach, aiming to help children become top-tier talents on a global scale.

X-Camp is a recommended coding institution by USACO.

Sponsor

Hundsun

Hundsun is a financial technology company with the mission of “Make Finance Easy”. Hundsun focuses on the financial industry and devotes itself to offering integrated solution and services to the institutions of securities, futures, funds, trust, insurance, banking, exchange and private placement. Hundsun has been listed to be top-100 Fintech 100 global financial IT enterprise for 16 consecutive years, ranking 22nd in 2023 and ranking first among Chinese companies on the list.

  • Проголосовать: нравится
  • +73
  • Проголосовать: не нравится

»
2 месяца назад, скрыть # |
 
Проголосовать: нравится +28 Проголосовать: не нравится

Testers: ChatGPT 5.6 Sol, Gemini 3.1 Pro, Claude Fable 5 xD

»
2 месяца назад, скрыть # |
 
Проголосовать: нравится +11 Проголосовать: не нравится

Fun facts:

  • No one remembered the Codeforces blog until today, so I decide to post this and farm some contribution.
  • I believe that the Advance group should be easier than last year. I am sorry...
  • We are still seeking human testers.

Problems are cool, GL&HF!

»
2 месяца назад, скрыть # |
 
Проголосовать: нравится +15 Проголосовать: не нравится

How to register for the Turing cup on the international website? Is the contest just not up yet?

»
2 месяца назад, скрыть # |
 
Проголосовать: нравится +5 Проголосовать: не нравится

As a someone, greatest testers of all time.

»
2 месяца назад, скрыть # |
 
Проголосовать: нравится +4 Проголосовать: не нравится

i'd like to congratulate aaa_pigeon2 for his role as a tester

»
2 месяца назад, скрыть # |
 
Проголосовать: нравится +8 Проголосовать: не нравится

Could you clarify the rules? For example, are participants allowed to use prewritten code/templates, google, or other external resources during the contest?

»
2 месяца назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Hey! Can you add rust support? (I guess other people will also appreciate c++ 20/23 support)

»
2 месяца назад, скрыть # |
 
Проголосовать: нравится -17 Проголосовать: не нравится

image

»
2 месяца назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Why can’t I see the AI testers?

»
2 месяца назад, скрыть # |
 
Проголосовать: нравится +23 Проголосовать: не нравится

Definitely a weird experience to code throughout the night. (the timing wasn't favourable for Europe). But I enjoyed it a lot. The problems were very interesting, but also hard. In the end I just got as many subtask points as I could.

Thanks for the contest!

»
2 месяца назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

How to solve "Vengeful Spirit"? I tried to optimize O(n^2) DP but failed :(

  • »
    »
    2 месяца назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится

    Is your DP something like: let $$$f(i,s)$$$ denote the minimum cost to deal with the remaining monsters after processing the first $$$i-1$$$ monsters, with current points $$$s$$$? If so, the $$$\mathcal{O}(n^2)$$$ transition is essentially considering a maximal increasing segment at some position, and then transferring either from $$$i+1$$$ or from the end of that contiguous segment $$$r+1$$$, right? If that's the case, note that on one hand $$$f$$$ is non‑increasing with respect to $$$s$$$, and on the other hand, having one extra point can save at most one operation. We can adjust: if having one fewer point causes some overall flattening operation not to be triggered, then change the first monster killed in that operation to a single‑point kill; this costs at most one extra operation, and afterwards the points will not be fewer. Therefore the adjacent difference is $$$0/1$$$, meaning that for each $$$i$$$ we actually only need to store a constant and a set of breakpoints over the value domain. Each maximal increasing segment uses at most one flattening operation; suppose it covers $$$x$$$ adjacent edges, then it saves $$$x$$$ operations and consumes $$$x+2$$$. If two adjacent segments both use flattening, the maximum coverage of the latter segment is decreased by $$$1$$$. Hence, for a fixed state indicating whether the previous segment used flattening, the minimum remaining points as a function of the number of flattening operations is a discrete convex function, so between the two states there is at most one switch where one becomes better than the other. Then we can use a persistent FHQ‑Treap to maintain the slopes of the convex function, achieving $$$\mathcal{O}(n \log^2 n)$$$. My implementation runs very fast and passed directly.

    • »
      »
      »
      2 месяца назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится

      Translated by Google, please point out any ambiguous or strange parts.

    • »
      »
      »
      2 месяца назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится

      thank you very much :)

    • »
      »
      »
      2 месяца назад, скрыть # ^ |
      ← Rev. 2  
      Проголосовать: нравится +20 Проголосовать: не нравится

      Btw, there is a much easier solution (to implement at least), I think it probably stores about the same data internally, but uses a priority queue.

      Basically you can look at the $$$O(n^2)$$$ dp and just see it as as bunch of "shortcuts" which jump a certain length $$$\geq 2$$$, and when you jump with $$$+1$$$ you can take one extra shortcut later. On a shortcut, you can also decide to "waste" a move and get an extra soul. If you waste moves along the entire shortcut, you get one more soul for free (as you're no longer doing any shortcut, so that $$$-1$$$ soul, becomes $$$+1$$$).

      Crucially the shortcuts don't overlap, except maybe the second last and the last shortcut interval, which overlap by possibly $$$1$$$, where I try both options to which this shared position belongs to.

      Now we do a greedy from left to right, when we encounter a shortcut, if we have enough souls to take it, we take it, but push its length to the priority queue.

      Otherwise, we also push it to the priority queue, but then take the smallest shortcut from the priority queue, decrease it by one, and use this extra soul to pay for the new shortcut. We want the smallest such shortcut, as when a shortcut reaches one, we get one extra soul for free.

      With some more work you can even optimize it to linear time (you do not need the priority queue).

      • »
        »
        »
        »
        2 месяца назад, скрыть # ^ |
         
        Проголосовать: нравится +10 Проголосовать: не нравится

        With some more work you can even optimize it to linear time (you do not need the priority queue).

        How?

        • »
          »
          »
          »
          »
          2 месяца назад, скрыть # ^ |
           
          Проголосовать: нравится +10 Проголосовать: не нравится

          Everytime you insert in the priority queue a shortcut of length $$$x$$$, you also skip over $$$x$$$ positions, so you can afford $$$O(x)$$$ work, which sums to linear overall. So instead of a priority queue you can just have a frequency array, and loop through the frequency array to find the minimum element.

          • »
            »
            »
            »
            »
            »
            2 месяца назад, скрыть # ^ |
             
            Проголосовать: нравится 0 Проголосовать: не нравится

            I tried it following your approach, and it is indeed an excellent idea; mine was a bit more complicated. However, don't we need not only to maintain the coefficient sequence, but also to keep track of "which specific monotonic segment should be undone"? This is because segments with the same regret coefficient are not equivalent. For example, in the case of $$${1,3,2,5,4,6}$$$, two segments with a regret coefficient of $$$1$$$ will appear during processing. Undoing the latter one can yield $$$4$$$, while undoing the former will interfere with the latter and yield $$$5$$$. Therefore, is a lazy-deletion stack simulated by an array needed to determine which buckets are actually available?

            • »
              »
              »
              »
              »
              »
              »
              2 месяца назад, скрыть # ^ |
               
              Проголосовать: нравится +10 Проголосовать: не нравится

              I don't know exactly what you mean. I implemented my proposed linear time approach, and it worked:

              Code
              • »
                »
                »
                »
                »
                »
                »
                »
                2 месяца назад, скрыть # ^ |
                 
                Проголосовать: нравится 0 Проголосовать: не нравится

                I now understand your approach. My method leaves the effect of shared endpoints to be handled during the dynamic process, so after deleting segment $$$i$$$, I still need to extend segment $$$i+1$$$, and thus I must know the indices. But in fact, one can directly place the second operation at the already dead turning point, so in a combinatorial sense, the shared endpoint is simply assigned to the latter path—that makes sense.

»
2 месяца назад, скрыть # |
 
Проголосовать: нравится +10 Проголосовать: не нравится

I got confused and a little late to a party but will clarify just for my understanding. Are the prizes awarded for places 1-3 (as this blog suggests) or places 1-21 (as contest website states)?

»
2 месяца назад, скрыть # |
← Rev. 2  
Проголосовать: нравится +20 Проголосовать: не нравится

Have the prize winners been contacted or not yet?