{"id":1750,"date":"2026-09-15T04:51:16","date_gmt":"2026-09-15T04:51:16","guid":{"rendered":"https:\/\/accelthinking.com\/?p=1750"},"modified":"2026-09-20T03:52:54","modified_gmt":"2026-09-20T03:52:54","slug":"ccc-dsa-roadmap-junior-to-senior","status":"publish","type":"post","link":"https:\/\/accelthinking.com\/zh_cn\/ccc-dsa-roadmap-junior-to-senior\/","title":{"rendered":"CCC DSA Roadmap: Data Structures and Algorithms from Junior to Senior"},"content":{"rendered":"<style>\nhtml,body,#page{background:#f8fafc!important}.site-header,.site-footer,#masthead,#colophon,.entry-header,.post-navigation,.comments-area{display:none!important}.entry-title{display:none!important}.site-content .ast-container{max-width:100%!important;padding:0!important}.entry-content{margin:0!important;line-height:0!important}.site-content,#content,#primary,#main,.ast-plain-container #primary{margin:0!important;padding:0!important;background:#f8fafc}.ast-article-single{padding:0!important}\n.ati-page,.ati-page *{box-sizing:border-box}.entry-content>.ati-page,.ati-page{display:flex!important;flex-direction:column!important;width:100%!important;max-width:none!important;margin-left:0!important;margin-right:0!important;font-family:Inter,Arial,sans-serif;color:#0f172a;background:#f8fafc;font-size:0;line-height:0}.ati-page>p,.ati-page main>p,.ati-footer>p{display:none!important;margin:0!important}.ati-page a{text-decoration:none;color:inherit}.ati-page svg{display:block}.ati-top,.ati-page main,.ati-footer{font-size:16px;line-height:1.5}\n.ati-top{position:relative;z-index:2;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;min-height:76px;padding:0 clamp(22px,6vw,116px);color:#fff;background:#050505;border-bottom:1px solid rgba(255,255,255,.08)}.ati-top>p{display:contents!important}.ati-top br,.ati-nav br{display:none!important}.ati-brand{display:inline-flex;align-items:center;width:max-content;color:#ffc400!important}.ati-logo img{display:block;width:auto;height:38px;max-width:min(260px,42vw);object-fit:contain}.ati-nav{display:flex;gap:clamp(20px,3vw,44px);align-items:center;justify-content:center;font-size:15px;font-weight:600}.ati-nav a{position:relative;padding:28px 0 24px;color:rgba(255,255,255,.86)!important}.ati-nav a:hover,.ati-nav a.active{color:#ffc400!important}.ati-nav a:after{position:absolute;right:0;bottom:19px;left:0;height:2px;content:\"\";background:#ffc400;transform:scaleX(0);transition:transform 160ms ease}.ati-nav a:hover:after,.ati-nav a.active:after{transform:scaleX(1)}.ati-header-cta{justify-self:end;display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:0 20px;color:#050505!important;background:#ffc400;border-radius:8px;font-size:14px;font-weight:800}\n.ati-page{--hero-pattern:radial-gradient(circle at 82% 24%,rgba(255,196,0,.18) 0 2px,transparent 3px),linear-gradient(135deg,rgba(255,255,255,.07) 1px,transparent 1px);--hero-pattern-size:90px 90px,38px 38px;--hero-pattern-opacity:.55}.ati-solutions{--hero-pattern:radial-gradient(circle at 25px 25px,rgba(255,196,0,.2) 0 2px,transparent 3px),linear-gradient(90deg,rgba(255,196,0,.09) 1px,transparent 1px),linear-gradient(0deg,rgba(255,255,255,.06) 1px,transparent 1px);--hero-pattern-size:96px 96px,96px 96px,96px 96px}.ati-cp-academy{--hero-pattern:radial-gradient(circle at 20px 20px,rgba(255,196,0,.26) 0 3px,transparent 4px),radial-gradient(circle at 74px 58px,rgba(20,184,166,.18) 0 2px,transparent 3px),linear-gradient(135deg,transparent 46%,rgba(255,196,0,.11) 47% 48%,transparent 49%);--hero-pattern-size:112px 112px,112px 112px,56px 56px}.ati-it-consulting{--hero-pattern:linear-gradient(90deg,transparent 0 28px,rgba(20,184,166,.14) 29px 30px,transparent 31px 72px),linear-gradient(0deg,transparent 0 28px,rgba(255,196,0,.1) 29px 30px,transparent 31px 72px),radial-gradient(circle at 30px 30px,rgba(20,184,166,.22) 0 2px,transparent 3px);--hero-pattern-size:72px 72px,72px 72px,72px 72px}.ati-about-page{--hero-pattern:linear-gradient(135deg,rgba(255,196,0,.12) 0 2px,transparent 2px 28px),radial-gradient(circle at 85% 28%,rgba(255,255,255,.12) 0 2px,transparent 3px);--hero-pattern-size:42px 42px,96px 96px}.ati-contact{--hero-pattern:radial-gradient(circle at 78% 44%,transparent 0 34px,rgba(255,196,0,.14) 35px 36px,transparent 37px 70px,rgba(20,184,166,.12) 71px 72px,transparent 73px),linear-gradient(135deg,rgba(255,255,255,.06) 1px,transparent 1px);--hero-pattern-size:220px 220px,42px 42px}.ati-cp-weekly-challenge{--hero-pattern:radial-gradient(circle at 18px 18px,rgba(255,196,0,.2) 0 2px,transparent 3px),linear-gradient(90deg,rgba(255,255,255,.07) 1px,transparent 1px);--hero-pattern-size:52px 52px,104px 104px}.ati-hero{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:clamp(28px,6vw,90px);align-items:center;min-height:430px;padding:76px clamp(22px,10vw,160px);overflow:hidden;color:#fff;background:linear-gradient(90deg,rgba(0,0,0,.92),rgba(0,0,0,.6)),var(--hero) center\/cover no-repeat}.ati-hero:after{position:absolute;inset:0;content:\"\";background:var(--hero-pattern);background-size:var(--hero-pattern-size);opacity:var(--hero-pattern-opacity);mix-blend-mode:screen;pointer-events:none}.ati-hero>*{position:relative;z-index:1}.ati-label{margin:0 0 12px!important;color:#ffb000!important;font-size:13px!important;font-weight:800!important;letter-spacing:.08em;text-transform:uppercase}.ati-hero h1{max-width:840px;margin:0!important;color:#fff!important;font-size:clamp(42px,5vw,72px)!important;line-height:1.03!important;font-weight:800!important;letter-spacing:0}.ati-hero-title-line{display:block;color:#fff!important}.ati-hero-title-line.accent{color:#ffc400!important}.ati-word{display:inline-block;white-space:nowrap}.ati-word:not(:last-child){margin-right:.32em}.ati-letter{display:inline-block;opacity:0;transform:translateY(.34em);animation:ati-letter-in 520ms cubic-bezier(.2,.8,.2,1) forwards;animation-delay:calc(38ms * var(--i))}@keyframes ati-letter-in{0%{opacity:0;transform:translateY(.34em)}100%{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.ati-letter{opacity:1;transform:none;animation:none}}.ati-hero p:not(.ati-label){max-width:700px;margin:22px 0 0!important;color:rgba(255,255,255,.86)!important;font-size:19px!important}.ati-side{padding:28px;color:#fff;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);border-radius:8px;backdrop-filter:blur(18px)}.ati-side strong{display:block;color:#ffc400;font-size:22px;line-height:1.15;overflow-wrap:anywhere}.ati-side p{margin:12px 0 0!important;color:rgba(255,255,255,.78)!important}.ati-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:32px}.ati-btn{display:inline-flex;align-items:center;justify-content:center;min-height:54px;padding:0 28px;border-radius:8px;font-size:15px;font-weight:800}.ati-primary{color:#050505!important;background:linear-gradient(135deg,#ffc400,#ffb000);box-shadow:0 18px 38px rgba(255,196,0,.25)}.ati-secondary{color:#fff!important;border:1px solid #ffc400}\n.ati-section,.ati-about{max-width:1320px;margin:0 auto;padding:72px clamp(22px,6vw,64px)}.ati-heading{display:grid;grid-template-columns:.8fr 1.2fr;gap:40px;align-items:end;margin-bottom:32px}.ati-heading h2,.ati-split h2{margin:0!important;color:#050505!important;font-size:clamp(30px,4vw,48px)!important;line-height:1.08!important}.ati-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.ati-grid.five{grid-template-columns:repeat(5,minmax(0,1fr))}.ati-card{padding:26px;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 18px 45px rgba(15,23,42,.06)}.ati-card .ati-num{color:#b47c00;font-size:14px;font-weight:800;text-transform:uppercase}.ati-card h3{margin:12px 0 0!important;color:#050505!important;font-size:22px!important;line-height:1.12!important}.ati-card p{margin:12px 0 0!important;color:#172033!important}.ati-task-card h3{margin:0!important}.ati-task-card h3 .ati-num{display:inline;color:#b47c00;font-size:22px;line-height:1.12}.ati-task-card p{margin-top:14px!important}.ati-split{max-width:1320px;margin:0 auto;padding:72px clamp(22px,6vw,64px);display:grid;grid-template-columns:.85fr 1.15fr;gap:52px;border-top:1px solid #e2e8f0}.ati-list{display:grid;gap:14px}.ati-list article{padding:20px;background:#fff;border:1px solid #e2e8f0;border-radius:8px}.ati-list b{display:block;color:#050505;font-size:18px}.ati-list span{display:block;margin-top:6px;color:#172033}.ati-dark{max-width:none;background:linear-gradient(135deg,#050505,#0f172a);color:#fff;border:0;padding-left:clamp(22px,10vw,160px);padding-right:clamp(22px,10vw,160px)}.ati-dark h2,.ati-dark p{color:#fff!important}.ati-dark .ati-list article{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.12)}.ati-dark .ati-list b{color:#ffc400}.ati-dark .ati-list span{color:rgba(255,255,255,.78)}.ati-path{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:16px}.ati-benefits{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.ati-benefits span{padding:18px 20px;color:#0f3d37;background:rgba(20,184,166,.1);border:1px solid rgba(20,184,166,.24);border-radius:8px;font-weight:800}.ati-side .ati-side-link{display:inline-flex;margin-top:18px;min-height:42px;padding:0 16px;align-items:center;justify-content:center;color:#050505!important;background:#ffc400;border-radius:8px;font-size:14px;font-weight:800}.ati-challenge-entry{max-width:1320px;margin:0 auto;padding:0 clamp(22px,6vw,64px) 72px}.ati-challenge-entry+.ati-challenge-entry{padding-top:0}.ati-challenge-panel{display:grid;grid-template-columns:1fr auto;gap:24px;align-items:center;padding:28px 30px;color:#fff;background:linear-gradient(135deg,#050505,#111827);border:1px solid rgba(255,196,0,.36);border-radius:8px;box-shadow:0 24px 55px rgba(15,23,42,.16)}.ati-challenge-entry h2{margin:0!important;color:#fff!important;font-size:clamp(24px,3vw,36px)!important;line-height:1.08!important}.ati-challenge-entry p{margin:8px 0 0!important;color:#dbe4ef!important}.ati-challenge-entry a{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:0 20px;color:#050505!important;background:#ffc400;border-radius:8px;font-weight:800;white-space:nowrap}.ati-posts{display:grid;gap:18px}.ati-posts article{padding:26px;background:#fff;border:1px solid #e2e8f0;border-radius:8px}.ati-posts h2{margin:0!important;color:#050505!important;font-size:28px!important}.ati-tag{color:#b47c00;font-size:13px;font-weight:800;text-transform:uppercase}\n.ati-assessment{display:grid;gap:18px}.ati-assessment-frame{display:block;width:100%;min-height:3300px;border:0;background:#f8fafc}.ati-embed{overflow:hidden;border:1px solid #1e293b;border-radius:8px;background:#050505;box-shadow:0 18px 45px rgba(15,23,42,.12)}.ati-embed iframe{display:block;width:100%;min-height:760px;border:0}.ati-levels{display:grid;gap:10px;margin:0;padding:0;list-style:none}.ati-levels li{padding:14px 16px;background:#fff;border:1px solid #e2e8f0;border-radius:8px;color:#172033}.ati-task-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}@media(max-width:800px){.ati-task-grid{grid-template-columns:1fr}.ati-assessment-frame{min-height:4300px}}\nbody .ati-wpforms .wpforms-container{margin:0!important}body .ati-wpforms form,body .ati-wpforms .wpforms-field-container{display:flex!important;flex-direction:column!important}body .ati-wpforms .wpforms-field{padding:10px 0 16px!important}body .ati-wpforms .wpforms-field.wpforms-field-text{display:none!important}body .ati-wpforms .wpforms-field.wpforms-field-select{order:-10!important}body .ati-wpforms .wpforms-field-label{font-weight:800!important;color:#050505!important}body .ati-wpforms .wpforms-field-row{max-width:100%!important}body .ati-wpforms .wpforms-field-row-block{width:100%!important;padding:0!important;margin-bottom:12px!important}body .ati-wpforms input,body .ati-wpforms textarea,body .ati-wpforms select{width:100%!important;max-width:100%!important;min-height:48px!important;padding:12px 14px!important;border:1px solid #e2e8f0!important;border-radius:8px!important;background:#f8fafc!important;color:#0f172a!important;font:inherit!important}body .ati-wpforms select{appearance:auto!important}body .ati-wpforms button[type=submit]{min-height:52px!important;padding:0 26px!important;border:0!important;border-radius:8px!important;color:#050505!important;background:linear-gradient(135deg,#ffc400,#ffb000)!important;box-shadow:0 18px 38px rgba(255,196,0,.24)!important;font-weight:800!important}\n#wpforms-76-field_5-container,#wpforms-76-field_6-container{display:none!important}#wpforms-76-field_4-container{order:-10!important}\n.ati-challenge-query .wp-block-post-template,.ati-challenge-posts{display:grid!important;gap:18px!important;padding:0!important;margin:0!important;list-style:none!important}.ati-challenge-query .wp-block-post,.ati-challenge-posts li{padding:26px!important;background:#fff!important;border:1px solid #e2e8f0!important;border-radius:8px!important;box-shadow:0 18px 45px rgba(15,23,42,.06)}.ati-challenge-query h2{margin:0!important}.ati-challenge-query h2 a,.ati-challenge-posts a{display:block;color:#050505!important;font-size:clamp(23px,2.8vw,31px);font-weight:800;line-height:1.12}.ati-challenge-query h2 a:hover,.ati-challenge-posts a:hover{color:#b47c00!important}.ati-challenge-query time,.ati-challenge-posts time{display:block;margin-top:10px;color:#b47c00;font-size:13px;font-weight:800;text-transform:uppercase}.ati-challenge-query .wp-block-post-excerpt,.ati-challenge-posts .wp-block-latest-posts__post-excerpt{margin:12px 0 0!important;color:#172033!important;font-size:16px;line-height:1.55}.ati-challenge-query .wp-block-post-excerpt__more-link{display:inline-flex;margin-top:14px;color:#b47c00!important;font-weight:800}.ati-article{max-width:1080px;margin:0 auto;padding:72px clamp(22px,6vw,64px);font-size:18px;line-height:1.7}.ati-article-card{padding:clamp(28px,5vw,56px);background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 18px 45px rgba(15,23,42,.06)}.ati-article-card p{margin:0 0 22px!important;color:#172033!important}.ati-article-card h2{margin:42px 0 14px!important;color:#050505!important;font-size:clamp(25px,3vw,36px)!important;line-height:1.1!important}.ati-article-card ul{margin:0 0 24px 22px!important;color:#172033}.ati-article-card li{margin:8px 0}.ati-article-card pre{overflow:auto;margin:16px 0 28px!important;padding:20px!important;color:#f8fafc!important;background:#0b1020!important;border:1px solid #1e293b;border-radius:8px;font-size:14px;line-height:1.55}.ati-article-card pre code{display:block!important;padding:0!important;color:#f8fafc!important;background:transparent!important;border:0!important;font-family:Menlo,Consolas,monospace;white-space:pre}.ati-back-link{display:inline-flex;margin-bottom:18px;color:#b47c00!important;font-size:14px;font-weight:800}\n.ati-footer{display:grid;grid-template-columns:1fr auto 1fr;gap:24px;align-items:center;min-height:90px;padding:22px clamp(22px,10vw,160px);color:#f8fafc;background:#050505;text-rendering:geometricPrecision;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ati-footer .ati-logo img{height:36px;max-width:240px}.ati-footer a{color:#f8fafc!important}.ati-footer a:hover{color:#ffc400!important}.ati-footer nav{display:flex;flex-wrap:wrap;gap:24px;justify-content:center;font-size:14px;font-weight:600;line-height:1.35}.ati-footer address{display:grid;gap:5px;justify-self:end;color:#dbe4ef;font-size:14.5px;font-weight:500;line-height:1.35;font-style:normal;margin:0!important}.ati-footer address a{font-weight:700}.ati-footer address span{color:#cbd5e1}\n.ati-menu-toggle,.ati-menu-button{display:none}@media(max-width:1100px){.ati-top,.ati-hero,.ati-heading,.ati-grid,.ati-grid.five,.ati-split,.ati-path,.ati-footer,.ati-challenge-panel{grid-template-columns:1fr}.ati-header-cta,.ati-footer address{justify-self:start}.ati-nav{justify-content:flex-start;flex-wrap:wrap}.ati-split{gap:30px}.ati-benefits{grid-template-columns:1fr}.ati-challenge-entry a{justify-self:start}}@media(max-width:700px){.ati-top{display:grid!important;grid-template-columns:1fr auto!important;align-items:center!important;gap:0!important;padding:16px 22px!important}.ati-logo img{height:34px}.ati-menu-button{display:grid;gap:5px;place-content:center;width:44px;height:40px;color:#fff;border:1px solid rgba(255,255,255,.22);border-radius:8px;cursor:pointer}.ati-menu-button span{display:block;width:20px;height:2px;background:#ffc400;border-radius:999px}.ati-nav{display:none!important;grid-column:1\/-1;width:100%;gap:0;margin-top:14px;padding:10px 0;border-top:1px solid rgba(255,255,255,.1)}.ati-nav a{padding:11px 0!important}.ati-nav a:after{bottom:5px}.ati-header-cta{display:none!important}.ati-menu-toggle:checked~.ati-nav{display:grid!important}.ati-menu-toggle:checked~.ati-header-cta{display:inline-flex!important;grid-column:1\/-1;justify-self:start;margin-top:12px}.ati-hero{min-height:auto;padding:60px 22px}.ati-hero h1{font-size:40px!important}.ati-footer nav{justify-content:flex-start}}\n@media(max-width:1100px){.ati-top{display:grid!important;grid-template-columns:1fr auto!important;align-items:center!important;gap:0!important;padding:16px 22px!important}.ati-logo img{height:34px}.ati-menu-button{display:grid!important;gap:5px;place-content:center;width:44px;height:40px;color:#fff;border:1px solid rgba(255,255,255,.22);border-radius:8px;cursor:pointer}.ati-menu-button span{display:block;width:20px;height:2px;background:#ffc400;border-radius:999px}.ati-nav{display:none!important;grid-column:1\/-1;width:100%;gap:0;margin-top:14px;padding:10px 0;border-top:1px solid rgba(255,255,255,.1)}.ati-nav a{padding:11px 0!important}.ati-nav a:after{bottom:5px}.ati-header-cta{display:none!important}.ati-menu-toggle:checked~.ati-nav{display:grid!important}.ati-menu-toggle:checked~.ati-header-cta{display:inline-flex!important;grid-column:1\/-1;justify-self:start;margin-top:12px}}\n.ati-mobile-menu{display:none}.ati-mobile-menu summary{list-style:none}.ati-mobile-menu summary::-webkit-details-marker{display:none}@media(max-width:1100px){.ati-mobile-menu{display:block!important;position:absolute!important;top:18px!important;right:22px!important;z-index:9999!important}.ati-mobile-menu summary{display:grid!important;gap:5px;place-content:center;width:44px;height:40px;border:1px solid rgba(255,255,255,.22);border-radius:8px;background:#050505;cursor:pointer}.ati-mobile-menu summary span{display:block;width:20px;height:2px;background:#ffc400;border-radius:999px}.ati-mobile-menu summary:before{display:block;width:20px;height:2px;content:\"\";background:#ffc400;border-radius:999px;box-shadow:0 7px 0 #ffc400,0 14px 0 #ffc400}.ati-mobile-menu summary span{display:none}.ati-mobile-menu[open] summary{border-color:rgba(255,196,0,.62);background:rgba(255,196,0,.1)}.ati-mobile-panel{position:absolute;top:52px;right:0;display:grid;gap:2px;width:min(78vw,320px);padding:12px;background:#050505;border:1px solid rgba(255,255,255,.14);border-radius:8px;box-shadow:0 24px 60px rgba(0,0,0,.46)}.ati-mobile-panel a{display:block;padding:12px 14px;color:#f8fafc!important;border-radius:6px;font-size:15px;font-weight:800;line-height:1.2}.ati-mobile-panel a.active,.ati-mobile-panel a:hover{color:#ffc400!important;background:rgba(255,255,255,.06)}.ati-mobile-panel .ati-mobile-cta{margin-top:6px;color:#050505!important;background:#ffc400;text-align:center}.ati-mobile-panel .ati-mobile-cta:hover{color:#050505!important;background:#ffcf33}}\n.ati-mobile-menu-button{position:absolute!important;top:18px!important;right:22px!important;z-index:10000!important;display:grid!important;place-content:center;width:44px;height:40px;color:#ffc400!important;border:1px solid rgba(255,255,255,.24);border-radius:8px;background:#050505;font-size:27px!important;font-weight:800;line-height:1;text-decoration:none!important}.ati-mobile-menu-button:before{display:none!important}.ati-mobile-nav-panel{display:none;position:absolute!important;top:70px!important;right:22px!important;z-index:10000!important;width:min(78vw,320px);padding:12px;background:#050505;border:1px solid rgba(255,255,255,.14);border-radius:8px;box-shadow:0 24px 60px rgba(0,0,0,.46)}.ati-mobile-nav-panel:target{display:grid!important;gap:2px}.ati-mobile-nav-panel a{display:block;padding:12px 14px;color:#f8fafc!important;border-radius:6px;font-size:15px;font-weight:800;line-height:1.2}.ati-mobile-nav-panel a.active,.ati-mobile-nav-panel a:hover{color:#ffc400!important;background:rgba(255,255,255,.06)}.ati-mobile-nav-panel .ati-mobile-cta{margin-top:6px;color:#050505!important;background:#ffc400;text-align:center}.ati-mobile-nav-panel .ati-mobile-close{color:#94a3b8!important;text-align:center;font-size:13px}@media(min-width:1101px){.ati-mobile-menu-button,.ati-mobile-nav-panel{display:none!important}}@media(max-width:1100px){.ati-mobile-menu{display:none!important}}\n.trp-language-switcher.trp-floating-switcher{position:fixed!important;top:auto!important;right:22px!important;bottom:22px!important;z-index:10001!important;width:auto!important;min-width:118px!important;--bottom:22px!important;--right:22px!important;--border-radius:8px!important;--bg:#050505!important;--bg-hover:rgba(255,255,255,.08)!important;--text:#f8fafc!important;--text-hover:#ffc400!important;--border:1px solid rgba(255,255,255,.2)!important}.trp-language-switcher .trp-language-switcher-inner{background:#050505!important;border-color:rgba(255,255,255,.2)!important;border-radius:8px!important;box-shadow:0 18px 42px rgba(0,0,0,.28)!important}.trp-language-switcher .trp-language-item{color:#f8fafc!important;font-weight:800!important}.trp-language-switcher .trp-language-item:hover{color:#ffc400!important;background:rgba(255,255,255,.08)!important}.trp-language-switcher .trp-flag-image{display:none!important}.trp-language-switcher .trp-language-item-name{margin-left:0!important}.ati-header-cta{margin-right:0}@media(max-width:1100px){.trp-language-switcher.trp-floating-switcher{right:18px!important;bottom:18px!important;min-width:118px!important;--bottom:18px!important;--right:18px!important}}\n<\/style>\n<style>\n.ati-article-shell{max-width:980px;margin:0 auto;padding:72px clamp(22px,6vw,64px)}\n.ati-article-card{background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 18px 45px rgba(15,23,42,.06);padding:clamp(26px,5vw,58px)}\n.ati-article-meta{display:flex;flex-wrap:wrap;gap:10px 14px;margin:18px 0 0;color:rgba(255,255,255,.78);font-size:14px;font-weight:700}\n.ati-article-content{color:#172033;font-size:18px;line-height:1.72}\n.ati-article-content p{margin:0 0 1.1em!important;color:#172033!important}\n.ati-article-content h2{margin:2em 0 .65em!important;color:#050505!important;font-size:clamp(26px,3vw,36px)!important;line-height:1.12!important}\n.ati-article-content h3{margin:1.45em 0 .45em!important;color:#050505!important;font-size:22px!important;line-height:1.2!important}\n.ati-article-content ul,.ati-article-content ol{margin:0 0 1.2em 1.4em!important;padding:0!important}\n.ati-article-content li{margin:.35em 0!important}\n.ati-article-content pre{margin:1.4em 0!important;padding:18px 20px!important;overflow:auto;color:#e5e7eb;background:#0f172a;border-radius:8px;line-height:1.55;font-size:14px}\n.ati-article-content code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",monospace}\n.ati-article-content p code,.ati-article-content li code{padding:.1em .32em;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:5px;color:#0f172a;font-size:.92em}\n.ati-article-content a{color:#b47c00!important;font-weight:800;text-decoration:none}\n.ati-article-content a:hover{text-decoration:underline}\n.ati-article-back{margin-top:28px;padding-top:22px;border-top:1px solid #e2e8f0}\n@media(max-width:800px){.ati-article-shell{padding:44px 18px}.ati-article-card{padding:24px 18px}.ati-article-content{font-size:16px}.ati-article-content pre{font-size:13px}}\n<\/style>\n<div class=\"ati-page ati-resource-post\" style=\"--hero:url(https:\/\/i0.wp.com\/accelthinking.com\/wp-content\/uploads\/2026\/06\/hero-technology-education-51.png?w=1600&#038;quality=85&#038;ssl=1)\">\n<header class=\"ati-top\">\n      <a class=\"ati-brand ati-logo\" href=\"\/\" aria-label=\"Accel Thinking home\"><img loading=\"lazy\" decoding=\"async\" loading=\"lazy\" height=\"63\" width=\"366\" loading=\"eager\" src=\"https:\/\/i0.wp.com\/accelthinking.com\/wp-content\/uploads\/2026\/06\/logo-dark-cropped-51.png?w=480&#038;quality=85&#038;ssl=1\" alt=\"Accel Thinking\"><\/a><br \/>\n      <input class=\"ati-menu-toggle\" id=\"ati-menu-post\" type=\"checkbox\" aria-label=\"Toggle navigation menu\"><br \/>\n      <label class=\"ati-menu-button\" for=\"ati-menu-post\" aria-hidden=\"true\"><span><\/span><span><\/span><span><\/span><\/label><\/p>\n<details class=\"ati-mobile-menu\">\n<summary aria-label=\"Open navigation menu\"><span><\/span><span><\/span><span><\/span><\/summary>\n<div class=\"ati-mobile-panel\"><a class=\"\" href=\"https:\/\/accelthinking.com\/\">Home<\/a><a class=\"\" href=\"https:\/\/accelthinking.com\/northstar\/\">NorthStar<\/a><a class=\"\" href=\"https:\/\/accelthinking.com\/learning\/\">Learning<\/a><a class=\"active\" href=\"https:\/\/accelthinking.com\/resources\/\">Resources<\/a><a class=\"\" href=\"https:\/\/accelthinking.com\/about\/\">About<\/a><a class=\"\" href=\"https:\/\/accelthinking.com\/contact\/\">Contact<\/a><a class=\"ati-mobile-cta\" href=\"https:\/\/accelthinking.com\/northstar\/\">Start NorthStar<\/a><\/div>\n<\/details>\n<p>      <a class=\"ati-mobile-menu-button\" href=\"#ati-mobile-nav-post\" aria-label=\"Open navigation menu\">&#9776;<\/a><\/p>\n<nav id=\"ati-mobile-nav-post\" class=\"ati-mobile-nav-panel\"><a class=\"\" href=\"https:\/\/accelthinking.com\/\">Home<\/a><a class=\"\" href=\"https:\/\/accelthinking.com\/northstar\/\">NorthStar<\/a><a class=\"\" href=\"https:\/\/accelthinking.com\/learning\/\">Learning<\/a><a class=\"active\" href=\"https:\/\/accelthinking.com\/resources\/\">Resources<\/a><a class=\"\" href=\"https:\/\/accelthinking.com\/about\/\">About<\/a><a class=\"\" href=\"https:\/\/accelthinking.com\/contact\/\">Contact<\/a><a class=\"ati-mobile-cta\" href=\"https:\/\/accelthinking.com\/northstar\/\">Start NorthStar<\/a><a class=\"ati-mobile-close\" href=\"#\">Close<\/a><\/nav>\n<nav class=\"ati-nav\"><a class=\"\" href=\"https:\/\/accelthinking.com\/\">Home<\/a><a class=\"\" href=\"https:\/\/accelthinking.com\/northstar\/\">NorthStar<\/a><a class=\"\" href=\"https:\/\/accelthinking.com\/learning\/\">Learning<\/a><a class=\"active\" href=\"https:\/\/accelthinking.com\/resources\/\">Resources<\/a><a class=\"\" href=\"https:\/\/accelthinking.com\/about\/\">About<\/a><a class=\"\" href=\"https:\/\/accelthinking.com\/contact\/\">Contact<\/a><\/nav>\n<p>      <a class=\"ati-header-cta\" href=\"https:\/\/accelthinking.com\/northstar\/\">Start NorthStar<\/a><br \/>\n    <\/header>\n<p>    <main><\/p>\n<section class=\"ati-hero ati-lang-en\">\n<div>\n<p class=\"ati-label\">CP Weekly Challenge<\/p>\n<h1 aria-label=\"CCC DSA Roadmap: Data Structures and Algorithms from Junior to Senior\"><span class=\"ati-hero-title-line\"><span class=\"ati-word\"><span class=\"ati-letter\" style=\"--i:0\">C<\/span><span class=\"ati-letter\" style=\"--i:1\">C<\/span><span class=\"ati-letter\" style=\"--i:2\">C<\/span><\/span> <span class=\"ati-word\"><span class=\"ati-letter\" style=\"--i:4\">D<\/span><span class=\"ati-letter\" style=\"--i:5\">S<\/span><span class=\"ati-letter\" style=\"--i:6\">A<\/span><\/span> <span class=\"ati-word\"><span class=\"ati-letter\" style=\"--i:8\">R<\/span><span class=\"ati-letter\" style=\"--i:9\">o<\/span><span class=\"ati-letter\" style=\"--i:10\">a<\/span><span class=\"ati-letter\" style=\"--i:11\">d<\/span><span class=\"ati-letter\" style=\"--i:12\">m<\/span><span class=\"ati-letter\" style=\"--i:13\">a<\/span><span class=\"ati-letter\" style=\"--i:14\">p<\/span><span class=\"ati-letter\" style=\"--i:15\">:<\/span><\/span> <span class=\"ati-word\"><span class=\"ati-letter\" style=\"--i:17\">D<\/span><span class=\"ati-letter\" style=\"--i:18\">a<\/span><span class=\"ati-letter\" style=\"--i:19\">t<\/span><span class=\"ati-letter\" style=\"--i:20\">a<\/span><\/span> <span class=\"ati-word\"><span class=\"ati-letter\" style=\"--i:22\">S<\/span><span class=\"ati-letter\" style=\"--i:23\">t<\/span><span class=\"ati-letter\" style=\"--i:24\">r<\/span><span class=\"ati-letter\" style=\"--i:25\">u<\/span><span class=\"ati-letter\" style=\"--i:26\">c<\/span><span class=\"ati-letter\" style=\"--i:27\">t<\/span><span class=\"ati-letter\" style=\"--i:28\">u<\/span><span class=\"ati-letter\" style=\"--i:29\">r<\/span><span class=\"ati-letter\" style=\"--i:30\">e<\/span><span class=\"ati-letter\" style=\"--i:31\">s<\/span><\/span> <span class=\"ati-word\"><span class=\"ati-letter\" style=\"--i:33\">a<\/span><span class=\"ati-letter\" style=\"--i:34\">n<\/span><span class=\"ati-letter\" style=\"--i:35\">d<\/span><\/span> <span class=\"ati-word\"><span class=\"ati-letter\" style=\"--i:37\">A<\/span><span class=\"ati-letter\" style=\"--i:38\">l<\/span><span class=\"ati-letter\" style=\"--i:39\">g<\/span><span class=\"ati-letter\" style=\"--i:40\">o<\/span><span class=\"ati-letter\" style=\"--i:41\">r<\/span><span class=\"ati-letter\" style=\"--i:42\">i<\/span><span class=\"ati-letter\" style=\"--i:43\">t<\/span><span class=\"ati-letter\" style=\"--i:44\">h<\/span><span class=\"ati-letter\" style=\"--i:45\">m<\/span><span class=\"ati-letter\" style=\"--i:46\">s<\/span><\/span> <span class=\"ati-word\"><span class=\"ati-letter\" style=\"--i:48\">f<\/span><span class=\"ati-letter\" style=\"--i:49\">r<\/span><span class=\"ati-letter\" style=\"--i:50\">o<\/span><span class=\"ati-letter\" style=\"--i:51\">m<\/span><\/span> <span class=\"ati-word\"><span class=\"ati-letter\" style=\"--i:53\">J<\/span><span class=\"ati-letter\" style=\"--i:54\">u<\/span><span class=\"ati-letter\" style=\"--i:55\">n<\/span><span class=\"ati-letter\" style=\"--i:56\">i<\/span><span class=\"ati-letter\" style=\"--i:57\">o<\/span><span class=\"ati-letter\" style=\"--i:58\">r<\/span><\/span> <span class=\"ati-word\"><span class=\"ati-letter\" style=\"--i:60\">t<\/span><span class=\"ati-letter\" style=\"--i:61\">o<\/span><\/span> <span class=\"ati-word\"><span class=\"ati-letter\" style=\"--i:63\">S<\/span><span class=\"ati-letter\" style=\"--i:64\">e<\/span><span class=\"ati-letter\" style=\"--i:65\">n<\/span><span class=\"ati-letter\" style=\"--i:66\">i<\/span><span class=\"ati-letter\" style=\"--i:67\">o<\/span><span class=\"ati-letter\" style=\"--i:68\">r<\/span><\/span><\/span><\/h1>\n<p>A CCC DSA roadmap from Junior to Senior, covering simulation, strings, grids, counting, prefix sums, graph search, greedy, DSU, shortest paths, dynamic programming, and typical historical CCC problems.<\/p>\n<div class=\"ati-article-meta\"><span>By Berny<\/span><span>September 19, 2026<\/span><\/div>\n<\/div>\n<aside class=\"ati-side\"><strong>DSA Roadmap<br \/>CCC Patterns<br \/>Senior Prep<\/strong><\/p>\n<p>A study map for turning CCC practice into reusable algorithmic thinking.<\/p>\n<\/aside>\n<\/section>\n<section class=\"ati-hero ati-lang-zh\">\n<div>\n<p class=\"ati-label\">CP Weekly Challenge<\/p>\n<h1 aria-label=\"CCC DSA \u77e5\u8bc6\u5730\u56fe\uff1a\u4ece Junior \u5230 Senior \u8981\u638c\u63e1\u54ea\u4e9b\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5\"><span class=\"ati-hero-title-line\">CCC DSA \u77e5\u8bc6\u5730\u56fe\uff1a\u4ece Junior \u5230 Senior \u8981\u638c\u63e1\u54ea\u4e9b\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5<\/span><\/h1>\n<p>\u4ece Junior \u5230 Senior \u68b3\u7406 CCC \u5e38\u89c1 DSA \u6a21\u578b\uff1asimulation\u3001\u5b57\u7b26\u4e32\u3001grid\u3001counting\u3001prefix sum\u3001graph search\u3001greedy\u3001DSU\u3001\u6700\u77ed\u8def\u548c DP\u3002<\/p>\n<div class=\"ati-article-meta\"><span>\u4f5c\u8005\uff1aBerny<\/span><span>2026 \u5e74 9 \u6708 19 \u65e5<\/span><\/div>\n<\/div>\n<aside class=\"ati-side\"><strong>DSA \u5730\u56fe<br \/>CCC \u6a21\u578b<br \/>Senior \u51c6\u5907<\/strong><\/p>\n<p>\u628a CCC \u7ec3\u4e60\u6574\u7406\u6210\u53ef\u8fc1\u79fb\u7684\u7b97\u6cd5\u601d\u7ef4\u8def\u7ebf\u3002<\/p>\n<\/aside>\n<\/section>\n<section class=\"ati-article-shell\">\n<article class=\"ati-article-card\">\n<div class=\"ati-share-tools\" data-ati-share>\n<div class=\"ati-share-copy\">\n<p class=\"ati-share-kicker\">Share this article<\/p>\n<p class=\"ati-share-note\">Copy the link, open your phone share sheet, scan the QR code for WeChat, or send by email.<\/p>\n<\/p><\/div>\n<div class=\"ati-share-actions\">\n    <button type=\"button\" data-share-native>Share<\/button><br \/>\n    <button type=\"button\" data-share-copy-link>Copy Link<\/button><br \/>\n    <button type=\"button\" data-share-wechat>WeChat QR<\/button><br \/>\n    <a data-share-email>Email<\/a>\n  <\/div>\n<div class=\"ati-share-qr\" data-share-qr hidden>\n    <img loading=\"lazy\" data-share-qr-img alt=\"QR code for sharing this article\"><\/p>\n<p>Scan with WeChat, then share the article link.<\/p>\n<\/p><\/div>\n<p class=\"ati-share-status\" data-share-status aria-live=\"polite\">\n<\/div>\n<div class=\"ati-article-content ati-lang-en\">\n<article class=\"ati-post-article\">\n<p>When students prepare for the CCC, they often ask: &quot;Which algorithms do I need to know?&quot; The useful answer is not a giant list of DSA names. The useful answer is a roadmap of patterns: simulation, strings, arrays, grids, counting, prefix sums, graph search, greedy, DSU, shortest paths, and dynamic programming.<\/p>\n<p>This article organizes the common CCC data structures and algorithms from Junior to Senior. It is designed as a study map for students and as a parent-friendly overview of how contest programming grows from careful implementation into algorithmic modeling.<\/p>\n<h2>Where This Fits in the CCC DSA Map<\/h2>\n<ul>\n<li>Level: Junior to Senior roadmap<\/li>\n<li>Pattern: DSA planning, pattern recognition, contest preparation<\/li>\n<li>Prerequisite: Python\/C++ basics, arrays\/lists, loops, strings, functions, debugging<\/li>\n<li>What this teaches: Organize CCC problems into a reusable study path instead of treating each problem as isolated.<\/li>\n<li>Where it appears again: CP Weekly solutions, Python\/C++ Notes, CCC contest review plans<\/li>\n<\/ul>\n<h2>What to Study Next<\/h2>\n<ul>\n<li>Related CP Weekly problems: <a href=\"\/ccc-2026-j4-snail-path-solution-analysis\/\">CCC 2026 J4 Snail Path<\/a>, <a href=\"\/ccc-2024-j5-harvest-waterloo-solution-analysis\/\">CCC 2024 J5 Harvest Waterloo<\/a>, <a href=\"\/ccc-2020-j5-s2-escape-room-solution-analysis\/\">CCC 2020 J5\/S2 Escape Room<\/a>, <a href=\"\/ccc-2017-s1-sum-game-solution-analysis\/\">CCC 2017 S1 Sum Game<\/a><\/li>\n<li>Related Python \/ C++ foundations: loops, strings, lists\/vectors, dictionaries\/maps, sets, 2D arrays, functions, debugging<\/li>\n<li>Related DSA roadmap articles: CCC Grid Problems, CCC Counting Patterns, CCC Prefix and Sliding Window Patterns, CCC Senior Graph Toolkit, CCC Dynamic Programming Roadmap<\/li>\n<\/ul>\n<h2>How to Read This Roadmap<\/h2>\n<p>CCC preparation has three layers:<\/p>\n<div class=\"ati-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>Stage<\/th>\n<th>Goal<\/th>\n<th>Common contest range<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Foundation<\/td>\n<td>Read carefully, implement simulation, handle input\/output and edge cases<\/td>\n<td>Junior J1-J3, Senior S1<\/td>\n<\/tr>\n<tr>\n<td>Modeling<\/td>\n<td>Turn the problem into arrays, strings, grids, graphs, or states<\/td>\n<td>Junior J4-J5, Senior S1-S2<\/td>\n<\/tr>\n<tr>\n<td>Algorithm Selection<\/td>\n<td>Use constraints to choose the right pattern<\/td>\n<td>Senior S3-S4<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>The key is to ask:<\/p>\n<ol>\n<li>What complexity does the input size allow?<\/li>\n<li>What structure is the problem really about?<\/li>\n<li>What state should I store so I do not repeat work?<\/li>\n<\/ol>\n<h2>Foundation: Implementation Before Fancy Algorithms<\/h2>\n<p>Junior problems train careful implementation. This stage includes conditionals, loops, accumulation, simulation, and edge cases.<\/p>\n<div class=\"ati-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>DSA idea<\/th>\n<th>Summary<\/th>\n<th>Typical CCC problems<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Condition tables<\/td>\n<td>Choose output based on signs, scores, or rules<\/td>\n<td>CCC 2017 J1 Quadrant Selection, CCC 2024 J1 Conveyor Belt Sushi<\/td>\n<\/tr>\n<tr>\n<td>Loops and accumulation<\/td>\n<td>Maintain totals, counts, and best values<\/td>\n<td>CCC 2017 J2 Shifty Sum, CCC 2025 J2 Donut Shop<\/td>\n<\/tr>\n<tr>\n<td>Simulation<\/td>\n<td>Update state exactly as the story says<\/td>\n<td>CCC 2016 J4 Arrival Time, CCC 2026 J4 Snail Path<\/td>\n<\/tr>\n<tr>\n<td>Edge cases<\/td>\n<td>Handle zero, boundaries, all-same input, exact equality<\/td>\n<td>CCC 2017 J3 Exactly Electrical, CCC 2017 S1 Sum Game<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Many later mistakes come from this layer: wrong update order, missing boundary cases, or misunderstood input.<\/p>\n<h2>Strings and Parsing<\/h2>\n<p>CCC often uses strings as lightweight data structures. Students need to scan, slice, count, compare, and parse.<\/p>\n<div class=\"ati-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>DSA idea<\/th>\n<th>Summary<\/th>\n<th>Typical CCC problems<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>String traversal<\/td>\n<td>Scan characters and update state<\/td>\n<td>CCC 2019 J3 Cold Compress, CCC 2025 J3 Product Codes<\/td>\n<\/tr>\n<tr>\n<td>Substrings and rotations<\/td>\n<td>Check whether a shifted or sliced pattern appears<\/td>\n<td>CCC 2020 J4 Cyclic Shifts<\/td>\n<\/tr>\n<tr>\n<td>Palindrome and pattern checks<\/td>\n<td>Enumerate or verify string structure<\/td>\n<td>CCC 2016 J3 Hidden Palindrome<\/td>\n<\/tr>\n<tr>\n<td>Two-pointer basics<\/td>\n<td>Use two positions to track a range or mismatch<\/td>\n<td>CCC 2024 J4 Troublesome Keys, CCC 2025 J4 Sunny Days<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>The goal is to extract structure from text before writing loops.<\/p>\n<h2>Arrays, Lists, and Grids<\/h2>\n<p>Once the problem has days, positions, scores, or cells, students need arrays and grids.<\/p>\n<div class=\"ati-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>DSA idea<\/th>\n<th>Summary<\/th>\n<th>Typical CCC problems<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Array traversal<\/td>\n<td>Scan values and maintain totals or extremes<\/td>\n<td>CCC 2021 S1 Crazy Fencing, CCC 2017 S1 Sum Game<\/td>\n<\/tr>\n<tr>\n<td>Array transformation<\/td>\n<td>Rotate, flip, or rearrange stored state<\/td>\n<td>CCC 2019 J4 Flipper, CCC 2018 J4 Sunflowers<\/td>\n<\/tr>\n<tr>\n<td>Grid coordinates<\/td>\n<td>Represent positions with <code>(r, c)<\/code> or <code>(x, y)<\/code><\/td>\n<td>CCC 2026 J4 Snail Path, CCC 2023 J4\/S1 Trianglane<\/td>\n<\/tr>\n<tr>\n<td>Grid adjacency<\/td>\n<td>Reason about neighbors, boundaries, and perimeter<\/td>\n<td>CCC 2023 J4\/S1 Trianglane<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Grid problems are a major bridge from Junior to Senior because a grid can become a graph.<\/p>\n<h2>Counting: Frequency, Sets, and Parity<\/h2>\n<p>Counting is often the first moment when students see the value of a data structure.<\/p>\n<div class=\"ati-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>DSA idea<\/th>\n<th>Summary<\/th>\n<th>Typical CCC problems<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Frequency counting<\/td>\n<td>Count how often each value appears<\/td>\n<td>CCC 2016 S1 Ragaman, CCC 2024 J3 Bronze Count<\/td>\n<\/tr>\n<tr>\n<td>Sets<\/td>\n<td>Check membership and constraints quickly<\/td>\n<td>CCC 2022 J4\/S2 Good Groups<\/td>\n<\/tr>\n<tr>\n<td>Pair counting<\/td>\n<td>Count combinations with frequency arrays<\/td>\n<td>CCC 2017 J5\/S3 Nailed It!<\/td>\n<\/tr>\n<tr>\n<td>Parity<\/td>\n<td>Track odd\/even instead of exact counts<\/td>\n<td>CCC 2021 J5\/S2 Modern Art<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Modern Art is the classic example: the full grid is unnecessary if we track row and column parity.<\/p>\n<h2>Prefix Sum and Sliding Window<\/h2>\n<p>Prefix thinking appears when a problem involves repeated ranges, consecutive segments, or cumulative state.<\/p>\n<div class=\"ati-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>DSA idea<\/th>\n<th>Summary<\/th>\n<th>Typical CCC problems<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Running prefix sum<\/td>\n<td>Keep only the current cumulative value<\/td>\n<td>CCC 2017 S1 Sum Game<\/td>\n<\/tr>\n<tr>\n<td>Prefix arrays<\/td>\n<td>Precompute sums for fast range queries<\/td>\n<td>CCC 2020 S4 Swapping Seats<\/td>\n<\/tr>\n<tr>\n<td>Difference array<\/td>\n<td>Compress many interval updates<\/td>\n<td>CCC 2026 J5\/S2 Beams of Light<\/td>\n<\/tr>\n<tr>\n<td>Sliding window<\/td>\n<td>Maintain a valid consecutive window<\/td>\n<td>CCC 2020 S3 Searching for Strings, CCC 2025 J4 Sunny Days<\/td>\n<\/tr>\n<tr>\n<td>Center expansion<\/td>\n<td>Expand from a center and compare states<\/td>\n<td>CCC 2023 S2 Symmetric Mountains<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Sunny Days is a good transition problem: it can be explained with prefix\/suffix streaks or as a sliding window with one correction.<\/p>\n<h2>Sorting and Greedy<\/h2>\n<p>Greedy problems are not just &quot;do the obvious thing.&quot; Students must learn why a local choice is safe.<\/p>\n<div class=\"ati-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>DSA idea<\/th>\n<th>Summary<\/th>\n<th>Typical CCC problems<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Sorting<\/td>\n<td>Put data into an order that makes comparison easy<\/td>\n<td>CCC 2016 J5\/S2 Tandem Bicycle<\/td>\n<\/tr>\n<tr>\n<td>Greedy selection<\/td>\n<td>Choose the best current option<\/td>\n<td>CCC 2013 J4 Time on Task<\/td>\n<\/tr>\n<tr>\n<td>Greedy assignment<\/td>\n<td>Assign resources to compatible positions<\/td>\n<td>CCC 2015 S3 Gates<\/td>\n<\/tr>\n<tr>\n<td>Greedy construction<\/td>\n<td>Build an output that satisfies the rule<\/td>\n<td>CCC 2017 S2 High Tide, Low Tide<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Gates also leads naturally to DSU because repeatedly searching for an available gate is too slow.<\/p>\n<h2>Graph Search<\/h2>\n<p>Graph problems often come from grids, pages, relationships, or state transitions.<\/p>\n<div class=\"ati-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>DSA idea<\/th>\n<th>Summary<\/th>\n<th>Typical CCC problems<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>DFS\/BFS reachability<\/td>\n<td>Decide whether one node can reach another<\/td>\n<td>CCC 2018 J5 Choose Your Own Adventure, CCC 2013 S4 Who is Taller<\/td>\n<\/tr>\n<tr>\n<td>Flood fill<\/td>\n<td>Visit an entire reachable region<\/td>\n<td>CCC 2024 J5 Harvest Waterloo<\/td>\n<\/tr>\n<tr>\n<td>Grid BFS<\/td>\n<td>Search a grid with movement rules or hazards<\/td>\n<td>CCC 2018 S3 RoboThieves<\/td>\n<\/tr>\n<tr>\n<td>Implicit graph<\/td>\n<td>Generate edges from the rule instead of reading them directly<\/td>\n<td>CCC 2020 J5\/S2 Escape Room<\/td>\n<\/tr>\n<tr>\n<td>Multi-source BFS<\/td>\n<td>Start search from multiple sources at once<\/td>\n<td>Senior grid graph topics<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Escape Room is a strong bridge problem: the graph is not given directly, but the rule creates edges.<\/p>\n<h2>Binary Search on Answer<\/h2>\n<p>Some Senior problems ask for an optimal value that is hard to compute directly but easy to test.<\/p>\n<div class=\"ati-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>DSA idea<\/th>\n<th>Summary<\/th>\n<th>Typical CCC problems<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Binary search<\/td>\n<td>Search inside an ordered range<\/td>\n<td>Foundation array practice<\/td>\n<\/tr>\n<tr>\n<td>Binary search on answer<\/td>\n<td>Guess an answer, then check feasibility<\/td>\n<td>CCC 2010 S3 Firehose<\/td>\n<\/tr>\n<tr>\n<td>Convex or unimodal reasoning<\/td>\n<td>Use cost structure to locate an optimum<\/td>\n<td>CCC 2021 S3 Lunch Concert<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>The key question is:<\/p>\n<pre><code class=\"language-text\">Can we do it with answer = X?<\/code><\/pre>\n<p>If feasibility is monotonic, binary search becomes available.<\/p>\n<h2>DSU and MST<\/h2>\n<p>Disjoint Set Union maintains connected components under merges.<\/p>\n<div class=\"ati-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>DSA idea<\/th>\n<th>Summary<\/th>\n<th>Typical CCC problems<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>DSU find\/union<\/td>\n<td>Maintain components efficiently<\/td>\n<td>CCC 2015 S3 Gates<\/td>\n<\/tr>\n<tr>\n<td>Kruskal MST<\/td>\n<td>Sort edges and connect components<\/td>\n<td>CCC 2010 S4 Animal Farm<\/td>\n<\/tr>\n<tr>\n<td>MST-style processing<\/td>\n<td>Group edges and reason about connection cost<\/td>\n<td>CCC 2023 S4 Minimum Cost Roads<\/td>\n<\/tr>\n<tr>\n<td>Partial scoring strategy<\/td>\n<td>Build simpler correct versions first<\/td>\n<td>CCC 2017 S4 Minimum Cost Flow<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Think of DSU when the problem repeatedly merges things or asks whether two items are already connected.<\/p>\n<h2>Weighted Shortest Paths and State Graphs<\/h2>\n<p>When edges have different costs, plain BFS is not enough.<\/p>\n<div class=\"ati-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>DSA idea<\/th>\n<th>Summary<\/th>\n<th>Typical CCC problems<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Dijkstra<\/td>\n<td>Shortest path with nonnegative edge weights<\/td>\n<td>CCC 2009 S4 Shop and Ship<\/td>\n<\/tr>\n<tr>\n<td>Expanded state graph<\/td>\n<td>Include extra information inside the node state<\/td>\n<td>CCC 2015 S4 Convex Hull, CCC 2025 S4 Floor Is Lava<\/td>\n<\/tr>\n<tr>\n<td>0-1 BFS<\/td>\n<td>Special shortest path when edge weights are 0 or 1<\/td>\n<td>Senior grid graph topics<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>The key modeling question is: does position alone describe the state, or do we need extra information such as damage, mode, or remaining resource?<\/p>\n<h2>Dynamic Programming<\/h2>\n<p>Dynamic programming is about state, transition, and order.<\/p>\n<div class=\"ati-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>DSA idea<\/th>\n<th>Summary<\/th>\n<th>Typical CCC problems<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Memoization<\/td>\n<td>Store recursive search results<\/td>\n<td>CCC 2015 J5 Pi Day<\/td>\n<\/tr>\n<tr>\n<td>Grid DP<\/td>\n<td>Transition from neighboring positions<\/td>\n<td>CCC 2025 J5 Connecting Territories, CCC 2012 S5 Mouse Journey<\/td>\n<\/tr>\n<tr>\n<td>DAG DP<\/td>\n<td>Accumulate answers along directed dependencies<\/td>\n<td>CCC 2007 S4 Waterpark<\/td>\n<\/tr>\n<tr>\n<td>Interval DP<\/td>\n<td>Solve smaller intervals before larger ones<\/td>\n<td>CCC 2016 S4 Combining Riceballs<\/td>\n<\/tr>\n<tr>\n<td>Rolling array<\/td>\n<td>Keep only the previous layer when possible<\/td>\n<td>CCC 2025 J5 Connecting Territories<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Connecting Territories is a good first DP example because each row only depends on the previous row.<\/p>\n<h2>Constructive Search and Constraint Propagation<\/h2>\n<p>Some Senior problems require analyzing constraints before writing code.<\/p>\n<div class=\"ati-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>DSA idea<\/th>\n<th>Summary<\/th>\n<th>Typical CCC problems<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Brute force with pruning<\/td>\n<td>Enumerate states but stop impossible branches<\/td>\n<td>CCC 2013 J5 Chances of Winning<\/td>\n<\/tr>\n<tr>\n<td>State-space search<\/td>\n<td>Treat each configuration as a state<\/td>\n<td>CCC 2015 J5 Rule of Three<\/td>\n<\/tr>\n<tr>\n<td>Constraint propagation<\/td>\n<td>Use restrictions to infer missing values<\/td>\n<td>CCC 2019 S3 Arithmetic Square<\/td>\n<\/tr>\n<tr>\n<td>Constructive algorithms<\/td>\n<td>Directly build a valid answer<\/td>\n<td>CCC 2023 S3 Palindromic Poster, CCC 2024 S3 Swipe<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>These problems reward thinking before coding. The first step is often to reduce the search space.<\/p>\n<h2>Recommended Study Order<\/h2>\n<ol>\n<li>Simulation and edge cases<\/li>\n<li>Strings and parsing<\/li>\n<li>Arrays, lists, and grids<\/li>\n<li>Frequency counting, sets, parity<\/li>\n<li>Prefix sums and sliding window<\/li>\n<li>Sorting and greedy reasoning<\/li>\n<li>DFS\/BFS, flood fill, graph representation<\/li>\n<li>Binary search on answer<\/li>\n<li>DSU and MST<\/li>\n<li>Dijkstra and state graphs<\/li>\n<li>Dynamic programming<\/li>\n<li>Constructive search and constraint propagation<\/li>\n<\/ol>\n<p>For each topic, pair one explanation with two to four historical problems. Then review mistakes by type: reading error, edge case, state definition, implementation bug, or complexity mismatch.<\/p>\n<h2>Common Mistakes<\/h2>\n<ol>\n<li>Practicing only by year instead of by DSA pattern.<\/li>\n<li>Reading solutions without rewriting the code.<\/li>\n<li>Knowing BFS but failing to recognize graph models.<\/li>\n<li>Learning DP as a template instead of defining state and transition.<\/li>\n<li>Ignoring constraints and choosing the wrong complexity.<\/li>\n<li>Treating all wrong answers the same instead of classifying the error.<\/li>\n<\/ol>\n<h2>Review Questions<\/h2>\n<ol>\n<li>What DSA patterns appear most often in Junior J4\/J5?<\/li>\n<li>Why can many grid problems become graph search problems?<\/li>\n<li>What is the difference between prefix sum and sliding window?<\/li>\n<li>When should DSU come to mind?<\/li>\n<li>What are the three core questions in dynamic programming?<\/li>\n<li>If <code>N = 500000<\/code>, which algorithmic approaches should you rule out first?<\/li>\n<\/ol>\n<\/article>\n<\/div>\n<div class=\"ati-article-content ati-lang-zh\">\n<article class=\"ati-post-article\">\n<p>\u51c6\u5907 CCC \u65f6\uff0c\u5f88\u591a\u5b66\u751f\u4f1a\u95ee\uff1a\u201c\u6211\u5230\u5e95\u8981\u5b66\u54ea\u4e9b\u7b97\u6cd5\uff1f\u201d\u7b54\u6848\u4e0d\u662f\u80cc\u4e00\u5f20\u5f88\u957f\u7684 DSA \u6e05\u5355\uff0c\u800c\u662f\u7406\u89e3\u4e0d\u540c\u9898\u578b\u80cc\u540e\u7684\u6a21\u578b\uff1a\u4ec0\u4e48\u65f6\u5019\u662f simulation\uff0c\u4ec0\u4e48\u65f6\u5019\u662f graph search\uff0c\u4ec0\u4e48\u65f6\u5019\u9700\u8981 prefix sum\u3001greedy\u3001DSU \u6216 dynamic programming\u3002<\/p>\n<p>\u8fd9\u7bc7\u6587\u7ae0\u628a CCC Junior \u5230 Senior \u5e38\u89c1\u7684\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5\u6574\u7406\u6210\u4e00\u5f20\u8def\u7ebf\u56fe\u3002\u5b83\u9002\u5408\u5b66\u751f\u7528\u6765\u67e5\u6f0f\u8865\u7f3a\uff0c\u4e5f\u9002\u5408\u5bb6\u957f\u7406\u89e3\uff1a\u4ece J1\/J2 \u7684\u57fa\u7840\u5b9e\u73b0\uff0c\u5230 J4\/J5 \u7684\u5efa\u6a21\uff0c\u518d\u5230 S3\/S4 \u7684\u7b97\u6cd5\u9009\u62e9\uff0c\u80fd\u529b\u662f\u600e\u6837\u4e00\u5c42\u4e00\u5c42\u957f\u51fa\u6765\u7684\u3002<\/p>\n<h2>\u672c\u9898\u5728 CCC DSA \u5730\u56fe\u91cc\u7684\u4f4d\u7f6e<\/h2>\n<ul>\n<li>Level: Junior to Senior roadmap<\/li>\n<li>Pattern: DSA planning, pattern recognition, contest preparation<\/li>\n<li>Prerequisite: Python\/C++ basics, arrays\/lists, loops, strings, functions, debugging<\/li>\n<li>What this teaches: \u628a\u96f6\u6563\u7684 CCC \u771f\u9898\u6574\u7406\u6210\u53ef\u590d\u4e60\u7684 DSA \u5b66\u4e60\u8def\u5f84\u3002<\/li>\n<li>Where it appears again: CP Weekly \u771f\u9898\u9898\u89e3\u3001Python\/C++ Notes\u3001CCC \u8d5b\u524d\u590d\u4e60\u8ba1\u5212<\/li>\n<\/ul>\n<h2>\u4e0b\u4e00\u6b65\u63a8\u8350<\/h2>\n<p>\u5982\u679c\u4f60\u6b63\u5728\u89c4\u5212 CCC \u5b66\u4e60\u8def\u5f84\uff0c\u53ef\u4ee5\u914d\u5408\u4e0b\u9762\u8fd9\u4e9b\u6587\u7ae0\u9605\u8bfb\uff1a<\/p>\n<ul>\n<li>\u76f8\u5173 CP Weekly \u771f\u9898\uff1a<a href=\"\/ccc-2026-j4-snail-path-solution-analysis\/\">CCC 2026 J4 Snail Path<\/a>\u3001<a href=\"\/ccc-2024-j5-harvest-waterloo-solution-analysis\/\">CCC 2024 J5 Harvest Waterloo<\/a>\u3001<a href=\"\/ccc-2020-j5-s2-escape-room-solution-analysis\/\">CCC 2020 J5\/S2 Escape Room<\/a>\u3001<a href=\"\/ccc-2017-s1-sum-game-solution-analysis\/\">CCC 2017 S1 Sum Game<\/a><\/li>\n<li>\u76f8\u5173 Python \/ C++ \u57fa\u7840\uff1aloops\u3001strings\u3001lists\/vectors\u3001dictionaries\/maps\u3001sets\u30012D arrays\u3001functions\u3001debugging<\/li>\n<li>\u76f8\u5173 DSA \u4e13\u9898\uff1aCCC Grid Problems\u3001CCC Counting Patterns\u3001CCC Prefix and Sliding Window Patterns\u3001CCC Senior Graph Toolkit\u3001CCC Dynamic Programming Roadmap<\/li>\n<\/ul>\n<h2>\u8fd9\u5f20\u5730\u56fe\u5e94\u8be5\u600e\u4e48\u8bfb<\/h2>\n<p>CCC \u7684 DSA \u5b66\u4e60\u987a\u5e8f\u5927\u81f4\u53ef\u4ee5\u5206\u6210\u4e09\u5c42\uff1a<\/p>\n<div class=\"ati-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>Stage<\/th>\n<th>\u76ee\u6807<\/th>\n<th>\u5e38\u89c1\u9898\u4f4d<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Foundation<\/td>\n<td>\u8bfb\u61c2\u9898\u3001\u5199\u5bf9\u57fa\u7840\u6a21\u62df\u3001\u5904\u7406\u8f93\u5165\u8f93\u51fa\u548c\u8fb9\u754c<\/td>\n<td>Junior J1-J3, Senior S1<\/td>\n<\/tr>\n<tr>\n<td>Modeling<\/td>\n<td>\u628a\u9898\u76ee\u8f6c\u6210\u6570\u7ec4\u3001\u5b57\u7b26\u4e32\u3001grid\u3001graph \u6216 state<\/td>\n<td>Junior J4-J5, Senior S1-S2<\/td>\n<\/tr>\n<tr>\n<td>Algorithm Selection<\/td>\n<td>\u6839\u636e constraints \u9009\u62e9\u5408\u9002\u7684\u7b97\u6cd5\u6a21\u5f0f<\/td>\n<td>Senior S3-S4<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u771f\u6b63\u91cd\u8981\u7684\u4e0d\u662f\u201c\u6211\u5b66\u8fc7\u591a\u5c11\u7b97\u6cd5\u540d\u8bcd\u201d\uff0c\u800c\u662f\u770b\u5230\u9898\u76ee\u540e\u80fd\u56de\u7b54\u4e09\u4e2a\u95ee\u9898\uff1a<\/p>\n<ol>\n<li>\u8f93\u5165\u89c4\u6a21\u6697\u793a\u4ec0\u4e48\u590d\u6742\u5ea6\uff1f<\/li>\n<li>\u9898\u76ee\u5bf9\u8c61\u5e94\u8be5\u5efa\u6a21\u6210\u4ec0\u4e48\u7ed3\u6784\uff1f<\/li>\n<li>\u6211\u9700\u8981\u4fdd\u5b58\u54ea\u4e9b\u72b6\u6001\uff0c\u624d\u80fd\u907f\u514d\u91cd\u590d\u5de5\u4f5c\uff1f<\/li>\n<\/ol>\n<h2>Junior \u57fa\u7840\u5c42\uff1a\u5148\u628a\u5b9e\u73b0\u80fd\u529b\u6253\u7a33<\/h2>\n<p>Junior \u524d\u534a\u90e8\u5206\u5e38\u8003\u76f4\u63a5\u5b9e\u73b0\uff0c\u4f46\u5b83\u4e0d\u662f\u201c\u7b80\u5355\u8bed\u6cd5\u9898\u201d\u3002\u5b83\u5728\u8bad\u7ec3\u5b66\u751f\u628a\u6587\u5b57\u6761\u4ef6\u7ffb\u8bd1\u6210\u4ee3\u7801\u6b65\u9aa4\u3002<\/p>\n<div class=\"ati-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>DSA \u70b9<\/th>\n<th>\u6982\u8981<\/th>\n<th>\u5178\u578b\u5386\u53f2\u8003\u9898<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u6761\u4ef6\u5224\u65ad\u4e0e\u5206\u7c7b<\/td>\n<td>\u6839\u636e\u5750\u6807\u3001\u5206\u6570\u3001\u89c4\u5219\u8f93\u51fa\u4e0d\u540c\u7ed3\u679c<\/td>\n<td>CCC 2017 J1 Quadrant Selection, CCC 2024 J1 Conveyor Belt Sushi<\/td>\n<\/tr>\n<tr>\n<td>\u5faa\u73af\u4e0e\u7d2f\u52a0<\/td>\n<td>\u9010\u9879\u5904\u7406\u8f93\u5165\uff0c\u7ef4\u62a4 total\u3001count\u3001best<\/td>\n<td>CCC 2017 J2 Shifty Sum, CCC 2025 J2 Donut Shop<\/td>\n<\/tr>\n<tr>\n<td>Simulation<\/td>\n<td>\u6309\u9898\u610f\u4e00\u6b65\u4e00\u6b65\u66f4\u65b0\u72b6\u6001<\/td>\n<td>CCC 2016 J4 Arrival Time, CCC 2026 J4 Snail Path<\/td>\n<\/tr>\n<tr>\n<td>Edge cases<\/td>\n<td>\u5904\u7406 0\u3001\u8fb9\u754c\u3001\u5168\u76f8\u540c\u3001\u521a\u597d\u76f8\u7b49<\/td>\n<td>CCC 2017 J3 Exactly Electrical, CCC 2017 S1 Sum Game<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u8fd9\u4e00\u5c42\u6700\u5bb9\u6613\u88ab\u4f4e\u4f30\u3002\u5f88\u591a J4\/J5 \u7684\u9519\u8bef\uff0c\u4e0d\u662f\u7b97\u6cd5\u4e0d\u4f1a\uff0c\u800c\u662f\u72b6\u6001\u66f4\u65b0\u987a\u5e8f\u3001\u8fb9\u754c\u3001\u8f93\u5165\u89e3\u6790\u4e0d\u7a33\u3002<\/p>\n<h2>\u5b57\u7b26\u4e32\u4e0e\u89e3\u6790\uff1a\u628a text \u5f53\u6210\u7ed3\u6784\u5316\u6570\u636e<\/h2>\n<p>CCC Junior \u5f88\u559c\u6b22\u628a\u5b57\u7b26\u4e32\u5f53\u6210\u8f7b\u91cf\u6570\u636e\u7ed3\u6784\u3002\u5b66\u751f\u9700\u8981\u4f1a\u626b\u63cf\u3001\u5207\u7247\u3001\u8ba1\u6570\u3001\u6bd4\u8f83\u548c\u89e3\u6790\u6570\u5b57\u3002<\/p>\n<div class=\"ati-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>DSA \u70b9<\/th>\n<th>\u6982\u8981<\/th>\n<th>\u5178\u578b\u5386\u53f2\u8003\u9898<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u5b57\u7b26\u4e32\u904d\u5386<\/td>\n<td>\u4e00\u4e2a\u5b57\u7b26\u4e00\u4e2a\u5b57\u7b26\u626b\u63cf\u5e76\u66f4\u65b0\u72b6\u6001<\/td>\n<td>CCC 2019 J3 Cold Compress, CCC 2025 J3 Product Codes<\/td>\n<\/tr>\n<tr>\n<td>Substring \/ rotation<\/td>\n<td>\u5224\u65ad\u67d0\u6bb5\u5b57\u7b26\u4e32\u662f\u5426\u51fa\u73b0\u6216\u5faa\u73af\u79fb\u52a8<\/td>\n<td>CCC 2020 J4 Cyclic Shifts<\/td>\n<\/tr>\n<tr>\n<td>Palindrome \/ pattern<\/td>\n<td>\u679a\u4e3e\u6216\u68c0\u67e5\u5b57\u7b26\u4e32\u7ed3\u6784<\/td>\n<td>CCC 2016 J3 Hidden Palindrome<\/td>\n<\/tr>\n<tr>\n<td>Two pointers \u5165\u95e8<\/td>\n<td>\u7528\u4e24\u4e2a\u4f4d\u7f6e\u63cf\u8ff0\u5f53\u524d\u68c0\u67e5\u8303\u56f4<\/td>\n<td>CCC 2024 J4 Troublesome Keys, CCC 2025 J4 Sunny Days<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u8fd9\u4e00\u7c7b\u9898\u7684\u6838\u5fc3\u4e0d\u662f\u5199\u5f88\u591a\u4ee3\u7801\uff0c\u800c\u662f\u5148\u628a\u201c\u5b57\u7b26\u4e32\u91cc\u7684\u4fe1\u606f\u201d\u62c6\u51fa\u6765\u3002\u6bd4\u5982 Product Codes \u4e0d\u662f\u7b80\u5355\u8bfb\u5b57\u7b26\uff0c\u800c\u662f\u626b\u63cf\u5b57\u6bcd\u6bb5\u548c\u6570\u5b57\u6bb5\uff1bCold Compress \u4e0d\u662f\u538b\u7f29\u7b97\u6cd5\u6a21\u677f\uff0c\u800c\u662f\u8fde\u7eed\u6bb5\u8ba1\u6570\u3002<\/p>\n<h2>Arrays\u3001Lists \u4e0e Grid\uff1a\u4ece\u4e00\u7ef4\u72b6\u6001\u5230\u4e8c\u7ef4\u72b6\u6001<\/h2>\n<p>\u5f53\u9898\u76ee\u5f00\u59cb\u51fa\u73b0\u6bcf\u5929\u3001\u6bcf\u4e2a\u4f4d\u7f6e\u3001\u6bcf\u4e2a\u683c\u5b50\u65f6\uff0c\u5b66\u751f\u5c31\u9700\u8981\u7528\u6570\u7ec4\u6216 grid \u4fdd\u5b58\u72b6\u6001\u3002<\/p>\n<div class=\"ati-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>DSA \u70b9<\/th>\n<th>\u6982\u8981<\/th>\n<th>\u5178\u578b\u5386\u53f2\u8003\u9898<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u4e00\u7ef4\u6570\u7ec4\u904d\u5386<\/td>\n<td>\u626b\u63cf\u5217\u8868\uff0c\u7ef4\u62a4\u6700\u5927\u503c\u3001\u6700\u5c0f\u503c\u3001\u5dee\u503c\u6216\u7d2f\u8ba1\u503c<\/td>\n<td>CCC 2021 S1 Crazy Fencing, CCC 2017 S1 Sum Game<\/td>\n<\/tr>\n<tr>\n<td>\u6570\u7ec4\u53d8\u6362<\/td>\n<td>\u5bf9\u6570\u7ec4\u6216\u77e9\u9635\u505a\u65cb\u8f6c\u3001\u7ffb\u8f6c\u3001\u91cd\u6392<\/td>\n<td>CCC 2019 J4 Flipper, CCC 2018 J4 Sunflowers<\/td>\n<\/tr>\n<tr>\n<td>Grid coordinates<\/td>\n<td>\u7528 <code>(r, c)<\/code> \u6216 <code>(x, y)<\/code> \u8868\u793a\u4f4d\u7f6e<\/td>\n<td>CCC 2026 J4 Snail Path, CCC 2023 J4\/S1 Trianglane<\/td>\n<\/tr>\n<tr>\n<td>Grid adjacency<\/td>\n<td>\u5224\u65ad\u4e0a\u4e0b\u5de6\u53f3\u76f8\u90bb\u3001\u8fb9\u754c\u3001\u5468\u957f<\/td>\n<td>CCC 2023 J4\/S1 Trianglane<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Grid \u9898\u662f Junior \u5230 Senior \u7684\u91cd\u8981\u6865\u6881\u3002\u521a\u5f00\u59cb\u662f\u201c\u5728\u683c\u5b50\u91cc\u6a21\u62df\u201d\uff0c\u540e\u6765\u4f1a\u53d8\u6210\u201c\u628a\u6bcf\u4e2a\u683c\u5b50\u770b\u6210 graph node\u201d\u3002<\/p>\n<h2>Counting\uff1afrequency\u3001set \u4e0e parity<\/h2>\n<p>\u5f88\u591a CCC \u9898\u8868\u9762\u4e0a\u50cf\u6a21\u62df\uff0c\u5b9e\u9645\u4e0a\u53ea\u9700\u8981\u7edf\u8ba1\u4fe1\u606f\u3002\u5b66\u4f1a counting \u540e\uff0c\u5b66\u751f\u4f1a\u7b2c\u4e00\u6b21\u660e\u663e\u611f\u53d7\u5230\uff1a\u597d\u7684\u6570\u636e\u7ed3\u6784\u53ef\u4ee5\u8ba9\u4ee3\u7801\u5c11\u5f88\u591a\u3002<\/p>\n<div class=\"ati-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>DSA \u70b9<\/th>\n<th>\u6982\u8981<\/th>\n<th>\u5178\u578b\u5386\u53f2\u8003\u9898<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Frequency counting<\/td>\n<td>\u7edf\u8ba1\u6bcf\u4e2a\u503c\u51fa\u73b0\u591a\u5c11\u6b21<\/td>\n<td>CCC 2016 S1 Ragaman, CCC 2024 J3 Bronze Count<\/td>\n<\/tr>\n<tr>\n<td>Set membership<\/td>\n<td>\u5feb\u901f\u5224\u65ad\u662f\u5426\u51fa\u73b0\u8fc7\u3001\u662f\u5426\u8fdd\u53cd\u9650\u5236<\/td>\n<td>CCC 2022 J4\/S2 Good Groups<\/td>\n<\/tr>\n<tr>\n<td>Pair counting<\/td>\n<td>\u7528\u9891\u7387\u6570\u7ec4\u7edf\u8ba1\u7ec4\u5408<\/td>\n<td>CCC 2017 J5\/S3 Nailed It!<\/td>\n<\/tr>\n<tr>\n<td>Parity<\/td>\n<td>\u53ea\u5173\u5fc3\u5947\u5076\uff0c\u4e0d\u5173\u5fc3\u5177\u4f53\u6b21\u6570<\/td>\n<td>CCC 2021 J5\/S2 Modern Art<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Modern Art \u662f\u5178\u578b\u4f8b\u5b50\uff1a\u5982\u679c\u771f\u7684\u7ef4\u62a4\u6574\u5f20\u753b\u5e03\uff0c\u9898\u76ee\u4f1a\u53d8\u5f97\u53c8\u6162\u53c8\u590d\u6742\uff1b\u5982\u679c\u53ea\u7ef4\u62a4\u6bcf\u4e00\u884c\u548c\u6bcf\u4e00\u5217\u662f\u5426\u88ab toggle \u5947\u6570\u6b21\uff0c\u7b54\u6848\u5c31\u53d8\u6210\u516c\u5f0f\u3002<\/p>\n<h2>Prefix Sum\u3001Difference Array \u4e0e Sliding Window<\/h2>\n<p>\u5f53\u9898\u76ee\u8981\u6c42\u53cd\u590d\u67e5\u8be2\u533a\u95f4\u3001\u8fde\u7eed\u6bb5\u3001\u7d2f\u8ba1\u72b6\u6001\u65f6\uff0c\u5c31\u8fdb\u5165 prefix thinking\u3002<\/p>\n<div class=\"ati-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>DSA \u70b9<\/th>\n<th>\u6982\u8981<\/th>\n<th>\u5178\u578b\u5386\u53f2\u8003\u9898<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Running prefix sum<\/td>\n<td>\u53ea\u7ef4\u62a4\u5f53\u524d\u7d2f\u8ba1\u503c<\/td>\n<td>CCC 2017 S1 Sum Game<\/td>\n<\/tr>\n<tr>\n<td>Prefix arrays<\/td>\n<td>\u9884\u5904\u7406\u524d\u7f00\uff0c\u5feb\u901f\u56de\u7b54\u533a\u95f4\u95ee\u9898<\/td>\n<td>CCC 2020 S4 Swapping Seats<\/td>\n<\/tr>\n<tr>\n<td>Difference array<\/td>\n<td>\u5bf9\u591a\u4e2a\u533a\u95f4\u66f4\u65b0\u505a\u538b\u7f29<\/td>\n<td>CCC 2026 J5\/S2 Beams of Light<\/td>\n<\/tr>\n<tr>\n<td>Sliding window<\/td>\n<td>\u7ef4\u62a4\u4e00\u4e2a\u6ee1\u8db3\u6761\u4ef6\u7684\u8fde\u7eed\u7a97\u53e3<\/td>\n<td>CCC 2020 S3 Searching for Strings, CCC 2025 J4 Sunny Days<\/td>\n<\/tr>\n<tr>\n<td>Center expansion<\/td>\n<td>\u4ece\u4e2d\u5fc3\u5411\u5916\u6269\u5c55\u6bd4\u8f83\u72b6\u6001<\/td>\n<td>CCC 2023 S2 Symmetric Mountains<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Sunny Days \u53ef\u4ee5\u770b\u4f5c prefix\/suffix consecutive counts\uff0c\u4e5f\u53ef\u4ee5\u770b\u4f5c sliding window with one correction\u3002\u5b83\u5f88\u9002\u5408\u4f5c\u4e3a Junior \u5b66\u751f\u7b2c\u4e00\u6b21\u63a5\u89e6\u201c\u7a97\u53e3\u72b6\u6001\u7ef4\u62a4\u201d\u7684\u4f8b\u5b50\u3002<\/p>\n<h2>Sorting \u4e0e Greedy\uff1a\u5148\u6392\u5e8f\uff0c\u518d\u505a\u5c40\u90e8\u9009\u62e9<\/h2>\n<p>Greedy \u9898\u4e0d\u53ea\u662f\u201c\u770b\u8d77\u6765\u987a\u624b\u5c31\u8fd9\u6837\u505a\u201d\u3002\u771f\u6b63\u7684\u91cd\u70b9\u662f\uff1a\u4e3a\u4ec0\u4e48\u8fd9\u4e2a\u5c40\u90e8\u9009\u62e9\u4e0d\u4f1a\u7834\u574f\u6700\u4f18\u7b54\u6848\uff1f<\/p>\n<div class=\"ati-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>DSA \u70b9<\/th>\n<th>\u6982\u8981<\/th>\n<th>\u5178\u578b\u5386\u53f2\u8003\u9898<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Sorting<\/td>\n<td>\u5148\u628a\u6570\u636e\u6392\u6210\u5bb9\u6613\u6bd4\u8f83\u7684\u987a\u5e8f<\/td>\n<td>CCC 2016 J5\/S2 Tandem Bicycle<\/td>\n<\/tr>\n<tr>\n<td>Greedy selection<\/td>\n<td>\u6bcf\u6b21\u9009\u62e9\u5f53\u524d\u6700\u5408\u9002\u7684\u5143\u7d20<\/td>\n<td>CCC 2013 J4 Time on Task<\/td>\n<\/tr>\n<tr>\n<td>Greedy assignment<\/td>\n<td>\u628a\u8d44\u6e90\u5206\u914d\u7ed9\u80fd\u63a5\u53d7\u5b83\u7684\u6700\u5927\/\u6700\u5c0f\u4f4d\u7f6e<\/td>\n<td>CCC 2015 S3 Gates<\/td>\n<\/tr>\n<tr>\n<td>Greedy construction<\/td>\n<td>\u6784\u9020\u4e00\u4e2a\u6ee1\u8db3\u6761\u4ef6\u7684\u8f93\u51fa<\/td>\n<td>CCC 2017 S2 High Tide, Low Tide<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Tandem Bicycle \u662f Junior\/Senior \u4e4b\u95f4\u5f88\u597d\u7684\u4f8b\u5b50\uff1a\u6392\u5e8f\u540e\u914d\u5bf9\uff0c\u6700\u5927\u901f\u5ea6\u6216\u6700\u5c0f\u901f\u5ea6\u7684\u7b56\u7565\u5c31\u6e05\u695a\u4e86\u3002Gates \u5219\u8fdb\u4e00\u6b65\u5f15\u51fa DSU\uff0c\u56e0\u4e3a\u6bcf\u6b21\u627e\u53ef\u7528 gate \u4e0d\u80fd\u7ebf\u6027\u626b\u63cf\u3002<\/p>\n<h2>Graph Search\uff1a\u4ece grid \u5230 graph<\/h2>\n<p>\u5f88\u591a\u5b66\u751f\u7b2c\u4e00\u6b21\u542c\u5230 graph \u4f1a\u89c9\u5f97\u62bd\u8c61\u3002\u5176\u5b9e\u5728 CCC \u4e2d\uff0cgraph \u901a\u5e38\u6765\u81ea\u4e09\u79cd\u4e1c\u897f\uff1agrid \u76f8\u90bb\u5173\u7cfb\u3001\u9875\u9762\/\u8282\u70b9\u8fde\u63a5\u5173\u7cfb\u3001\u72b6\u6001\u8f6c\u79fb\u5173\u7cfb\u3002<\/p>\n<div class=\"ati-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>DSA \u70b9<\/th>\n<th>\u6982\u8981<\/th>\n<th>\u5178\u578b\u5386\u53f2\u8003\u9898<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>DFS \/ BFS reachability<\/td>\n<td>\u5224\u65ad\u80fd\u4e0d\u80fd\u4ece A \u5230 B<\/td>\n<td>CCC 2018 J5 Choose Your Own Adventure, CCC 2013 S4 Who is Taller<\/td>\n<\/tr>\n<tr>\n<td>Flood fill<\/td>\n<td>\u627e\u51fa\u4ece\u8d77\u70b9\u53ef\u8fbe\u7684\u4e00\u6574\u7247\u533a\u57df<\/td>\n<td>CCC 2024 J5 Harvest Waterloo<\/td>\n<\/tr>\n<tr>\n<td>Grid BFS<\/td>\n<td>\u5728 grid \u4e0a\u505a\u6700\u77ed\u8def\u6216\u53ef\u8fbe\u6027<\/td>\n<td>CCC 2018 S3 RoboThieves<\/td>\n<\/tr>\n<tr>\n<td>Implicit graph<\/td>\n<td>\u8fb9\u4e0d\u76f4\u63a5\u7ed9\u51fa\uff0c\u9700\u8981\u7531\u89c4\u5219\u751f\u6210<\/td>\n<td>CCC 2020 J5\/S2 Escape Room<\/td>\n<\/tr>\n<tr>\n<td>Multi-source BFS<\/td>\n<td>\u4ece\u591a\u4e2a\u8d77\u70b9\u540c\u65f6\u6269\u6563<\/td>\n<td>Senior grid graph topics<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Escape Room \u662f\u5f88\u597d\u7684\u6865\u6881\u9898\u3002\u5b83\u4e0d\u662f\u56db\u65b9\u5411\u8d70 grid\uff0c\u800c\u662f\u4ece\u683c\u5b50\u91cc\u7684\u6570\u5b57\u8df3\u5230\u6ee1\u8db3\u4e58\u79ef\u5173\u7cfb\u7684\u4f4d\u7f6e\u3002\u5b66\u751f\u4f1a\u770b\u5230\uff1agraph \u4e0d\u4e00\u5b9a\u662f\u9898\u76ee\u76f4\u63a5\u7ed9\u7684\uff0c\u6709\u65f6\u8981\u81ea\u5df1\u5efa\u6a21\u3002<\/p>\n<h2>Binary Search on Answer<\/h2>\n<p>Senior S3\/S4 \u7ecf\u5e38\u51fa\u73b0\u4e00\u79cd\u9898\u578b\uff1a\u7b54\u6848\u672c\u8eab\u4e0d\u662f\u76f4\u63a5\u7b97\u51fa\u6765\u7684\uff0c\u4f46\u53ef\u4ee5\u731c\u4e00\u4e2a\u7b54\u6848\uff0c\u518d\u5224\u65ad\u5b83\u662f\u5426\u53ef\u884c\u3002<\/p>\n<div class=\"ati-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>DSA \u70b9<\/th>\n<th>\u6982\u8981<\/th>\n<th>\u5178\u578b\u5386\u53f2\u8003\u9898<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Binary search<\/td>\n<td>\u5728\u6709\u5e8f\u8303\u56f4\u4e2d\u67e5\u627e\u76ee\u6807<\/td>\n<td>\u57fa\u7840\u8bed\u8a00\u4e0e\u6570\u7ec4\u8bad\u7ec3<\/td>\n<\/tr>\n<tr>\n<td>Binary search on answer<\/td>\n<td>\u731c\u7b54\u6848\uff0c\u518d\u5199 feasibility check<\/td>\n<td>CCC 2010 S3 Firehose<\/td>\n<\/tr>\n<tr>\n<td>Convex \/ unimodal reasoning<\/td>\n<td>\u6839\u636e\u4ee3\u4ef7\u51fd\u6570\u7ed3\u6784\u5bfb\u627e\u6700\u4f18\u70b9<\/td>\n<td>CCC 2021 S3 Lunch Concert<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u8fd9\u7c7b\u9898\u7684\u5173\u952e\u662f\u628a\u95ee\u9898\u62c6\u6210\u4e24\u5c42\uff1a<\/p>\n<pre><code class=\"language-text\">Can we do it with answer = X?<\/code><\/pre>\n<p>\u5982\u679c <code>X<\/code> \u53ef\u884c\uff0c\u66f4\u5927\u7684\u6216\u66f4\u5c0f\u7684\u8303\u56f4\u4e5f\u6709\u660e\u786e\u65b9\u5411\uff0c\u5c31\u53ef\u4ee5 binary search\u3002<\/p>\n<h2>DSU \u4e0e MST\uff1a\u7ef4\u62a4\u8fde\u901a\u6027<\/h2>\n<p>Disjoint Set Union \u662f Senior \u56fe\u8bba\u4e2d\u975e\u5e38\u5e38\u89c1\u7684\u6570\u636e\u7ed3\u6784\u3002\u5b83\u64c5\u957f\u56de\u7b54\uff1a\u201c\u4e24\u4e2a\u70b9\u662f\u5426\u5df2\u7ecf\u5728\u540c\u4e00\u4e2a\u8fde\u901a\u5757\u91cc\uff1f\u201d\u4ee5\u53ca\u201c\u5408\u5e76\u4e24\u4e2a\u8fde\u901a\u5757\u201d\u3002<\/p>\n<div class=\"ati-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>DSA \u70b9<\/th>\n<th>\u6982\u8981<\/th>\n<th>\u5178\u578b\u5386\u53f2\u8003\u9898<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>DSU find\/union<\/td>\n<td>\u5feb\u901f\u7ef4\u62a4\u8fde\u901a\u5757<\/td>\n<td>CCC 2015 S3 Gates<\/td>\n<\/tr>\n<tr>\n<td>Kruskal MST<\/td>\n<td>\u6309\u8fb9\u6743\u6392\u5e8f\uff0c\u9010\u6b65\u8fde\u63a5\u7ec4\u4ef6<\/td>\n<td>CCC 2010 S4 Animal Farm<\/td>\n<\/tr>\n<tr>\n<td>MST-style processing<\/td>\n<td>\u5206\u7ec4\u8fb9\u3001\u5224\u65ad\u8fde\u901a\u6027\u3001\u5904\u7406\u6210\u672c<\/td>\n<td>CCC 2023 S4 Minimum Cost Roads<\/td>\n<\/tr>\n<tr>\n<td>Partial scoring strategy<\/td>\n<td>\u5148\u5199\u80fd\u62ff\u90e8\u5206\u5206\u7684\u6a21\u578b<\/td>\n<td>CCC 2017 S4 Minimum Cost Flow<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>DSU \u7684\u96be\u70b9\u4e0d\u662f\u4ee3\u7801\u5f88\u957f\uff0c\u800c\u662f\u8bc6\u522b\u573a\u666f\uff1a\u5f53\u9898\u76ee\u4e0d\u65ad\u5408\u5e76\u5173\u7cfb\u3001\u68c0\u67e5\u53ef\u7528\u4f4d\u7f6e\u6216\u5efa\u7acb\u6700\u5c0f\u8fde\u63a5\u7ed3\u6784\u65f6\uff0c\u5c31\u5e94\u8be5\u60f3\u5230 components\u3002<\/p>\n<h2>Weighted Shortest Paths \u4e0e State Graph<\/h2>\n<p>\u5f53\u8fb9\u6709\u4e0d\u540c\u4ee3\u4ef7\uff0c\u666e\u901a BFS \u5c31\u4e0d\u591f\u4e86\u3002Senior S4 \u5e38\u5e38\u8981\u6c42 Dijkstra\uff0c\u751a\u81f3\u8981\u6c42\u628a\u72b6\u6001\u6269\u5c55\u6210 <code>(node, extra_state)<\/code>\u3002<\/p>\n<div class=\"ati-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>DSA \u70b9<\/th>\n<th>\u6982\u8981<\/th>\n<th>\u5178\u578b\u5386\u53f2\u8003\u9898<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Dijkstra<\/td>\n<td>\u8fb9\u6743\u975e\u8d1f\u7684\u6700\u77ed\u8def<\/td>\n<td>CCC 2009 S4 Shop and Ship<\/td>\n<\/tr>\n<tr>\n<td>Expanded state graph<\/td>\n<td>\u8282\u70b9\u4e0d\u53ea\u662f\u4f4d\u7f6e\uff0c\u8fd8\u5305\u542b\u989d\u5916\u72b6\u6001<\/td>\n<td>CCC 2015 S4 Convex Hull, CCC 2025 S4 Floor Is Lava<\/td>\n<\/tr>\n<tr>\n<td>0-1 BFS<\/td>\n<td>\u8fb9\u6743\u53ea\u6709 0 \u548c 1 \u7684\u7279\u6b8a\u6700\u77ed\u8def<\/td>\n<td>Senior grid graph topics<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>State graph \u662f Senior \u96be\u70b9\u4e4b\u4e00\u3002\u5b66\u751f\u8981\u5b66\u4f1a\u95ee\uff1a\u5982\u679c\u53ea\u7528\u4f4d\u7f6e\u505a node\uff0c\u4fe1\u606f\u591f\u4e0d\u591f\uff1f\u5982\u679c\u4e0d\u591f\uff0c\u5c31\u628a\u989d\u5916\u6761\u4ef6\u52a0\u5165 state\u3002<\/p>\n<h2>Dynamic Programming\uff1astate\u3001transition\u3001order<\/h2>\n<p>DP \u662f CCC Senior \u7684\u6838\u5fc3\u4e4b\u4e00\uff0c\u4f46\u4e0d\u8981\u4e00\u4e0a\u6765\u80cc\u6a21\u677f\u3002\u5148\u95ee\u4e09\u4e2a\u95ee\u9898\uff1a<\/p>\n<ol>\n<li><code>state<\/code> \u8868\u793a\u4ec0\u4e48\uff1f<\/li>\n<li><code>transition<\/code> \u4ece\u54ea\u91cc\u6765\uff1f<\/li>\n<li>\u8ba1\u7b97\u987a\u5e8f\u5982\u4f55\u4fdd\u8bc1\u4f9d\u8d56\u5df2\u7ecf\u5b8c\u6210\uff1f<\/li>\n<\/ol>\n<div class=\"ati-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>DSA \u70b9<\/th>\n<th>\u6982\u8981<\/th>\n<th>\u5178\u578b\u5386\u53f2\u8003\u9898<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Memoization<\/td>\n<td>\u9012\u5f52\u641c\u7d22\u4e2d\u4fdd\u5b58\u7ed3\u679c<\/td>\n<td>CCC 2015 J5 Pi Day<\/td>\n<\/tr>\n<tr>\n<td>Grid DP<\/td>\n<td>\u4ece\u76f8\u90bb\u4f4d\u7f6e\u8f6c\u79fb<\/td>\n<td>CCC 2025 J5 Connecting Territories, CCC 2012 S5 Mouse Journey<\/td>\n<\/tr>\n<tr>\n<td>DAG DP<\/td>\n<td>\u6309\u4f9d\u8d56\u65b9\u5411\u7d2f\u8ba1\u7b54\u6848<\/td>\n<td>CCC 2007 S4 Waterpark<\/td>\n<\/tr>\n<tr>\n<td>Interval DP<\/td>\n<td>\u5bf9\u533a\u95f4\u957f\u5ea6\u4ece\u5c0f\u5230\u5927\u8f6c\u79fb<\/td>\n<td>CCC 2016 S4 Combining Riceballs<\/td>\n<\/tr>\n<tr>\n<td>Rolling array<\/td>\n<td>\u53ea\u4fdd\u7559\u5fc5\u8981\u5c42\uff0c\u964d\u4f4e\u7a7a\u95f4<\/td>\n<td>CCC 2025 J5 Connecting Territories<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Connecting Territories \u662f\u5f88\u597d\u7684 DP \u5165\u95e8\u9898\uff1a\u6bcf\u4e00\u884c\u53ea\u4f9d\u8d56\u4e0a\u4e00\u884c\uff0c\u6240\u4ee5\u53ef\u4ee5\u7528 rolling array\u3002Combining Riceballs \u5219\u8fdb\u5165\u66f4\u5178\u578b\u7684 interval DP\u3002<\/p>\n<h2>Constructive\u3001Constraint Propagation \u4e0e Search<\/h2>\n<p>\u6709\u4e9b Senior \u9898\u4e0d\u662f\u6807\u51c6 graph \u6216 DP\uff0c\u800c\u662f\u9700\u8981\u5148\u5206\u6790\u9650\u5236\uff0c\u518d\u6784\u9020\u7b54\u6848\u6216\u7f29\u5c0f\u641c\u7d22\u7a7a\u95f4\u3002<\/p>\n<div class=\"ati-table-wrap\">\n<table>\n<thead>\n<tr>\n<th>DSA \u70b9<\/th>\n<th>\u6982\u8981<\/th>\n<th>\u5178\u578b\u5386\u53f2\u8003\u9898<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Brute force with pruning<\/td>\n<td>\u679a\u4e3e\u53ef\u884c\u72b6\u6001\uff0c\u4f46\u53ca\u65f6\u526a\u679d<\/td>\n<td>CCC 2013 J5 Chances of Winning<\/td>\n<\/tr>\n<tr>\n<td>State-space search<\/td>\n<td>\u628a\u6bcf\u4e2a\u5c40\u9762\u5f53\u6210 state<\/td>\n<td>CCC 2015 J5 Rule of Three<\/td>\n<\/tr>\n<tr>\n<td>Constraint propagation<\/td>\n<td>\u6839\u636e\u9650\u5236\u9010\u6b65\u63a8\u5bfc\u672a\u77e5\u91cf<\/td>\n<td>CCC 2019 S3 Arithmetic Square<\/td>\n<\/tr>\n<tr>\n<td>Constructive algorithms<\/td>\n<td>\u76f4\u63a5\u6784\u9020\u6ee1\u8db3\u6761\u4ef6\u7684\u7b54\u6848<\/td>\n<td>CCC 2023 S3 Palindromic Poster, CCC 2024 S3 Swipe<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u8fd9\u4e00\u7c7b\u9898\u5f88\u8003\u201c\u8bfb\u9898\u540e\u7684\u7b2c\u4e00\u6b65\u201d\u3002\u5982\u679c\u76f4\u63a5\u5199\u4ee3\u7801\uff0c\u5f88\u5bb9\u6613\u9677\u5165\u590d\u6742\u5206\u652f\uff1b\u5982\u679c\u5148\u627e\u7ea6\u675f\uff0c\u9898\u76ee\u5f80\u5f80\u4f1a\u53d8\u6e05\u695a\u3002<\/p>\n<h2>\u4e00\u6761\u63a8\u8350\u5b66\u4e60\u8def\u7ebf<\/h2>\n<p>\u5982\u679c\u5b66\u751f\u4ece Junior \u8d70\u5411 Senior\uff0c\u53ef\u4ee5\u6309\u8fd9\u4e2a\u987a\u5e8f\u590d\u4e60\uff1a<\/p>\n<ol>\n<li>Simulation and edge cases<\/li>\n<li>Strings and parsing<\/li>\n<li>Arrays, lists, and grids<\/li>\n<li>Frequency counting, sets, parity<\/li>\n<li>Prefix sums and sliding window<\/li>\n<li>Sorting and greedy reasoning<\/li>\n<li>DFS\/BFS, flood fill, graph representation<\/li>\n<li>Binary search on answer<\/li>\n<li>DSU and MST<\/li>\n<li>Dijkstra and state graphs<\/li>\n<li>Dynamic programming<\/li>\n<li>Constructive search and constraint propagation<\/li>\n<\/ol>\n<p>\u8fd9\u4e2a\u987a\u5e8f\u4e0d\u662f\u7edd\u5bf9\u7684\u3002\u66f4\u5b9e\u9645\u7684\u505a\u6cd5\u662f\uff1a\u6bcf\u5b66\u4e00\u4e2a\u77e5\u8bc6\u70b9\uff0c\u5c31\u914d 2-4 \u9053\u5386\u53f2\u9898\u3002\u5148\u770b\u4e00\u4e2a\u8bb2\u89e3\uff0c\u518d\u72ec\u7acb\u505a\u4e00\u9053\u76f8\u4f3c\u9898\uff0c\u6700\u540e\u590d\u76d8\u9519\u56e0\u3002<\/p>\n<h2>\u5e38\u89c1\u8bef\u533a<\/h2>\n<ol>\n<li>\u53ea\u6309\u5e74\u4efd\u5237\u9898\uff0c\u4e0d\u6309 DSA \u6a21\u578b\u590d\u76d8\u3002<\/li>\n<li>\u53ea\u770b\u61c2\u9898\u89e3\uff0c\u4e0d\u91cd\u5199\u4ee3\u7801\u3002<\/li>\n<li>\u5b66\u4e86 BFS\uff0c\u4f46\u4e0d\u77e5\u9053\u4ec0\u4e48\u65f6\u5019\u9898\u76ee\u5176\u5b9e\u662f graph\u3002<\/li>\n<li>\u5b66\u4e86 DP\uff0c\u4f46\u6bcf\u9053\u9898\u90fd\u60f3\u5957\u540c\u4e00\u4e2a\u6a21\u677f\u3002<\/li>\n<li>\u5ffd\u7565 constraints\uff0c\u5bfc\u81f4\u7b97\u6cd5\u590d\u6742\u5ea6\u9009\u9519\u3002<\/li>\n<li>\u4e0d\u603b\u7ed3\u9519\u9898\u7c7b\u578b\uff1a\u8bfb\u9898\u9519\u3001\u8fb9\u754c\u9519\u3001\u72b6\u6001\u5b9a\u4e49\u9519\u3001\u590d\u6742\u5ea6\u9519\uff0c\u662f\u5b8c\u5168\u4e0d\u540c\u7684\u95ee\u9898\u3002<\/li>\n<\/ol>\n<h2>\u590d\u4e60\u95ee\u9898<\/h2>\n<ol>\n<li>Junior J4\/J5 \u6700\u5e38\u89c1\u7684 DSA \u6a21\u578b\u6709\u54ea\u4e9b\uff1f<\/li>\n<li>\u4e3a\u4ec0\u4e48 grid \u9898\u7ecf\u5e38\u53ef\u4ee5\u8f6c\u6210 graph search\uff1f<\/li>\n<li>Prefix sum \u548c sliding window \u7684\u533a\u522b\u662f\u4ec0\u4e48\uff1f<\/li>\n<li>\u4ec0\u4e48\u60c5\u51b5\u4e0b\u5e94\u8be5\u60f3\u5230 DSU\uff1f<\/li>\n<li>Dynamic programming \u7684\u4e09\u4e2a\u6838\u5fc3\u95ee\u9898\u662f\u4ec0\u4e48\uff1f<\/li>\n<li>\u5982\u679c\u4e00\u9053\u9898\u7684\u8f93\u5165\u89c4\u6a21\u662f <code>N = 500000<\/code>\uff0c\u4f60\u4f1a\u9996\u5148\u6392\u9664\u54ea\u4e9b\u7b97\u6cd5\uff1f<\/li>\n<\/ol>\n<\/article>\n<\/div>\n<section class=\"ati-feedback-cta ati-lang-en\" data-ati-feedback>\n<div class=\"ati-feedback-copy\">\n<p class=\"ati-feedback-title\">Questions or feedback?<\/p>\n<p class=\"ati-feedback-note\">Have a question about this article or want to suggest an improvement? Send us a private message.<\/p>\n<\/p><\/div>\n<p>  <a class=\"ati-feedback-button\" href=\"\/contact\/\" data-ati-feedback-link>Send Feedback<\/a><br \/>\n<\/section>\n<section class=\"ati-feedback-cta ati-lang-zh\" data-ati-feedback>\n<div class=\"ati-feedback-copy\">\n<p class=\"ati-feedback-title\">\u6709\u95ee\u9898\u6216\u5efa\u8bae\uff1f<\/p>\n<p class=\"ati-feedback-note\">\u5982\u679c\u4f60\u5bf9\u672c\u6587\u6709\u7591\u95ee\uff0c\u6216\u5e0c\u671b\u63d0\u51fa\u6539\u8fdb\u5efa\u8bae\uff0c\u8bf7\u7ed9\u6211\u4eec\u53d1\u9001\u79c1\u5bc6\u7559\u8a00\u3002<\/p>\n<\/p><\/div>\n<p>  <a class=\"ati-feedback-button\" href=\"\/zh_cn\/contact\/\" data-ati-feedback-link>\u53d1\u9001\u53cd\u9988<\/a><br \/>\n<\/section>\n<div class=\"ati-article-back ati-lang-en\">\n  <a href=\"\/cp-weekly-challenge\/\">Back to CP Weekly Challenge<\/a>\n<\/div>\n<div class=\"ati-article-back ati-lang-zh\">\n  <a href=\"\/zh_cn\/cp-weekly-challenge\/\">\u8fd4\u56de CP Weekly Challenge<\/a>\n<\/div>\n<\/article>\n<\/section>\n<p>    <\/main><\/p>\n<footer class=\"ati-footer\">\n      <a class=\"ati-brand ati-logo\" href=\"\/\" aria-label=\"Accel Thinking home\"><img loading=\"lazy\" decoding=\"async\" loading=\"lazy\" height=\"63\" width=\"366\" loading=\"eager\" src=\"https:\/\/i0.wp.com\/accelthinking.com\/wp-content\/uploads\/2026\/06\/logo-dark-cropped-51.png?w=480&#038;quality=85&#038;ssl=1\" alt=\"Accel Thinking\"><\/a><\/p>\n<nav><a class=\"\" href=\"https:\/\/accelthinking.com\/\">Home<\/a><a class=\"\" href=\"https:\/\/accelthinking.com\/northstar\/\">NorthStar<\/a><a class=\"\" href=\"https:\/\/accelthinking.com\/learning\/\">Learning<\/a><a class=\"active\" href=\"https:\/\/accelthinking.com\/resources\/\">Resources<\/a><a class=\"\" href=\"https:\/\/accelthinking.com\/about\/\">About<\/a><a class=\"\" href=\"https:\/\/accelthinking.com\/contact\/\">Contact<\/a><a class=\"\" href=\"https:\/\/accelthinking.com\/privacy-policy\/\">Privacy Policy<\/a><a class=\"\" href=\"https:\/\/accelthinking.com\/terms-and-conditions\/\">Terms &#038; Conditions<\/a><\/nav>\n<address><a href=\"mailto:info@accelthinking.com\">info@accelthinking.com<\/a><a href=\"tel:+18556265066\">Toll-free: 1-855-626-5066<\/a><span>Oakville, Ontario, Canada<\/span><\/address>\n<\/footer><\/div>\n<p><script>\n(function(){\n  if (!location.pathname.toLowerCase().includes('\/zh_cn')) return;\n  const map = {\"Home\": \"\u9996\u9875\", \"Solutions\": \"\u89e3\u51b3\u65b9\u6848\", \"CP Academy\": \"CP \u5b66\u9662\", \"Python Assessment\": \"Python \u7f16\u7a0b\u80fd\u529b\u8bc4\u4f30\", \"IT Consulting\": \"IT \u54a8\u8be2\", \"About\": \"\u5173\u4e8e\u6211\u4eec\", \"Contact\": \"\u8054\u7cfb\u6211\u4eec\", \"Accel Thinking\": \"\u52a0\u901f\u5ea6\u601d\u7ef4\", \"Partner With Us\": \"\u6210\u4e3a\u5408\u4f5c\u4f19\u4f34\", \"Close\": \"\u5173\u95ed\", \"Competitive Programming Education & Technology Consulting\": \"\u7ade\u8d5b\u7f16\u7a0b\u6559\u80b2\u4e0e\u6280\u672f\u54a8\u8be2\", \"Technology Education Solutions for Future Innovators\": \"\u9762\u5411\u672a\u6765\u521b\u65b0\u8005\u7684\u79d1\u6280\u6559\u80b2\u89e3\u51b3\u65b9\u6848\", \"for Future Innovators\": \"\u9762\u5411\u672a\u6765\u521b\u65b0\u8005\", \"Curriculum. Instructors. Delivery.\": \"\u8bfe\u7a0b\u4f53\u7cfb\u3002\u6559\u5e08\u56e2\u961f\u3002\u4ea4\u4ed8\u652f\u6301\u3002\", \"Helping educational organizations deliver engaging competitive programming programs and helping businesses make informed technology decisions.\": \"\u5e2e\u52a9\u6559\u80b2\u673a\u6784\u4ea4\u4ed8\u6709\u5438\u5f15\u529b\u7684\u7ade\u8d5b\u7f16\u7a0b\u8bfe\u7a0b\uff0c\u5e76\u5e2e\u52a9\u4f01\u4e1a\u505a\u51fa\u66f4\u660e\u667a\u7684\u6280\u672f\u51b3\u7b56\u3002\", \"Explore Solutions\": \"\u63a2\u7d22\u89e3\u51b3\u65b9\u6848\", \"Explore CP Academy\": \"\u63a2\u7d22 CP \u5b66\u9662\", \"Complete programs with curriculum, instructors, materials, assessments, and delivery support.\": \"\u5b8c\u6574\u8bfe\u7a0b\u65b9\u6848\uff0c\u5305\u542b\u8bfe\u7a0b\u4f53\u7cfb\u3001\u6559\u5e08\u3001\u6750\u6599\u3001\u8bc4\u4f30\u4e0e\u4ea4\u4ed8\u652f\u6301\u3002\", \"Structured competitive programming pathways and CCC preparation for students aged 12-16.\": \"\u9762\u5411 12-16 \u5c81\u5b66\u751f\u7684\u7ed3\u6784\u5316\u7ade\u8d5b\u7f16\u7a0b\u8def\u5f84\u4e0e CCC \u5907\u8003\u3002\", \".NET, React, architecture review, and AI adoption consulting for modern software teams.\": \"\u4e3a\u73b0\u4ee3\u8f6f\u4ef6\u56e2\u961f\u63d0\u4f9b .NET\u3001React\u3001\u67b6\u6784\u8bc4\u5ba1\u4e0e AI \u5e94\u7528\u54a8\u8be2\u3002\", \"Learn More\": \"\u4e86\u89e3\u66f4\u591a\", \"Why Accel Thinking\": \"\u4e3a\u4ec0\u4e48\u9009\u62e9\u52a0\u901f\u5ea6\u601d\u7ef4\", \"Beyond Coding Lessons\": \"\u4e0d\u53ea\u662f\u7f16\u7a0b\u8bfe\", \"Problem Solving Skills\": \"\u95ee\u9898\u89e3\u51b3\u80fd\u529b\", \"Algorithmic Thinking\": \"\u7b97\u6cd5\u601d\u7ef4\", \"Confidence & Communication\": \"\u81ea\u4fe1\u4e0e\u6c9f\u901a\", \"Engineering Mindset\": \"\u5de5\u7a0b\u601d\u7ef4\", \"CP Academy Pathway\": \"CP \u5b66\u9662\u5b66\u4e60\u8def\u5f84\", \"From foundation programming to CCC Senior readiness.\": \"\u4ece\u7f16\u7a0b\u57fa\u7840\u5230 CCC\u9ad8\u7ea7\u5907\u8003\u3002\", \"View Learning Pathway\": \"\u67e5\u770b\u5b66\u4e60\u8def\u5f84\", \"Latest CP Weekly Challenge\": \"\u6700\u65b0 CP \u6bcf\u5468\u6311\u6218\", \"Weekly articles built for search, practice, and long-term authority.\": \"\u9762\u5411\u641c\u7d22\u3001\u7ec3\u4e60\u548c\u957f\u671f\u5185\u5bb9\u79ef\u7d2f\u7684\u6bcf\u5468\u6587\u7ae0\u3002\", \"CCC 2024 J3 - Solution & Analysis\": \"CCC 2024 J3 - \u89e3\u9898\u4e0e\u5206\u6790\", \"CCC 2024 J3 \u2013 Solution & Analysis\": \"CCC 2024 J3 - \u89e3\u9898\u4e0e\u5206\u6790\", \"CCC 2023 S1 - Solution & Analysis\": \"CCC 2023 S1 - \u89e3\u9898\u4e0e\u5206\u6790\", \"CCC 2023 S1 \u2013 Solution & Analysis\": \"CCC 2023 S1 - \u89e3\u9898\u4e0e\u5206\u6790\", \"CCC 2022 J5 - Solution & Analysis\": \"CCC 2022 J5 - \u89e3\u9898\u4e0e\u5206\u6790\", \"CCC 2022 J5 \u2013 Solution & Analysis\": \"CCC 2022 J5 - \u89e3\u9898\u4e0e\u5206\u6790\", \"Topics: Simulation | Difficulty: 3\/5\": \"\u4e3b\u9898\uff1a\u6a21\u62df | \u96be\u5ea6\uff1a3\/5\", \"Topics: Ad Hoc | Difficulty: 3\/5\": \"\u4e3b\u9898\uff1a\u4e34\u573a\u601d\u7ef4 | \u96be\u5ea6\uff1a3\/5\", \"Topics: Graph | Difficulty: 4\/5\": \"\u4e3b\u9898\uff1a\u56fe\u8bba | \u96be\u5ea6\uff1a4\/5\", \"View All Challenges\": \"\u67e5\u770b\u6240\u6709\u6311\u6218\", \"Programs that learning centers, schools, and community organizations can launch with confidence.\": \"\u8ba9\u5b66\u4e60\u4e2d\u5fc3\u3001\u5b66\u6821\u548c\u793e\u533a\u7ec4\u7ec7\u80fd\u591f\u653e\u5fc3\u542f\u52a8\u7684\u8bfe\u7a0b\u9879\u76ee\u3002\", \"Delivery Models\": \"\u6388\u8bfe\u6a21\u5f0f\", \"Online, in-person, and hybrid programs designed for flexible operations.\": \"\u652f\u6301\u7ebf\u4e0a\u3001\u7ebf\u4e0b\u548c\u6df7\u5408\u6388\u8bfe\uff0c\u9002\u914d\u7075\u6d3b\u8fd0\u8425\u3002\", \"Partner Audience\": \"\u5408\u4f5c\u5bf9\u8c61\", \"Learning centers, private academies, schools, and community organizations.\": \"\u5b66\u4e60\u4e2d\u5fc3\u3001\u79c1\u7acb\u57f9\u8bad\u673a\u6784\u3001\u5b66\u6821\u548c\u793e\u533a\u7ec4\u7ec7\u3002\", \"Practical technology consulting for modern software teams.\": \"\u9762\u5411\u73b0\u4ee3\u8f6f\u4ef6\u56e2\u961f\u7684\u5b9e\u7528\u6280\u672f\u54a8\u8be2\u3002\", \"Independent guidance for teams that need better architecture decisions, clearer delivery paths, or a grounded AI adoption strategy.\": \"\u4e3a\u9700\u8981\u66f4\u597d\u67b6\u6784\u51b3\u7b56\u3001\u66f4\u6e05\u6670\u4ea4\u4ed8\u8def\u5f84\u6216\u52a1\u5b9e AI \u7b56\u7565\u7684\u56e2\u961f\u63d0\u4f9b\u72ec\u7acb\u6307\u5bfc\u3002\", \"Architecture\": \"\u67b6\u6784\", \"AI Adoption\": \"AI \u5e94\u7528\", \"AI evaluation, integration, automation, and business strategy.\": \"AI \u8bc4\u4f30\u3001\u96c6\u6210\u3001\u81ea\u52a8\u5316\u4e0e\u4e1a\u52a1\u7b56\u7565\u3002\", \"About Accel Thinking\": \"\u5173\u4e8e\u52a0\u901f\u5ea6\u601d\u7ef4\", \"Software Architect\": \"\u8f6f\u4ef6\u67b6\u6784\u5e08\", \"Technology Educator\": \"\u79d1\u6280\u6559\u80b2\u8005\", \"Curriculum Designer\": \"\u8bfe\u7a0b\u8bbe\u8ba1\u8005\", \"20+ Years Experience\": \"20+ \u5e74\u7ecf\u9a8c\", \"We work with learning centers, schools, and organizations to deliver high-quality technology programs.\": \"\u6211\u4eec\u4e0e\u5b66\u4e60\u4e2d\u5fc3\u3001\u5b66\u6821\u548c\u7ec4\u7ec7\u5408\u4f5c\uff0c\u4ea4\u4ed8\u9ad8\u8d28\u91cf\u79d1\u6280\u8bfe\u7a0b\u3002\", \"Let's Work Together\": \"\u4e00\u8d77\u5408\u4f5c\", \"Let\u2019s Work Together\": \"\u4e00\u8d77\u5408\u4f5c\", \"Years of Experience\": \"\u5e74\u7ecf\u9a8c\", \"Students Taught\": \"\u6559\u6388\u5b66\u751f\", \"Partner Organizations\": \"\u5408\u4f5c\u673a\u6784\", \"Weekly Challenges\": \"\u6bcf\u5468\u6311\u6218\", \"Educational Partnerships\": \"\u6559\u80b2\u5408\u4f5c\", \"Technology Education Solutions\": \"\u79d1\u6280\u6559\u80b2\u89e3\u51b3\u65b9\u6848\", \"Complete competitive programming and computer science programs for learning centers, schools, academies, and community organizations.\": \"\u4e3a\u5b66\u4e60\u4e2d\u5fc3\u3001\u5b66\u6821\u3001\u57f9\u8bad\u673a\u6784\u548c\u793e\u533a\u7ec4\u7ec7\u63d0\u4f9b\u5b8c\u6574\u7684\u7ade\u8d5b\u7f16\u7a0b\u4e0e\u8ba1\u7b97\u673a\u79d1\u5b66\u8bfe\u7a0b\u65b9\u6848\u3002\", \"Start a Partnership Inquiry\": \"\u53d1\u8d77\u5408\u4f5c\u54a8\u8be2\", \"Curriculum.\": \"\u8bfe\u7a0b\u4f53\u7cfb\u3002\", \"Instructors.\": \"\u6559\u5e08\u56e2\u961f\u3002\", \"Delivery.\": \"\u4ea4\u4ed8\u652f\u6301\u3002\", \"A partner-ready operating model for launching technology programs.\": \"\u9762\u5411\u5408\u4f5c\u4f19\u4f34\u7684\u79d1\u6280\u8bfe\u7a0b\u843d\u5730\u8fd0\u8425\u6a21\u5f0f\u3002\", \"Included Services\": \"\u670d\u52a1\u5185\u5bb9\", \"Curriculum, qualified instructors, teaching materials, assessments, and delivery support.\": \"\u8bfe\u7a0b\u63d0\u4f9b\uff0c\u8ba4\u8bc1\u6559\u5e08\uff0c\u6559\u6848\uff0c\u6559\u5b66\u8bc4\u4f30\uff0c\u4ea4\u4ed8\u652f\u6301\u3002\", \"Everything needed to deliver a structured, high-quality program.\": \"\u4ea4\u4ed8\u7ed3\u6784\u5316\u3001\u9ad8\u8d28\u91cf\u8bfe\u7a0b\u6240\u9700\u7684\u4e00\u5207\u652f\u6301\u3002\", \"Curriculum\": \"\u8bfe\u7a0b\u4f53\u7cfb\", \"Structured learning plans for Python, competitive programming, and CCC preparation.\": \"\u9762\u5411 Python \u548c C++\u3001\u7ade\u8d5b\u7f16\u7a0b\u548c CCC \u5907\u8003\u7684\u7ed3\u6784\u5316\u5b66\u4e60\u8ba1\u5212\u3002\", \"Structured learning plans for Python and C++, competitive programming, and CCC preparation.\": \"\u9762\u5411 Python \u548c C++\u3001\u7ade\u8d5b\u7f16\u7a0b\u548c CCC \u5907\u8003\u7684\u7ed3\u6784\u5316\u5b66\u4e60\u8ba1\u5212\u3002\", \"Qualified Instructors\": \"\u5408\u683c\u6559\u5e08\", \"Technology educators who understand programming, problem solving, and student confidence.\": \"\u7406\u89e3\u7f16\u7a0b\u3001\u95ee\u9898\u89e3\u51b3\u548c\u5b66\u751f\u4fe1\u5fc3\u57f9\u517b\u7684\u79d1\u6280\u6559\u80b2\u8005\u3002\", \"Teaching Materials\": \"\u6559\u5b66\u6750\u6599\", \"Lesson assets, examples, practice problems, and class-ready delivery support.\": \"\u8bfe\u7a0b\u8d44\u6e90\u3001\u793a\u4f8b\u3001\u7ec3\u4e60\u9898\u4ee5\u53ca\u53ef\u76f4\u63a5\u7528\u4e8e\u8bfe\u5802\u7684\u6559\u5b66\u652f\u6301\u3002\", \"Assessments\": \"\u5b66\u4e60\u8bc4\u4f30\", \"Milestone checks that track understanding, skills, and next-level readiness.\": \"\u901a\u8fc7\u9636\u6bb5\u6027\u68c0\u67e5\u8ddf\u8e2a\u7406\u89e3\u7a0b\u5ea6\u3001\u6280\u80fd\u6210\u957f\u548c\u8fdb\u9636\u51c6\u5907\u5ea6\u3002\", \"Delivery Support\": \"\u4ea4\u4ed8\u652f\u6301\", \"Online, in-person, and hybrid delivery models for different partner operations.\": \"\u652f\u6301\u7ebf\u4e0a\u3001\u7ebf\u4e0b\u548c\u6df7\u5408\u6388\u8bfe\uff0c\u9002\u914d\u4e0d\u540c\u5408\u4f5c\u673a\u6784\u7684\u8fd0\u8425\u65b9\u5f0f\u3002\", \"Program Areas\": \"\u8bfe\u7a0b\u65b9\u5411\", \"Python programming, competitive programming, and CCC preparation.\": \"Python \u548c C++ \u7f16\u7a0b\uff0c\u7ade\u8d5b\u7f16\u7a0b\uff0cCCC\u5907\u8d5b\u3002\", \"Python and C++ programming, competitive programming, and CCC preparation.\": \"Python \u548c C++ \u7f16\u7a0b\uff0c\u7ade\u8d5b\u7f16\u7a0b\uff0cCCC\u5907\u8d5b\u3002\", \"Built around durable skills.\": \"\u56f4\u7ed5\u957f\u671f\u53d7\u7528\u7684\u80fd\u529b\u6784\u5efa\u3002\", \"Programs help students build computational thinking, clear reasoning, and disciplined implementation habits.\": \"\u8bfe\u7a0b\u5e2e\u52a9\u5b66\u751f\u5efa\u7acb\u8ba1\u7b97\u601d\u7ef4\u3001\u6e05\u6670\u63a8\u7406\u80fd\u529b\u548c\u4e25\u8c28\u7684\u5b9e\u73b0\u4e60\u60ef\u3002\", \"Python Programming\": \"Python \u548c C++ \u7f16\u7a0b\", \"Python and C++ Programming\": \"Python \u548c C++ \u7f16\u7a0b\", \"Foundation syntax, control flow, data structures, and problem decomposition.\": \"\u57fa\u7840\u8bed\u6cd5\u3001\u6d41\u7a0b\u63a7\u5236\u3001\u6570\u636e\u7ed3\u6784\u4e0e\u95ee\u9898\u62c6\u89e3\u3002\", \"Competitive Programming\": \"\u7ade\u8d5b\u7f16\u7a0b\", \"Pattern recognition, algorithmic thinking, debugging, and time-aware practice.\": \"\u6a21\u5f0f\u8bc6\u522b\u3001\u7b97\u6cd5\u601d\u7ef4\u3001\u8c03\u8bd5\u80fd\u529b\u548c\u65f6\u95f4\u610f\u8bc6\u8bad\u7ec3\u3002\", \"CCC Preparation\": \"CCC \u5907\u8003\", \"Progressive preparation for CCC Junior and Senior question styles.\": \"\u9488\u5bf9 CCC \u521d\u7ea7\u548c\u9ad8\u7ea7\u9898\u578b\u7684\u5faa\u5e8f\u6e10\u8fdb\u5f0f\u8bad\u7ec3\u3002\", \"Students Aged 12-16\": \"\u9762\u5411 12-16 \u5c81\u5b66\u751f\", \"Competitive Programming & CCC Preparation\": \"\u7ade\u8d5b\u7f16\u7a0b\u4e0e CCC \u5907\u8003\", \"CP Academy helps students grow from foundation programming into confident, structured problem solvers.\": \"CP \u5b66\u9662\u5e2e\u52a9\u5b66\u751f\u4ece\u7f16\u7a0b\u57fa\u7840\u9010\u6b65\u6210\u957f\u4e3a\u81ea\u4fe1\u3001\u7ed3\u6784\u5316\u7684\u95ee\u9898\u89e3\u51b3\u8005\u3002\", \"Ask About CP Academy\": \"\u54a8\u8be2 CP \u5b66\u9662\", \"CP Weekly Challenge\": \"CP \u6bcf\u5468\u6311\u6218\", \"think -> solve -> implement -> review\": \"\u601d\u8003 -> \u6c42\u89e3 -> \u5b9e\u73b0 -> \u590d\u76d8\", \"View Challenges ->\": \"\u67e5\u770b\u6311\u6218 ->\", \"Learning Pathway\": \"\u5b66\u4e60\u8def\u5f84\", \"A clear progression from programming foundations to CCC Senior readiness.\": \"\u4ece\u7f16\u7a0b\u57fa\u7840\u5230 CCC\u9ad8\u7ea7\u5907\u8003\u7684\u6e05\u6670\u8fdb\u9636\u8def\u5f84\u3002\", \"Foundation Programming\": \"\u7f16\u7a0b\u57fa\u7840\", \"FoundationProgramming\": \"\u7f16\u7a0b\u57fa\u7840\", \"\u7f16\u7a0b\u57fa\u7840Programming\": \"\u7f16\u7a0b\u57fa\u7840\", \"Foundation\": \"\u7f16\u7a0b\u57fa\u7840\", \"Core Python and debugging habits.\": \"\u6838\u5fc3 Python \u548c C++ \u7f16\u7a0b\u80fd\u529b\u4e0e\u8c03\u8bd5\u4e60\u60ef\u3002\", \"Core Python and C++ programming and debugging habits.\": \"\u6838\u5fc3 Python \u548c C++ \u7f16\u7a0b\u80fd\u529b\u4e0e\u8c03\u8bd5\u4e60\u60ef\u3002\", \"CCC Junior J1-J2\": \"CCC Junior J1-J2\", \"CCC J30s\": \"CCC \u521d\u7ea730\u5206\", \"CCCJ30s\": \"CCC \u521d\u7ea730\u5206\", \"Careful reading, simulation, and short solutions.\": \"\u8ba4\u771f\u8bfb\u9898\u3001\u6a21\u62df\u8fc7\u7a0b\u548c\u77ed\u4ee3\u7801\u89e3\u6cd5\u3002\", \"CCC Junior J3-J4\": \"CCC Junior J3-J4\", \"CCC J60s\": \"CCC \u521d\u7ea760\u5206\", \"CCCJ60s\": \"CCC \u521d\u7ea760\u5206\", \"Multi-step logic and structured testing.\": \"\u591a\u6b65\u9aa4\u903b\u8f91\u4e0e\u7ed3\u6784\u5316\u6d4b\u8bd5\u3002\", \"CCC Junior J5\": \"CCC Junior J5\", \"CCC J75s\": \"CCC \u521d\u7ea7\u6ee1\u5206\", \"CCCJ75s\": \"CCC \u521d\u7ea7\u6ee1\u5206\", \"Search, recursion, and deeper reasoning.\": \"\u641c\u7d22\u3001\u9012\u5f52\u4e0e\u66f4\u6df1\u5165\u7684\u63a8\u7406\u3002\", \"CCC Senior S1-S4\": \"CCC Senior S1-S4\", \"CCC S45s\": \"CCC \u9ad8\u7ea745\u5206\", \"CCCS45s\": \"CCC \u9ad8\u7ea745\u5206\", \"Algorithmic patterns and complexity analysis.\": \"\u7b97\u6cd5\u6a21\u5f0f\u4e0e\u590d\u6742\u5ea6\u5206\u6790\u3002\", \"Benefits\": \"\u5b66\u4e60\u6536\u83b7\", \"Students build the mindset behind strong technical work.\": \"\u5b66\u751f\u5efa\u7acb\u624e\u5b9e\u6280\u672f\u80fd\u529b\u80cc\u540e\u7684\u601d\u7ef4\u65b9\u5f0f\u3002\", \"Problem Solving\": \"\u95ee\u9898\u89e3\u51b3\", \"Logical Thinking\": \"\u903b\u8f91\u601d\u7ef4\", \"Programming Skills\": \"\u7f16\u7a0b\u80fd\u529b\", \"University Readiness\": \"\u5927\u5b66\u51c6\u5907\", \"Confidence\": \"\u81ea\u4fe1\u8868\u8fbe\", \"Practice & Review\": \"\u7ec3\u4e60\u4e0e\u590d\u76d8\", \"Explore CP Weekly Challenge articles.\": \"\u67e5\u770b CP \u6bcf\u5468\u6311\u6218\u6587\u7ae0\u3002\", \"Weekly CCC-style problems with explanations, implementation notes, and learning outcomes.\": \"\u6bcf\u5468 CCC \u98ce\u683c\u9898\u76ee\uff0c\u5305\u542b\u8bb2\u89e3\u3001\u5b9e\u73b0\u8bf4\u660e\u548c\u5b66\u4e60\u76ee\u6807\u3002\", \"View Challenges\": \"\u67e5\u770b\u6311\u6218\", \"Placement Check\": \"\u80fd\u529b\u8bca\u65ad\", \"Assess your Python readiness before choosing a CP Academy pathway.\": \"\u5728\u9009\u62e9 CP \u5b66\u9662\u5b66\u4e60\u8def\u5f84\u524d\uff0c\u5148\u8bc4\u4f30\u81ea\u5df1\u7684 Python \u7f16\u7a0b\u57fa\u7840\u3002\", \"Start Python Assessment\": \"\u5f00\u59cb Python \u7f16\u7a0b\u80fd\u529b\u8bc4\u4f30\", \"Python readiness for CCC-style learning.\": \"\u9762\u5411 CCC \u5b66\u4e60\u7684 Python \u80fd\u529b\u8bca\u65ad\u3002\", \"Use a short multiple-choice quiz and a coding challenge to understand your current programming level before choosing a class path.\": \"\u901a\u8fc7\u7b80\u77ed\u9009\u62e9\u9898\u548c\u4ee3\u7801\u6311\u6218\uff0c\u4e86\u89e3\u5f53\u524d\u7f16\u7a0b\u6c34\u5e73\uff0c\u518d\u9009\u62e9\u5408\u9002\u7684\u8bfe\u7a0b\u8def\u5f84\u3002\", \"Start the Quiz\": \"\u5f00\u59cb\u6d4b\u8bc4\", \"Placement Assessment\": \"\u5206\u7ea7\u6d4b\u8bc4\", \"Section A\": \"A \u90e8\u5206\", \"Section B\": \"B \u90e8\u5206\", \"Section C\": \"C \u90e8\u5206\", \"Part 1: Multiple-Choice Check\": \"\u7b2c\u4e00\u90e8\u5206\uff1a\u9009\u62e9\u9898\u6d4b\u8bc4\", \"Answer these questions first. They focus on Python basics, control flow, data structures, and algorithmic thinking.\": \"\u5148\u5b8c\u6210\u8fd9\u4e9b\u9009\u62e9\u9898\uff0c\u5185\u5bb9\u8986\u76d6 Python \u57fa\u7840\u3001\u6d41\u7a0b\u63a7\u5236\u3001\u6570\u636e\u7ed3\u6784\u548c\u7b97\u6cd5\u601d\u7ef4\u3002\", \"Check My Score\": \"\u67e5\u770b\u6211\u7684\u5206\u6570\", \"Answer key: 1-B, 2-B, 3-C, 4-A, 5-B, 6-B, 7-B, 8-A.\": \"\u7b54\u6848\uff1a1-B\uff0c2-B\uff0c3-C\uff0c4-A\uff0c5-B\uff0c6-B\uff0c7-B\uff0c8-A\u3002\", \"0-3 correct: Foundation Programming\": \"\u7b54\u5bf9 0-3 \u9898\uff1a\u7f16\u7a0b\u57fa\u7840\", \"4-5 correct: CCC J30s\": \"\u7b54\u5bf9 4-5 \u9898\uff1aCCC \u521d\u7ea730\u5206\", \"6 correct: CCC J60s\": \"\u7b54\u5bf9 6 \u9898\uff1aCCC \u521d\u7ea760\u5206\", \"7 correct: CCC J75s\": \"\u7b54\u5bf9 7 \u9898\uff1aCCC \u521d\u7ea7\u6ee1\u5206\", \"8 correct: CCC S45s readiness\": \"\u7b54\u5bf9 8 \u9898\uff1a\u5177\u5907 CCC \u9ad8\u7ea745\u5206\u5b66\u4e60\u51c6\u5907\u5ea6\", \"Part 2: Coding Challenge\": \"\u7b2c\u4e8c\u90e8\u5206\uff1a\u4ee3\u7801\u6311\u6218\", \"Section B: Coding Fundamentals\": \"B \u90e8\u5206\uff1a\u7f16\u7a0b\u57fa\u7840\u4ee3\u7801\u9898\", \"Section C: CCC Similar Problems\": \"C \u90e8\u5206\uff1aCCC \u76f8\u4f3c\u9898\", \"These problems are reviewed with the rubric below. They measure input handling, core logic, output format, and code quality.\": \"\u8fd9\u4e9b\u9898\u76ee\u4f1a\u6309\u7167\u4e0b\u65b9\u8bc4\u5206\u6807\u51c6\u8bc4\u4f30\uff0c\u91cd\u70b9\u770b\u8f93\u5165\u5904\u7406\u3001\u6838\u5fc3\u903b\u8f91\u3001\u8f93\u51fa\u683c\u5f0f\u548c\u4ee3\u7801\u8d28\u91cf\u3002\", \"Sum of Even Numbers\": \"\u5076\u6570\u6c42\u548c\", \"Input n followed by n integers. Output the sum of even values.\": \"\u8f93\u5165 n\uff0c\u7136\u540e\u8f93\u5165 n \u4e2a\u6574\u6570\uff0c\u8f93\u51fa\u5176\u4e2d\u5076\u6570\u7684\u603b\u548c\u3002\", \"Read n, then n integers. Print the sum of all even numbers. Example: 5 and 10 3 20 7 8 -> 38.\": \"\u8bfb\u5165 n\uff0c\u7136\u540e\u8bfb\u5165 n \u4e2a\u6574\u6570\uff0c\u8f93\u51fa\u6240\u6709\u5076\u6570\u7684\u603b\u548c\u3002\u4f8b\u5982\uff1a5 \u548c 10 3 20 7 8 -> 38\u3002\", \"Write a program that reads an integer n, then reads n integers. Print the sum of all even numbers. Example input: 5 \/ 3 \/ 8 \/ 10 \/ 7 \/ 2. Example output: 20.\": \"\u7f16\u5199\u4e00\u4e2a\u7a0b\u5e8f\uff0c\u8bfb\u5165\u4e00\u4e2a\u6574\u6570 n\uff0c\u7136\u540e\u8bfb\u5165 n \u4e2a\u6574\u6570\u3002\u8f93\u51fa\u6240\u6709\u5076\u6570\u7684\u603b\u548c\u3002\u793a\u4f8b\u8f93\u5165\uff1a5 \/ 3 \/ 8 \/ 10 \/ 7 \/ 2\u3002\u793a\u4f8b\u8f93\u51fa\uff1a20\u3002\", \"Write a program that reads an integer n, then reads n integers. Print the sum of all even numbers. Write a program that reads an integer n, then reads n integers. Print the sum of all even numbers. Example input: 5 \/ 3 \/ 8 \/ 10 \/ 7 \/ 2. Example output: 20.\": \"\u7f16\u5199\u4e00\u4e2a\u7a0b\u5e8f\uff0c\u8bfb\u5165\u4e00\u4e2a\u6574\u6570 n\uff0c\u7136\u540e\u8bfb\u5165 n \u4e2a\u6574\u6570\u3002\u8f93\u51fa\u6240\u6709\u5076\u6570\u7684\u603b\u548c\u3002\u8f93\u5165\uff1an\uff0c\u7136\u540e\u8f93\u5165 n \u4e2a\u6574\u6570\u3002\u8f93\u51fa\uff1a\u6240\u6709\u5076\u6570\u7684\u603b\u548c\u3002\u793a\u4f8b\u8f93\u5165\uff1a5 \/ 10 3 20 7 8\u3002\u793a\u4f8b\u8f93\u51fa\uff1a38\u3002\", \"Count Vowels\": \"\u7edf\u8ba1\u5143\u97f3\", \"Implement count_vowels(s).\": \"\u5b9e\u73b0 count_vowels(s)\u3002\", \"Write count_vowels(s). Count a, e, i, o, u in both uppercase and lowercase letters.\": \"\u7f16\u5199 count_vowels(s)\uff0c\u7edf\u8ba1 a\u3001e\u3001i\u3001o\u3001u\uff0c\u5305\u62ec\u5927\u5c0f\u5199\u3002\", \"Write a program that reads one string. Count how many vowels it contains, including a, e, i, o, and u, without caring about uppercase or lowercase letters. Input: one string. Output: the number of vowels. Example input: Hello World. Example output: 3.\": \"\u7f16\u5199\u4e00\u4e2a\u7a0b\u5e8f\uff0c\u8bfb\u5165\u4e00\u4e2a\u5b57\u7b26\u4e32\u3002\u7edf\u8ba1\u5176\u4e2d\u5305\u542b\u591a\u5c11\u4e2a\u5143\u97f3\u5b57\u6bcd\uff0c\u5305\u62ec a\u3001e\u3001i\u3001o\u3001u\uff0c\u4e0d\u533a\u5206\u5927\u5c0f\u5199\u3002\u8f93\u5165\uff1a\u4e00\u4e2a\u5b57\u7b26\u4e32\u3002\u8f93\u51fa\uff1a\u5143\u97f3\u6570\u91cf\u3002\u793a\u4f8b\u8f93\u5165\uff1aHello World\u3002\u793a\u4f8b\u8f93\u51fa\uff1a3\u3002\", \"Write a function count_vowels(s). The function returns the number of vowels in the string. Vowels are a, e, i, o, u, both uppercase and lowercase. Example: count_vowels(\\\"Hello World\\\"). Output: 3.\": \"\u7f16\u5199\u51fd\u6570 count_vowels(s)\u3002\u8be5\u51fd\u6570\u8fd4\u56de\u5b57\u7b26\u4e32\u4e2d\u7684\u5143\u97f3\u6570\u91cf\u3002\u5143\u97f3\u5305\u62ec a\u3001e\u3001i\u3001o\u3001u\uff0c\u5305\u542b\u5927\u5c0f\u5199\u3002\u793a\u4f8b\uff1acount_vowels(\\\"Hello World\\\")\u3002\u8f93\u51fa\uff1a3\u3002\", \"Write a function count_vowels(s). The function returns the number of vowels in the string. Vowels are a, e, i, o, u, both uppercase and lowercase. Example: count_vowels('Hello World'). Output: 3.\": \"\u7f16\u5199\u51fd\u6570 count_vowels(s)\u3002\u8be5\u51fd\u6570\u8fd4\u56de\u5b57\u7b26\u4e32\u4e2d\u7684\u5143\u97f3\u6570\u91cf\u3002\u5143\u97f3\u5305\u62ec a\u3001e\u3001i\u3001o\u3001u\uff0c\u5305\u542b\u5927\u5c0f\u5199\u3002\u793a\u4f8b\uff1acount_vowels('Hello World')\u3002\u8f93\u51fa\uff1a3\u3002\", \"Maximum Difference\": \"\u6700\u5927\u5dee\u503c\", \"Output max(list) - min(list).\": \"\u8f93\u51fa max(list) - min(list)\u3002\", \"Read a list of integers and print the difference between the largest and smallest value.\": \"\u8bfb\u5165\u4e00\u7ec4\u6574\u6570\uff0c\u8f93\u51fa\u6700\u5927\u503c\u548c\u6700\u5c0f\u503c\u4e4b\u95f4\u7684\u5dee\u3002\", \"Write a program that reads an integer n, then reads n integers. Print the difference between the largest and smallest value. Input: n, then n integers. Output: largest value minus smallest value. Example input: 5 \/ 6 20 15 7 9. Example output: 13.\": \"\u7f16\u5199\u4e00\u4e2a\u7a0b\u5e8f\uff0c\u8bfb\u5165\u4e00\u4e2a\u6574\u6570 n\uff0c\u7136\u540e\u8bfb\u5165 n \u4e2a\u6574\u6570\u3002\u8f93\u51fa\u6700\u5927\u503c\u548c\u6700\u5c0f\u503c\u4e4b\u95f4\u7684\u5dee\u3002\u8f93\u5165\uff1an\uff0c\u7136\u540e\u8f93\u5165 n \u4e2a\u6574\u6570\u3002\u8f93\u51fa\uff1a\u6700\u5927\u503c\u51cf\u6700\u5c0f\u503c\u3002\u793a\u4f8b\u8f93\u5165\uff1a5 \/ 6 20 15 7 9\u3002\u793a\u4f8b\u8f93\u51fa\uff1a13\u3002\", \"Read an integer n, then read n integers into a list. Print the difference between the largest and smallest number. Example input: 6 \/ 10 \/ 3 \/ 8 \/ 20 \/ 15 \/ 7. Example output: 17.\": \"\u8bfb\u5165\u4e00\u4e2a\u6574\u6570 n\uff0c\u7136\u540e\u8bfb\u5165 n \u4e2a\u6574\u6570\u5230\u5217\u8868\u4e2d\u3002\u8f93\u51fa\u6700\u5927\u6570\u548c\u6700\u5c0f\u6570\u4e4b\u95f4\u7684\u5dee\u3002\u793a\u4f8b\u8f93\u5165\uff1a6 \/ 10 \/ 3 \/ 8 \/ 20 \/ 15 \/ 7\u3002\u793a\u4f8b\u8f93\u51fa\uff1a17\u3002\", \"Write a program that reads an integer n, then reads n integers. Print the difference between the largest and smallest value. Write a program that reads an integer n, then reads n integers. Print the difference between the largest and smallest value. Input: n, then n integers. Output: largest value minus smallest value. Example input: 5 \/ 6 20 15 7 9. Example output: 13.\": \"\u7f16\u5199\u4e00\u4e2a\u7a0b\u5e8f\uff0c\u8bfb\u5165\u4e00\u4e2a\u6574\u6570 n\uff0c\u7136\u540e\u8bfb\u5165 n \u4e2a\u6574\u6570\u3002\u8f93\u51fa\u6700\u5927\u503c\u548c\u6700\u5c0f\u503c\u4e4b\u95f4\u7684\u5dee\u3002\u8f93\u5165\uff1an\uff0c\u7136\u540e\u8f93\u5165 n \u4e2a\u6574\u6570\u3002\u8f93\u51fa\uff1a\u6700\u5927\u503c\u51cf\u6700\u5c0f\u503c\u3002\u793a\u4f8b\u8f93\u5165\uff1a5 \/ 6 20 15 7 9\u3002\u793a\u4f8b\u8f93\u51fa\uff1a13\u3002\", \"Health Simulation\": \"\u751f\u547d\u503c\u6a21\u62df\", \"Simple Simulation\": \"\u7b80\u5355\u6a21\u62df\", \"Start at 100 HP. hit = -10, heal = +5, miss = 0. Clamp the result to 0..100.\": \"\u521d\u59cb 100 HP\u3002hit = -10\uff0cheal = +5\uff0cmiss = 0\u3002\u7ed3\u679c\u9650\u5236\u5728 0..100\u3002\", \"Start at 100 health. For each event: hit decreases by 10, heal increases by 5, miss changes nothing. Keep health between 0 and 100.\": \"\u521d\u59cb\u751f\u547d\u503c\u4e3a 100\u3002\u6bcf\u4e2a\u4e8b\u4ef6\u4e2d\uff1ahit \u51cf\u5c11 10\uff0cheal \u589e\u52a0 5\uff0cmiss \u4e0d\u53d8\u3002\u751f\u547d\u503c\u4fdd\u6301\u5728 0 \u5230 100 \u4e4b\u95f4\u3002\", \"Write a program that simulates a player's health. Read a starting health value and a sequence of events. A hit subtracts 10, a heal adds 5, and a miss changes nothing. Keep the final health between 0 and 100. Input: starting health and events. Output: final health.\": \"\u7f16\u5199\u4e00\u4e2a\u7a0b\u5e8f\uff0c\u6a21\u62df\u73a9\u5bb6\u7684\u751f\u547d\u503c\u3002\u8bfb\u5165\u521d\u59cb\u751f\u547d\u503c\u548c\u4e00\u4e32\u4e8b\u4ef6\u3002hit \u51cf\u5c11 10\uff0cheal \u589e\u52a0 5\uff0cmiss \u4e0d\u6539\u53d8\u751f\u547d\u503c\u3002\u6700\u7ec8\u751f\u547d\u503c\u9700\u8981\u4fdd\u6301\u5728 0 \u5230 100 \u4e4b\u95f4\u3002\u8f93\u5165\uff1a\u521d\u59cb\u751f\u547d\u503c\u548c\u4e8b\u4ef6\u3002\u8f93\u51fa\uff1a\u6700\u7ec8\u751f\u547d\u503c\u3002\", \"A player starts with 100 health points. Read an integer n, then read n actions. Each action is hit, heal, or miss. hit decreases health by 10, heal increases health by 5, and miss does not change health. Health cannot go below 0 or above 100. Print the final health. Example input: 5 \/ hit \/ hit \/ heal \/ miss \/ hit. Example output: 75.\": \"\u73a9\u5bb6\u521d\u59cb\u6709 100 \u70b9\u751f\u547d\u503c\u3002\u8bfb\u5165\u4e00\u4e2a\u6574\u6570 n\uff0c\u7136\u540e\u8bfb\u5165 n \u4e2a\u52a8\u4f5c\u3002\u6bcf\u4e2a\u52a8\u4f5c\u662f hit\u3001heal \u6216 miss\u3002hit \u8ba9\u751f\u547d\u503c\u51cf\u5c11 10\uff0cheal \u8ba9\u751f\u547d\u503c\u589e\u52a0 5\uff0cmiss \u4e0d\u6539\u53d8\u751f\u547d\u503c\u3002\u751f\u547d\u503c\u4e0d\u80fd\u4f4e\u4e8e 0\uff0c\u4e5f\u4e0d\u80fd\u9ad8\u4e8e 100\u3002\u8f93\u51fa\u6700\u7ec8\u751f\u547d\u503c\u3002\u793a\u4f8b\u8f93\u5165\uff1a5 \/ hit \/ hit \/ heal \/ miss \/ hit\u3002\u793a\u4f8b\u8f93\u51fa\uff1a75\u3002\", \"Pizza Party\": \"\u62ab\u8428\u6d3e\u5bf9\", \"Pizza Party (J2)\": \"\u62ab\u8428\u6d3e\u5bf9\uff08J2\uff09\", \"Determine whether there are enough slices for all students.\": \"\u5224\u65ad\u62ab\u8428\u662f\u5426\u8db3\u591f\u5206\u7ed9\u6240\u6709\u5b66\u751f\u3002\", \"Given the number of pizzas, slices per pizza, and students, print Enough if every student can get a slice; otherwise print Not enough.\": \"\u7ed9\u5b9a\u62ab\u8428\u6570\u91cf\u3001\u6bcf\u4e2a\u62ab\u8428\u7684\u5207\u7247\u6570\u548c\u5b66\u751f\u4eba\u6570\uff0c\u5982\u679c\u6bcf\u4f4d\u5b66\u751f\u90fd\u80fd\u5206\u5230\u4e00\u7247\u5219\u8f93\u51fa Enough\uff0c\u5426\u5219\u8f93\u51fa Not enough\u3002\", \"Write a program that reads the number of pizzas, the number of slices per pizza, and the number of students. Print Enough if every student can get at least one slice; otherwise print Not enough. Example: 2 pizzas, 6 slices each, 10 students -> Enough.\": \"\u7f16\u5199\u4e00\u4e2a\u7a0b\u5e8f\uff0c\u8bfb\u5165\u62ab\u8428\u6570\u91cf\u3001\u6bcf\u4e2a\u62ab\u8428\u7684\u5207\u7247\u6570\u548c\u5b66\u751f\u4eba\u6570\u3002\u5982\u679c\u6bcf\u4f4d\u5b66\u751f\u81f3\u5c11\u80fd\u5206\u5230\u4e00\u7247\uff0c\u5219\u8f93\u51fa Enough\uff1b\u5426\u5219\u8f93\u51fa Not enough\u3002\u793a\u4f8b\uff1a2 \u4e2a\u62ab\u8428\uff0c\u6bcf\u4e2a 6 \u7247\uff0c10 \u4e2a\u5b66\u751f -> Enough\u3002\", \"A school is running a pizza party. Each small pizza has 6 slices, and each large pizza has 10 slices. Read the number of small pizzas, the number of large pizzas, and the number of students. Each student needs exactly 2 slices. Print Enough if there are enough slices; otherwise print Not enough. Example input: 3 \/ 2 \/ 20. Example output: Not enough.\": \"\u5b66\u6821\u6b63\u5728\u4e3e\u529e\u62ab\u8428\u6d3e\u5bf9\u3002\u6bcf\u4e2a\u5c0f\u62ab\u8428\u6709 6 \u7247\uff0c\u6bcf\u4e2a\u5927\u62ab\u8428\u6709 10 \u7247\u3002\u8bfb\u5165\u5c0f\u62ab\u8428\u6570\u91cf\u3001\u5927\u62ab\u8428\u6570\u91cf\u548c\u5b66\u751f\u4eba\u6570\u3002\u6bcf\u4f4d\u5b66\u751f\u6b63\u597d\u9700\u8981 2 \u7247\u3002\u5982\u679c\u62ab\u8428\u7247\u8db3\u591f\uff0c\u5219\u8f93\u51fa Enough\uff1b\u5426\u5219\u8f93\u51fa Not enough\u3002\u793a\u4f8b\u8f93\u5165\uff1a3 \/ 2 \/ 20\u3002\u793a\u4f8b\u8f93\u51fa\uff1aNot enough\u3002\", \"Balanced Word\": \"\u5e73\u8861\u5355\u8bcd\", \"Balanced Word (J3)\": \"\u5e73\u8861\u5355\u8bcd\uff08J3\uff09\", \"Check whether vowels and consonants are equal.\": \"\u5224\u65ad\u5143\u97f3\u548c\u8f85\u97f3\u6570\u91cf\u662f\u5426\u76f8\u7b49\u3002\", \"A word is balanced if its vowel count equals its consonant count. Only lowercase letters are included.\": \"\u5982\u679c\u4e00\u4e2a\u5355\u8bcd\u4e2d\u7684\u5143\u97f3\u6570\u91cf\u7b49\u4e8e\u8f85\u97f3\u6570\u91cf\uff0c\u5219\u5b83\u662f\u5e73\u8861\u5355\u8bcd\u3002\u53ea\u5305\u542b\u5c0f\u5199\u5b57\u6bcd\u3002\", \"Write a program that reads one lowercase word. Count vowels and consonants. Print Balanced if the two counts are equal; otherwise print Not balanced. Example input: banana. Example output: Balanced.\": \"\u7f16\u5199\u4e00\u4e2a\u7a0b\u5e8f\uff0c\u8bfb\u5165\u4e00\u4e2a\u5c0f\u5199\u5355\u8bcd\u3002\u7edf\u8ba1\u5143\u97f3\u548c\u8f85\u97f3\u6570\u91cf\u3002\u5982\u679c\u4e24\u8005\u6570\u91cf\u76f8\u7b49\uff0c\u5219\u8f93\u51fa Balanced\uff1b\u5426\u5219\u8f93\u51fa Not balanced\u3002\u793a\u4f8b\u8f93\u5165\uff1abanana\u3002\u793a\u4f8b\u8f93\u51fa\uff1aBalanced\u3002\", \"A word is called balanced if the number of vowels equals the number of consonants. Read one lowercase word. Only letters are included. Print Balanced or Not balanced. Example input: banana. Example output: Balanced. Explanation: vowels = 3, consonants = 3.\": \"\u5982\u679c\u4e00\u4e2a\u5355\u8bcd\u4e2d\u7684\u5143\u97f3\u6570\u91cf\u7b49\u4e8e\u8f85\u97f3\u6570\u91cf\uff0c\u5219\u79f0\u4e3a balanced\u3002\u8bfb\u5165\u4e00\u4e2a\u5c0f\u5199\u5355\u8bcd\uff0c\u53ea\u5305\u542b\u5b57\u6bcd\u3002\u8f93\u51fa Balanced \u6216 Not balanced\u3002\u793a\u4f8b\u8f93\u5165\uff1abanana\u3002\u793a\u4f8b\u8f93\u51fa\uff1aBalanced\u3002\u89e3\u91ca\uff1a\u5143\u97f3 = 3\uff0c\u8f85\u97f3 = 3\u3002\", \"String Compression\": \"\u5b57\u7b26\u4e32\u538b\u7f29\", \"String Compression (J4)\": \"\u5b57\u7b26\u4e32\u538b\u7f29\uff08J4\uff09\", \"Compress aaabbcdddd as a3b2c1d4.\": \"\u5c06 aaabbcdddd \u538b\u7f29\u4e3a a3b2c1d4\u3002\", \"Compress consecutive repeated characters, such as aaabbcdddd -> a3b2c1d4.\": \"\u538b\u7f29\u8fde\u7eed\u91cd\u590d\u5b57\u7b26\uff0c\u4f8b\u5982 aaabbcdddd -> a3b2c1d4\u3002\", \"Write a program that reads one string and compresses consecutive repeated characters. For each group, print the character followed by its count. Example input: aaabbcdddd. Example output: a3b2c1d4.\": \"\u7f16\u5199\u4e00\u4e2a\u7a0b\u5e8f\uff0c\u8bfb\u5165\u4e00\u4e2a\u5b57\u7b26\u4e32\uff0c\u5e76\u538b\u7f29\u8fde\u7eed\u91cd\u590d\u5b57\u7b26\u3002\u5bf9\u6bcf\u4e00\u7ec4\u8fde\u7eed\u5b57\u7b26\uff0c\u8f93\u51fa\u8be5\u5b57\u7b26\u548c\u51fa\u73b0\u6b21\u6570\u3002\u793a\u4f8b\u8f93\u5165\uff1aaaabbcdddd\u3002\u793a\u4f8b\u8f93\u51fa\uff1aa3b2c1d4\u3002\", \"Read a string and compress consecutive repeated characters. For each group, print the character followed by its count. Example input: aaabbcdddd. Example output: a3b2c1d4. Another example input: abcd. Another example output: a1b1c1d1.\": \"\u8bfb\u5165\u4e00\u4e2a\u5b57\u7b26\u4e32\uff0c\u5e76\u538b\u7f29\u8fde\u7eed\u91cd\u590d\u5b57\u7b26\u3002\u5bf9\u6bcf\u4e00\u7ec4\u8fde\u7eed\u5b57\u7b26\uff0c\u8f93\u51fa\u8be5\u5b57\u7b26\u548c\u51fa\u73b0\u6b21\u6570\u3002\u793a\u4f8b\u8f93\u5165\uff1aaaabbcdddd\u3002\u793a\u4f8b\u8f93\u51fa\uff1aa3b2c1d4\u3002\u53e6\u4e00\u4e2a\u793a\u4f8b\u8f93\u5165\uff1aabcd\u3002\u53e6\u4e00\u4e2a\u793a\u4f8b\u8f93\u51fa\uff1aa1b1c1d1\u3002\", \"Pair Sum Equals 10\": \"\u4e24\u6570\u548c\u4e3a 10\", \"Pair Sum Equals 10 (J5 readiness)\": \"\u4e24\u6570\u548c\u4e3a 10\uff08J5 \u51c6\u5907\u5ea6\uff09\", \"Count non-overlapping pairs whose sum is 10.\": \"\u7edf\u8ba1\u4e0d\u91cd\u53e0\u4e14\u548c\u4e3a 10 \u7684\u914d\u5bf9\u6570\u91cf\u3002\", \"Count non-overlapping pairs whose values sum to 10. Each number can be used at most once.\": \"\u7edf\u8ba1\u6570\u503c\u548c\u4e3a 10 \u7684\u4e0d\u91cd\u53e0\u914d\u5bf9\uff0c\u6bcf\u4e2a\u6570\u5b57\u6700\u591a\u53ea\u80fd\u4f7f\u7528\u4e00\u6b21\u3002\", \"Write a program that reads a list of numbers. Count how many non-overlapping pairs have a sum of 10. Each number can be used at most once. Example input: 1 9 5 5 7 3. Example output: 3.\": \"\u7f16\u5199\u4e00\u4e2a\u7a0b\u5e8f\uff0c\u8bfb\u5165\u4e00\u7ec4\u6570\u5b57\u3002\u7edf\u8ba1\u6709\u591a\u5c11\u4e2a\u4e0d\u91cd\u53e0\u7684\u914d\u5bf9\u4e4b\u548c\u4e3a 10\uff0c\u6bcf\u4e2a\u6570\u5b57\u6700\u591a\u53ea\u80fd\u4f7f\u7528\u4e00\u6b21\u3002\u793a\u4f8b\u8f93\u5165\uff1a1 9 5 5 7 3\u3002\u793a\u4f8b\u8f93\u51fa\uff1a3\u3002\", \"You are given n numbers. Count how many non-overlapping pairs have a sum equal to 10. Each number can be used only once per pair. Example input: 6 \/ 1 \/ 9 \/ 5 \/ 5 \/ 7 \/ 3. Example output: 3. Pairs: 1 + 9, 5 + 5, 7 + 3.\": \"\u7ed9\u5b9a n \u4e2a\u6570\u5b57\u3002\u7edf\u8ba1\u6709\u591a\u5c11\u4e2a\u4e0d\u91cd\u53e0\u7684\u914d\u5bf9\u4e4b\u548c\u7b49\u4e8e 10\u3002\u6bcf\u4e2a\u6570\u5b57\u5728\u914d\u5bf9\u4e2d\u53ea\u80fd\u4f7f\u7528\u4e00\u6b21\u3002\u793a\u4f8b\u8f93\u5165\uff1a6 \/ 1 \/ 9 \/ 5 \/ 5 \/ 7 \/ 3\u3002\u793a\u4f8b\u8f93\u51fa\uff1a3\u3002\u914d\u5bf9\uff1a1 + 9\uff0c5 + 5\uff0c7 + 3\u3002\", \"Coding Rubric\": \"\u4ee3\u7801\u9898\u8bc4\u5206\u6807\u51c6\", \"Input Handling: 20%\": \"\u8f93\u5165\u5904\u7406\uff1a20%\", \"Core Logic: 50%\": \"\u6838\u5fc3\u903b\u8f91\uff1a50%\", \"Output Format: 20%\": \"\u8f93\u51fa\u683c\u5f0f\uff1a20%\", \"Code Quality: 10%\": \"\u4ee3\u7801\u8d28\u91cf\uff1a10%\", \"Complete the embedded OneCompiler challenge to test implementation ability in a realistic coding environment.\": \"\u5b8c\u6210\u5d4c\u5165\u7684 OneCompiler \u6311\u6218\uff0c\u5728\u771f\u5b9e\u4ee3\u7801\u73af\u5883\u4e2d\u6d4b\u8bd5\u5b9e\u73b0\u80fd\u529b\u3002\", \"Use the embedded Python editor below to solve Section B and Section C problems. You can write and run code directly in the browser.\": \"\u4f7f\u7528\u4e0b\u65b9\u5d4c\u5165\u7684 Python \u7f16\u8f91\u5668\u5b8c\u6210 B \u90e8\u5206\u548c C \u90e8\u5206\u9898\u76ee\u3002\u4f60\u53ef\u4ee5\u76f4\u63a5\u5728\u6d4f\u89c8\u5668\u4e2d\u7f16\u5199\u5e76\u8fd0\u884c\u4ee3\u7801\u3002\", \"Online Coding\": \"\u5728\u7ebf\u7f16\u7a0b\", \"How to read your result\": \"\u5982\u4f55\u7406\u89e3\u7ed3\u679c\", \"0-40: Foundation Programming\": \"0-40\uff1a\u7f16\u7a0b\u57fa\u7840\", \"41-60: CCC J30s\": \"41-60\uff1aCCC \u521d\u7ea730\u5206\", \"41-60: CCC \u521d\u7ea730\u5206\": \"41-60\uff1aCCC \u521d\u7ea730\u5206\", \"61-75: CCC J60s\": \"61-75\uff1aCCC \u521d\u7ea760\u5206\", \"61-75: CCC \u521d\u7ea760\u5206\": \"61-75\uff1aCCC \u521d\u7ea760\u5206\", \"76-90: CCC J75s\": \"76-90\uff1aCCC \u521d\u7ea7\u6ee1\u5206\", \"76-90: CCC \u521d\u7ea7\u6ee1\u5206\": \"76-90\uff1aCCC \u521d\u7ea7\u6ee1\u5206\", \"91+: CCC S45s readiness\": \"91+\uff1a\u5177\u5907 CCC \u9ad8\u7ea745\u5206\u5b66\u4e60\u51c6\u5907\u5ea6\", \"91+: CCC \u9ad8\u7ea745\u5206 readiness\": \"91+\uff1a\u5177\u5907 CCC \u9ad8\u7ea745\u5206\u5b66\u4e60\u51c6\u5907\u5ea6\", \"0-30: Beginner Python\": \"0-30\uff1aPython \u5165\u95e8\", \"31-50: Python Foundations\": \"31-50\uff1aPython \u57fa\u7840\", \"51-70: CCC Junior J1-J2 Ready\": \"51-70\uff1a\u9002\u5408 CCC \u521d\u7ea7 J1-J2\", \"71-85: CCC Junior J3-J4 Ready\": \"71-85\uff1a\u9002\u5408 CCC \u521d\u7ea7 J3-J4\", \"86-100: CCC Junior J5 Ready \/ Advanced\": \"86-100\uff1a\u9002\u5408 CCC \u521d\u7ea7 J5 \/ \u8fdb\u9636\u5b66\u4e60\", \"Check Section A Score\": \"\u67e5\u770b A \u90e8\u5206\u5206\u6570\", \"Book a Placement Consultation\": \"\u9884\u7ea6\u5206\u7ea7\u54a8\u8be2\", \"Multiple choice\": \"\u9009\u62e9\u9898\", \"+ coding task\": \"+ \u4ee3\u7801\u9898\", \"Get a practical signal before choosing a learning path.\": \"\u5728\u9009\u62e9\u5b66\u4e60\u8def\u5f84\u524d\uff0c\u83b7\u5f97\u4e00\u4e2a\u5b9e\u7528\u7684\u80fd\u529b\u53c2\u8003\u3002\", \"Implementation\": \"\u4ee3\u7801\u5b9e\u73b0\", \"Placement Guide\": \"\u5206\u7ea7\u5efa\u8bae\", \"What index does the first item in a Python list have?\": \"Python \u5217\u8868\u4e2d\u7b2c\u4e00\u4e2a\u5143\u7d20\u7684\u7d22\u5f15\u662f\u591a\u5c11\uff1f\", \"What values are produced by range(3)?\": \"range(3) \u4f1a\u4ea7\u751f\u54ea\u4e9b\u503c\uff1f\", \"Which tool is most appropriate for repeating an action a known number of times?\": \"\u5f53\u9700\u8981\u91cd\u590d\u6267\u884c\u5df2\u77e5\u6b21\u6570\u7684\u64cd\u4f5c\u65f6\uff0c\u6700\u5408\u9002\u7684\u5de5\u5177\u662f\u4ec0\u4e48\uff1f\", \"What does n % 2 == 0 usually test?\": \"n % 2 == 0 \u901a\u5e38\u7528\u4e8e\u5224\u65ad\u4ec0\u4e48\uff1f\", \"Which data structure stores ordered, mutable values?\": \"\u54ea\u79cd\u6570\u636e\u7ed3\u6784\u53ef\u4ee5\u5b58\u50a8\u6709\u5e8f\u4e14\u53ef\u4fee\u6539\u7684\u6570\u636e\uff1f\", \"If you scan a list once from left to right, what is the usual time complexity?\": \"\u5982\u679c\u4ece\u5de6\u5230\u53f3\u626b\u63cf\u4e00\u4e2a\u5217\u8868\u4e00\u6b21\uff0c\u901a\u5e38\u7684\u65f6\u95f4\u590d\u6742\u5ea6\u662f\u591a\u5c11\uff1f\", \"For s = 'abc', what is s[1]?\": \"\u5bf9\u4e8e s = 'abc'\uff0cs[1] \u662f\u4ec0\u4e48\uff1f\", \"Which structure is usually best for counting frequencies?\": \"\u7edf\u8ba1\u51fa\u73b0\u9891\u7387\u65f6\u901a\u5e38\u6700\u9002\u5408\u4f7f\u7528\u54ea\u79cd\u7ed3\u6784\uff1f\", \"A dictionary\": \"\u5b57\u5178\", \"A list\": \"\u5217\u8868\", \"A function\": \"\u51fd\u6570\", \"An if statement\": \"if \u8bed\u53e5\", \"A while loop only\": \"\u53ea\u80fd\u4f7f\u7528 while \u5faa\u73af\", \"A for loop\": \"for \u5faa\u73af\", \"Whether n is even\": \"n \u662f\u5426\u4e3a\u5076\u6570\", \"Whether n is negative\": \"n \u662f\u5426\u4e3a\u8d1f\u6570\", \"Whether n is a string\": \"n \u662f\u5426\u4e3a\u5b57\u7b26\u4e32\", \"Modern Software Teams\": \"\u9762\u5411\u73b0\u4ee3\u8f6f\u4ef6\u56e2\u961f\", \"Practical Technology Consulting\": \"\u5b9e\u7528\u578b\u6280\u672f\u54a8\u8be2\", \"Independent guidance for software architecture, product delivery, and AI adoption decisions.\": \"\u4e3a\u8f6f\u4ef6\u67b6\u6784\u3001\u4ea7\u54c1\u4ea4\u4ed8\u548c AI \u91c7\u7528\u51b3\u7b56\u63d0\u4f9b\u72ec\u7acb\u5efa\u8bae\u3002\", \"Discuss a Project\": \"\u8ba8\u8bba\u9879\u76ee\", \"20+ years\": \"20+ \u5e74\", \"Software engineering, architecture, teaching, and advisory experience.\": \"\u8f6f\u4ef6\u5de5\u7a0b\u3001\u67b6\u6784\u3001\u6559\u5b66\u4e0e\u54a8\u8be2\u7ecf\u9a8c\u3002\", \"Consulting Services\": \"\u54a8\u8be2\u670d\u52a1\", \"Focused guidance for technical decisions that matter.\": \"\u56f4\u7ed5\u5173\u952e\u6280\u672f\u51b3\u7b56\u63d0\u4f9b\u805a\u7126\u3001\u52a1\u5b9e\u7684\u6307\u5bfc\u3002\", \".NET Solution Consulting\": \".NET \u89e3\u51b3\u65b9\u6848\u54a8\u8be2\", \"ASP.NET Core, Web API, microservices, Azure, and enterprise systems.\": \"ASP.NET Core\u3001Web API\u3001\u5fae\u670d\u52a1\u3001Azure \u4e0e\u4f01\u4e1a\u7cfb\u7edf\u3002\", \"ASP.NET Core, Web API, microservices, Azure, enterprise systems.\": \"ASP.NET Core\u3001Web API\u3001\u5fae\u670d\u52a1\u3001Azure\u3001\u4f01\u4e1a\u7cfb\u7edf\u3002\", \"React Solution Consulting\": \"React \u89e3\u51b3\u65b9\u6848\u54a8\u8be2\", \"React, TypeScript, state management, performance optimization, and front-end architecture.\": \"React\u3001TypeScript\u3001\u72b6\u6001\u7ba1\u7406\u3001\u6027\u80fd\u4f18\u5316\u4e0e\u524d\u7aef\u67b6\u6784\u3002\", \"React, TypeScript, state management, performance, front-end architecture.\": \"React\u3001TypeScript\u3001\u72b6\u6001\u7ba1\u7406\u3001\u6027\u80fd\u4e0e\u524d\u7aef\u67b6\u6784\u3002\", \"Software Architecture Review\": \"\u8f6f\u4ef6\u67b6\u6784\u8bc4\u5ba1\", \"Scalability, maintainability, system design, and technical risk assessment.\": \"\u53ef\u6269\u5c55\u6027\u3001\u53ef\u7ef4\u62a4\u6027\u3001\u7cfb\u7edf\u8bbe\u8ba1\u4e0e\u6280\u672f\u98ce\u9669\u8bc4\u4f30\u3002\", \"AI Adoption Consulting\": \"AI \u5e94\u7528\u54a8\u8be2\", \"AI evaluation, integration, business process automation, and AI strategy.\": \"AI \u8bc4\u4f30\u3001\u96c6\u6210\u3001\u4e1a\u52a1\u6d41\u7a0b\u81ea\u52a8\u5316\u4e0e AI \u7b56\u7565\u3002\", \"Technical Project Advisory\": \"\u6280\u672f\u9879\u76ee\u987e\u95ee\", \"Independent technology guidance for small businesses, startups, and technology teams.\": \"\u4e3a\u5c0f\u578b\u4f01\u4e1a\u3001\u521b\u4e1a\u56e2\u961f\u548c\u6280\u672f\u56e2\u961f\u63d0\u4f9b\u72ec\u7acb\u6280\u672f\u5efa\u8bae\u3002\", \"How Engagements Work\": \"\u5408\u4f5c\u65b9\u5f0f\", \"Clear, practical, and implementation-aware.\": \"\u6e05\u6670\u3001\u52a1\u5b9e\uff0c\u5e76\u5173\u6ce8\u5b9e\u9645\u843d\u5730\u3002\", \"Assess\": \"\u8bc4\u4f30\", \"Understand product goals, current architecture, risks, and constraints.\": \"\u7406\u89e3\u4ea7\u54c1\u76ee\u6807\u3001\u5f53\u524d\u67b6\u6784\u3001\u98ce\u9669\u4e0e\u7ea6\u675f\u3002\", \"Recommend\": \"\u5efa\u8bae\", \"Prioritize decisions with clear tradeoffs and implementation paths.\": \"\u660e\u786e\u53d6\u820d\u4e0e\u5b9e\u65bd\u8def\u5f84\uff0c\u5e2e\u52a9\u786e\u5b9a\u51b3\u7b56\u4f18\u5148\u7ea7\u3002\", \"Support\": \"\u652f\u6301\", \"Guide teams through delivery, review, and adoption.\": \"\u652f\u6301\u56e2\u961f\u5b8c\u6210\u4ea4\u4ed8\u3001\u8bc4\u5ba1\u4e0e\u6280\u672f\u91c7\u7528\u3002\", \"Founded in 2018\": \"\u521b\u7acb\u4e8e 2018 \u5e74\", \"Learn to Think, Build, and Lead.\": \"\u5b66\u4f1a\u601d\u8003\u3001\u6784\u5efa\u4e0e\u5f15\u9886\u3002\", \"LearntoThink,Build,andLead.\": \"\u5b66\u4f1a\u601d\u8003\u3001\u6784\u5efa\u4e0e\u5f15\u9886\u3002\", \"Learn to Think,\": \"\u5b66\u4f1a\u601d\u8003\uff0c\", \"Build,\": \"\u6784\u5efa\uff0c\", \"and Lead.\": \"\u5e76\u5f15\u9886\u3002\", \"Technology education and practical engineering expertise.\": \"\u79d1\u6280\u6559\u80b2\u4e0e\u5b9e\u7528\u5de5\u7a0b\u7ecf\u9a8c\u3002\", \"Accel Thinking empowers organizations and learners through technology education and practical engineering expertise.\": \"\u52a0\u901f\u5ea6\u601d\u7ef4\u901a\u8fc7\u79d1\u6280\u6559\u80b2\u548c\u5b9e\u7528\u5de5\u7a0b\u7ecf\u9a8c\u8d4b\u80fd\u7ec4\u7ec7\u4e0e\u5b66\u4e60\u8005\u3002\", \"Founded in 2018, Accel Thinking empowers organizations and learners through technology education and practical engineering expertise.\": \"\u52a0\u901f\u5ea6\u601d\u7ef4\u521b\u7acb\u4e8e 2018 \u5e74\uff0c\u901a\u8fc7\u79d1\u6280\u6559\u80b2\u548c\u5b9e\u7528\u5de5\u7a0b\u7ecf\u9a8c\u8d4b\u80fd\u7ec4\u7ec7\u4e0e\u5b66\u4e60\u8005\u3002\", \"Company Philosophy\": \"\u516c\u53f8\u7406\u5ff5\", \"We do not simply teach programming.\": \"\u6211\u4eec\u4e0d\u53ea\u662f\u6559\u7f16\u7a0b\u3002\", \"We help students develop problem-solving skills, computational thinking, and engineering mindsets that prepare them for future success.\": \"\u6211\u4eec\u5e2e\u52a9\u5b66\u751f\u53d1\u5c55\u95ee\u9898\u89e3\u51b3\u80fd\u529b\u3001\u8ba1\u7b97\u601d\u7ef4\u548c\u5de5\u7a0b\u5316\u601d\u7ef4\uff0c\u4e3a\u672a\u6765\u6210\u529f\u505a\u597d\u51c6\u5907\u3002\", \"Mission\": \"\u4f7f\u547d\", \"Empower organizations and learners through technology education and practical engineering expertise.\": \"\u901a\u8fc7\u79d1\u6280\u6559\u80b2\u548c\u5b9e\u7528\u5de5\u7a0b\u7ecf\u9a8c\u8d4b\u80fd\u7ec4\u7ec7\u4e0e\u5b66\u4e60\u8005\u3002\", \"Vision\": \"\u613f\u666f\", \"Become a trusted technology education and consulting partner.\": \"\u6210\u4e3a\u503c\u5f97\u4fe1\u8d56\u7684\u79d1\u6280\u6559\u80b2\u4e0e\u6280\u672f\u54a8\u8be2\u4f19\u4f34\u3002\", \"Founder Profile\": \"\u521b\u59cb\u4eba\u7b80\u4ecb\", \"Software Architect, Technology Educator, Curriculum Designer, 20+ years of software engineering experience.\": \"\u8f6f\u4ef6\u67b6\u6784\u5e08\u3001\u79d1\u6280\u6559\u80b2\u8005\u3001\u8bfe\u7a0b\u8bbe\u8ba1\u8005\uff0c\u62e5\u6709 20+ \u5e74\u8f6f\u4ef6\u5de5\u7a0b\u7ecf\u9a8c\u3002\", \"Tell us what you want to build, teach, or improve.\": \"\u544a\u8bc9\u6211\u4eec\u4f60\u60f3\u6784\u5efa\u3001\u5f00\u8bbe\u6216\u6539\u8fdb\u4ec0\u4e48\u3002\", \"Use this page for educational partnership inquiries, CP Academy questions, technology consulting, or general messages.\": \"\u4f60\u53ef\u4ee5\u901a\u8fc7\u672c\u9875\u9762\u54a8\u8be2\u6559\u80b2\u5408\u4f5c\u3001CP \u5b66\u9662\u3001\u6280\u672f\u54a8\u8be2\u6216\u4e00\u822c\u95ee\u9898\u3002\", \"Email info@accelthinking.com\": \"\u53d1\u9001\u90ae\u4ef6\u81f3 info@accelthinking.com\", \"Oakville, Ontario, Canada\": \"\u52a0\u62ff\u5927\u5b89\u5927\u7565\u7701\u5965\u514b\u7ef4\u5c14\", \"First\": \"\u59d3\", \"Last\": \"\u540d\", \"\u524d\u4e00\u9875\": \"\u59d3\", \"\u540e\u4e00\u9875\": \"\u540d\", \"Name\": \"\u59d3\u540d\", \"Email *\": \"\u7535\u5b50\u90ae\u7bb1 *\", \"Comment or Message\": \"\u7559\u8a00\", \"Contact Purpose\": \"\u8054\u7cfb\u76ee\u7684\", \"Submit\": \"\u63d0\u4ea4\", \"Inquiry Types\": \"\u54a8\u8be2\u7c7b\u578b\", \"Route each conversation to the right business goal.\": \"\u8ba9\u6bcf\u4e00\u6b21\u6c9f\u901a\u90fd\u5bf9\u5e94\u5230\u6e05\u6670\u7684\u4e1a\u52a1\u76ee\u6807\u3002\", \"Educational Partnership\": \"\u6559\u80b2\u5408\u4f5c\", \"Programs for learning centers, schools, academies, and community organizations.\": \"\u9762\u5411\u5b66\u4e60\u4e2d\u5fc3\u3001\u5b66\u6821\u3001\u57f9\u8bad\u673a\u6784\u548c\u793e\u533a\u7ec4\u7ec7\u7684\u8bfe\u7a0b\u9879\u76ee\u3002\", \"Competitive programming and CCC preparation for students aged 12-16.\": \"\u9762\u5411 12-16 \u5c81\u5b66\u751f\u7684\u7ade\u8d5b\u7f16\u7a0b\u4e0e CCC \u5907\u8003\u3002\", \"Technology Consulting\": \"\u6280\u672f\u54a8\u8be2\", \".NET, React, architecture review, AI adoption, and project advisory.\": \".NET\u3001React\u3001\u67b6\u6784\u8bc4\u5ba1\u3001AI \u5e94\u7528\u4e0e\u9879\u76ee\u987e\u95ee\u670d\u52a1\u3002\", \"Blog Category\": \"\u535a\u5ba2\u5206\u7c7b\", \"Weekly competitive programming posts for CCC practice, problem solving, and student learning outcomes.\": \"\u6bcf\u5468\u53d1\u5e03\u7ade\u8d5b\u7f16\u7a0b\u6587\u7ae0\uff0c\u652f\u6301 CCC \u7ec3\u4e60\u3001\u95ee\u9898\u89e3\u51b3\u4e0e\u5b66\u751f\u5b66\u4e60\u6210\u679c\u3002\", \"Latest Articles\": \"\u6700\u65b0\u6587\u7ae0\", \"CCC practice articles with structured explanations and implementation notes.\": \"\u5305\u542b\u7ed3\u6784\u5316\u8bb2\u89e3\u548c\u5b9e\u73b0\u8bf4\u660e\u7684 CCC \u7ec3\u4e60\u6587\u7ae0\u3002\", \"Read More ->\": \"\u9605\u8bfb\u5168\u6587 ->\", \"Back to Challenges\": \"\u8fd4\u56de\u6311\u6218\u5217\u8868\", \"Solution Format\": \"\u89e3\u9898\u7ed3\u6784\", \"summary -> concepts -> code -> review\": \"\u6982\u8ff0 -> \u6982\u5ff5 -> \u4ee3\u7801 -> \u590d\u76d8\", \"\u2190 Back to CP Weekly Challenge\": \"\u2190 \u8fd4\u56de CP \u6bcf\u5468\u6311\u6218\", \"CCC 2026 J4 - Snail Path Solution & Analysis\": \"CCC 2026 J4 - Snail Path \u89e3\u9898\u4e0e\u5206\u6790\", \"CCC 2026 J4 \u2013 Snail Path Solution & Analysis\": \"CCC 2026 J4 - Snail Path \u89e3\u9898\u4e0e\u5206\u6790\", \"Simulate the snail step by step, track slimy squares with a visited set, and count every revisit.\": \"\u9010\u6b65\u6a21\u62df\u8717\u725b\u79fb\u52a8\uff0c\u7528 visited set \u8bb0\u5f55\u5df2\u7ecf\u53d8\u9ecf\u7684\u683c\u5b50\uff0c\u5e76\u7edf\u8ba1\u6bcf\u4e00\u6b21\u91cd\u65b0\u8fdb\u5165\u65e7\u683c\u5b50\u7684\u6b21\u6570\u3002\", \"Imagine the snail starts on one grid square. That starting square is already part of its trail, because the problem says the snail makes the squares it touches slimy. In the example \u201cmove east 3 squares\u201d, there are 4 slimy squares total, which includes the starting square.\": \"\u60f3\u8c61\u8717\u725b\u4ece\u4e00\u4e2a\u7f51\u683c\u65b9\u683c\u5f00\u59cb\u3002\u8fd9\u4e2a\u8d77\u59cb\u65b9\u683c\u5df2\u7ecf\u662f\u5b83\u8def\u5f84\u7684\u4e00\u90e8\u5206\uff0c\u56e0\u4e3a\u9898\u76ee\u8bf4\u660e\u8717\u725b\u78b0\u5230\u7684\u65b9\u683c\u4f1a\u53d8\u9ecf\u3002\u5728\u201c\u5411\u4e1c\u79fb\u52a8 3 \u683c\u201d\u7684\u4f8b\u5b50\u4e2d\uff0c\u4e00\u5171\u6709 4 \u4e2a\u9ecf\u9ecf\u7684\u65b9\u683c\uff0c\u5176\u4e2d\u5305\u62ec\u8d77\u59cb\u65b9\u683c\u3002\", \"Understanding the Problem\": \"\u7406\u89e3\u9898\u76ee\", \"Every time the snail moves one square, we check whether the new square was already slimy.\": \"\u6bcf\u5f53\u8717\u725b\u79fb\u52a8\u4e00\u683c\uff0c\u6211\u4eec\u90fd\u68c0\u67e5\u5b83\u5230\u8fbe\u7684\u65b0\u65b9\u683c\u662f\u5426\u5df2\u7ecf\u662f\u9ecf\u9ecf\u7684\u3002\", \"If it steps onto a square it has never touched before, nothing is added to the answer.\": \"\u5982\u679c\u5b83\u8d70\u5230\u4e00\u4e2a\u4ece\u672a\u78b0\u8fc7\u7684\u65b9\u683c\uff0c\u7b54\u6848\u4e0d\u589e\u52a0\u3002\", \"If it steps onto a square that is already slimy, the snail has returned to an old square, so we add 1 to the answer.\": \"\u5982\u679c\u5b83\u8d70\u5230\u4e00\u4e2a\u5df2\u7ecf\u9ecf\u9ecf\u7684\u65b9\u683c\uff0c\u8bf4\u660e\u8717\u725b\u56de\u5230\u4e86\u65e7\u65b9\u683c\uff0c\u56e0\u6b64\u7b54\u6848\u52a0 1\u3002\", \"So the problem is really asking: as the snail walks step by step, how many times does it revisit an old square?\": \"\u6240\u4ee5\u8fd9\u9053\u9898\u771f\u6b63\u8981\u95ee\u7684\u662f\uff1a\u8717\u725b\u4e00\u6b65\u4e00\u6b65\u79fb\u52a8\u65f6\uff0c\u6709\u591a\u5c11\u6b21\u91cd\u65b0\u8fdb\u5165\u4e86\u65e7\u65b9\u683c\uff1f\", \"Important Detail Students Often Miss\": \"\u5b66\u751f\u7ecf\u5e38\u5ffd\u7565\u7684\u91cd\u8981\u7ec6\u8282\", \"A movement like S2 does not mean one big jump. It means move 1 square south, then move 1 more square south.\": \"\u50cf S2 \u8fd9\u6837\u7684\u79fb\u52a8\u5e76\u4e0d\u8868\u793a\u4e00\u6b21\u5927\u8df3\u8dc3\u3002\u5b83\u8868\u793a\u5148\u5411\u5357\u79fb\u52a8 1 \u683c\uff0c\u518d\u5411\u5357\u79fb\u52a8 1 \u683c\u3002\", \"A movement like\": \"\u50cf\", \"does not mean one big jump. It means move 1 square south, then move 1 more square south.\": \"\u8fd9\u6837\u7684\u79fb\u52a8\u5e76\u4e0d\u8868\u793a\u4e00\u6b21\u5927\u8df3\u8dc3\u3002\u5b83\u8868\u793a\u5148\u5411\u5357\u79fb\u52a8 1 \u683c\uff0c\u518d\u5411\u5357\u79fb\u52a8 1 \u683c\u3002\", \"You must process movements one square at a time, because the snail could enter an already slimy square in the middle of a longer movement. The movement format is a direction letter followed by a positive integer up to 20.\": \"\u5fc5\u987b\u4e00\u683c\u4e00\u683c\u5904\u7406\u79fb\u52a8\uff0c\u56e0\u4e3a\u8717\u725b\u53ef\u80fd\u5728\u4e00\u6b21\u8f83\u957f\u79fb\u52a8\u7684\u4e2d\u9014\u8fdb\u5165\u5df2\u7ecf\u9ecf\u9ecf\u7684\u65b9\u683c\u3002\u79fb\u52a8\u683c\u5f0f\u662f\u4e00\u4e2a\u65b9\u5411\u5b57\u6bcd\u540e\u63a5\u4e00\u4e2a\u6700\u5927\u4e3a 20 \u7684\u6b63\u6574\u6570\u3002\", \"Core DSA Concepts\": \"\u6838\u5fc3 DSA \u6982\u5ff5\", \"Simulation:\": \"\u6a21\u62df\uff1a\", \"follow the snail exactly as described, updating its position and trail step by step.\": \"\u4e25\u683c\u6309\u7167\u9898\u610f\u8ddf\u968f\u8717\u725b\u79fb\u52a8\uff0c\u9010\u6b65\u66f4\u65b0\u4f4d\u7f6e\u548c\u8def\u5f84\u3002\", \"Hash set \/ visited set:\": \"\u54c8\u5e0c\u96c6\u5408 \/ visited set\uff1a\", \"remember which squares are already slimy using coordinate pairs such as (x, y).\": \"\u7528 (x, y) \u8fd9\u6837\u7684\u5750\u6807\u5bf9\u8bb0\u5f55\u54ea\u4e9b\u65b9\u683c\u5df2\u7ecf\u53d8\u9ecf\u3002\", \"Coordinates on a grid:\": \"\u7f51\u683c\u5750\u6807\uff1a\", \"use x for east\/west and y for north\/south.\": \"\u7528 x \u8868\u793a\u4e1c\u897f\u65b9\u5411\uff0c\u7528 y \u8868\u793a\u5357\u5317\u65b9\u5411\u3002\", \"Unit-step processing:\": \"\u9010\u683c\u5904\u7406\uff1a\", \"break each command into single-square moves before checking whether the square was already visited.\": \"\u628a\u6bcf\u6761\u6307\u4ee4\u62c6\u6210\u4e00\u683c\u4e00\u683c\u7684\u79fb\u52a8\uff0c\u518d\u68c0\u67e5\u8be5\u65b9\u683c\u662f\u5426\u5df2\u7ecf\u8bbf\u95ee\u8fc7\u3002\", \"Coordinate Updates\": \"\u5750\u6807\u66f4\u65b0\", \"North:\": \"\u5317\uff1a\", \"South:\": \"\u5357\uff1a\", \"East:\": \"\u4e1c\uff1a\", \"West:\": \"\u897f\uff1a\", \"Big Idea\": \"\u6838\u5fc3\u601d\u8def\", \"Start from the original square and add it to a visited set. For each movement command, repeat the movement one square at a time. After each single step, check whether the new coordinate is already in the set. If it is, increase the revisit count. Then add the coordinate to the set.\": \"\u4ece\u8d77\u59cb\u65b9\u683c\u5f00\u59cb\uff0c\u5e76\u628a\u5b83\u52a0\u5165 visited set\u3002\u5bf9\u4e8e\u6bcf\u6761\u79fb\u52a8\u6307\u4ee4\uff0c\u90fd\u4e00\u683c\u4e00\u683c\u91cd\u590d\u79fb\u52a8\u3002\u6bcf\u8d70\u4e00\u6b65\u540e\uff0c\u68c0\u67e5\u65b0\u7684\u5750\u6807\u662f\u5426\u5df2\u7ecf\u5728\u96c6\u5408\u4e2d\u3002\u5982\u679c\u5728\uff0c\u5c31\u628a\u91cd\u590d\u8fdb\u5165\u6b21\u6570\u52a0 1\u3002\u7136\u540e\u628a\u8be5\u5750\u6807\u52a0\u5165\u96c6\u5408\u3002\", \"Treating \": \"\u628a \", \"Treating\": \"\u628a\", \" as one jump:\": \" \u5f53\u4f5c\u4e00\u6b21\u8df3\u8dc3\uff1a\", \"as one jump:\": \"\u5f53\u4f5c\u4e00\u6b21\u8df3\u8dc3\uff1a\", \"that is wrong. The snail passes through 20 squares one by one, and any of those may already be slimy.\": \"\u8fd9\u662f\u9519\u8bef\u7684\u3002\u8717\u725b\u4f1a\u4e00\u683c\u4e00\u683c\u7ecf\u8fc7 20 \u4e2a\u65b9\u683c\uff0c\u5176\u4e2d\u4efb\u610f\u4e00\u4e2a\u90fd\u53ef\u80fd\u5df2\u7ecf\u662f\u9ecf\u9ecf\u7684\u3002\", \"Forgetting the starting square:\": \"\u5fd8\u8bb0\u8d77\u59cb\u65b9\u683c\uff1a\", \"the starting square must already be in visited, otherwise returning to start will not be counted correctly.\": \"\u8d77\u59cb\u65b9\u683c\u5fc5\u987b\u4e00\u5f00\u59cb\u5c31\u5728 visited \u4e2d\uff0c\u5426\u5219\u56de\u5230\u8d77\u70b9\u65f6\u65e0\u6cd5\u6b63\u786e\u8ba1\u6570\u3002\", \"the starting square must already be in\": \"\u8d77\u59cb\u65b9\u683c\u5fc5\u987b\u4e00\u5f00\u59cb\u5c31\u5728\", \", otherwise returning to start will not be counted correctly.\": \"\uff0c\u5426\u5219\u56de\u5230\u8d77\u70b9\u65f6\u65e0\u6cd5\u6b63\u786e\u8ba1\u6570\u3002\", \"Counting distinct repeated squares instead of total re-entries:\": \"\u7edf\u8ba1\u4e0d\u540c\u7684\u91cd\u590d\u65b9\u683c\uff0c\u800c\u4e0d\u662f\u603b\u91cd\u5165\u6b21\u6570\uff1a\", \"the output is how many times the snail enters a slimy square, not how many slimy squares are revisited. A single square can be entered many times and should be counted many times. The statement explicitly notes that one slimy square can be entered multiple times.\": \"\u8f93\u51fa\u7684\u662f\u8717\u725b\u8fdb\u5165\u9ecf\u9ecf\u65b9\u683c\u7684\u6b21\u6570\uff0c\u800c\u4e0d\u662f\u6709\u591a\u5c11\u4e2a\u9ecf\u9ecf\u65b9\u683c\u88ab\u91cd\u65b0\u8bbf\u95ee\u3002\u4e00\u4e2a\u65b9\u683c\u53ef\u4ee5\u88ab\u8fdb\u5165\u591a\u6b21\uff0c\u4e5f\u5e94\u8be5\u88ab\u8ba1\u6570\u591a\u6b21\u3002\u9898\u76ee\u4e5f\u660e\u786e\u8bf4\u660e\uff0c\u4e00\u4e2a\u9ecf\u9ecf\u7684\u65b9\u683c\u53ef\u4ee5\u88ab\u8fdb\u5165\u591a\u6b21\u3002\", \"Using a list instead of a set:\": \"\u4f7f\u7528 list \u800c\u4e0d\u662f set\uff1a\", \"a set is much faster for checking whether a coordinate has been seen before.\": \"\u68c0\u67e5\u67d0\u4e2a\u5750\u6807\u662f\u5426\u51fa\u73b0\u8fc7\u65f6\uff0cset \u4f1a\u5feb\u5f97\u591a\u3002\", \"CCC 2026 J5\/S2 - Beams of Light Solution & Analysis\": \"CCC 2026 J5\/S2 - Beams of Light \u89e3\u9898\u4e0e\u5206\u6790\", \"CCC 2026 J5\/S2 \u2013 Beams of Light Solution & Analysis\": \"CCC 2026 J5\/S2 - Beams of Light \u89e3\u9898\u4e0e\u5206\u6790\", \"Use interval coverage, a difference array, and prefix sums to answer illumination queries efficiently.\": \"\u4f7f\u7528\u533a\u95f4\u8986\u76d6\u3001\u5dee\u5206\u6570\u7ec4\u548c\u524d\u7f00\u548c\uff0c\u9ad8\u6548\u56de\u7b54\u505c\u8f66\u4f4d\u662f\u5426\u88ab\u7167\u4eae\u7684\u67e5\u8be2\u3002\", \"You have parking spots numbered 1 to N. Each light is hung above one spot P and shines from P - S to P + S, clipped to stay inside 1..N. Then you get Q questions, each asking whether a particular parking spot is lit by at least one light. Since N, L, and Q can each be as large as 500,000, checking every light for every question would be too slow.\": \"\u505c\u8f66\u4f4d\u7f16\u53f7\u4e3a 1 \u5230 N\u3002\u6bcf\u76cf\u706f\u6302\u5728\u4f4d\u7f6e P \u4e0a\u65b9\uff0c\u7167\u4eae\u4ece P - S \u5230 P + S \u7684\u8303\u56f4\uff0c\u5e76\u88ab\u9650\u5236\u5728 1..N \u5185\u3002\u63a5\u4e0b\u6765\u6709 Q \u4e2a\u95ee\u9898\uff0c\u6bcf\u4e2a\u95ee\u9898\u8be2\u95ee\u67d0\u4e2a\u505c\u8f66\u4f4d\u662f\u5426\u81f3\u5c11\u88ab\u4e00\u76cf\u706f\u7167\u4eae\u3002\u7531\u4e8e N\u3001L \u548c Q \u90fd\u53ef\u80fd\u8fbe\u5230 500,000\uff0c\u5982\u679c\u5bf9\u6bcf\u4e2a\u67e5\u8be2\u90fd\u68c0\u67e5\u6bcf\u4e00\u76cf\u706f\uff0c\u4f1a\u975e\u5e38\u6162\u3002\", \"Key Concepts\": \"\u6838\u5fc3\u6982\u5ff5\", \"Interval coverage\": \"\u533a\u95f4\u8986\u76d6\", \"Difference array\": \"\u5dee\u5206\u6570\u7ec4\", \"Prefix sums\": \"\u524d\u7f00\u548c\", \"Preprocessing for O(1) queries\": \"\u9884\u5904\u7406\u540e O(1) \u56de\u7b54\u67e5\u8be2\", \"Thinking Process\": \"\u601d\u8003\u8fc7\u7a0b\", \"Each light covers one continuous interval. For a light at position P with spread S, compute left = max(1, P - S) and right = min(N, P + S). Instead of marking every covered spot, mark only the boundary changes: add 1 at left and subtract 1 just after right. A prefix sum then tells us how many lights cover each parking spot. If the coverage at a queried spot is greater than 0, print Y; otherwise, print N.\": \"\u6bcf\u76cf\u706f\u8986\u76d6\u4e00\u4e2a\u8fde\u7eed\u533a\u95f4\u3002\u5bf9\u4e8e\u4f4d\u7f6e\u4e3a P\u3001\u6269\u6563\u8303\u56f4\u4e3a S \u7684\u706f\uff0c\u8ba1\u7b97 left = max(1, P - S)\uff0cright = min(N, P + S)\u3002\u4e0d\u8981\u9010\u4e2a\u6807\u8bb0\u6240\u6709\u88ab\u7167\u4eae\u7684\u4f4d\u7f6e\uff0c\u800c\u53ea\u8bb0\u5f55\u8fb9\u754c\u53d8\u5316\uff1a\u5728 left \u5904\u52a0 1\uff0c\u5728 right \u4e4b\u540e\u51cf 1\u3002\u4e4b\u540e\u901a\u8fc7\u524d\u7f00\u548c\u5373\u53ef\u77e5\u9053\u6bcf\u4e2a\u505c\u8f66\u4f4d\u88ab\u591a\u5c11\u76cf\u706f\u8986\u76d6\u3002\u5982\u679c\u67e5\u8be2\u4f4d\u7f6e\u7684\u8986\u76d6\u6570\u5927\u4e8e 0\uff0c\u8f93\u51fa Y\uff1b\u5426\u5219\u8f93\u51fa N\u3002\", \"Each light covers one continuous interval. For a light at position P with spread S, compute left = max(1, P \u2013 S) and right = min(N, P + S). Instead of marking every covered spot, mark only the boundary changes: add 1 at left and subtract 1 just after right. A prefix sum then tells us how many lights cover each parking spot. If the coverage at a queried spot is greater than 0, print Y; otherwise, print N.\": \"\u6bcf\u76cf\u706f\u8986\u76d6\u4e00\u4e2a\u8fde\u7eed\u533a\u95f4\u3002\u5bf9\u4e8e\u4f4d\u7f6e\u4e3a P\u3001\u6269\u6563\u8303\u56f4\u4e3a S \u7684\u706f\uff0c\u8ba1\u7b97 left = max(1, P - S)\uff0cright = min(N, P + S)\u3002\u4e0d\u8981\u9010\u4e2a\u6807\u8bb0\u6240\u6709\u88ab\u7167\u4eae\u7684\u4f4d\u7f6e\uff0c\u800c\u53ea\u8bb0\u5f55\u8fb9\u754c\u53d8\u5316\uff1a\u5728 left \u5904\u52a0 1\uff0c\u5728 right \u4e4b\u540e\u51cf 1\u3002\u4e4b\u540e\u901a\u8fc7\u524d\u7f00\u548c\u5373\u53ef\u77e5\u9053\u6bcf\u4e2a\u505c\u8f66\u4f4d\u88ab\u591a\u5c11\u76cf\u706f\u8986\u76d6\u3002\u5982\u679c\u67e5\u8be2\u4f4d\u7f6e\u7684\u8986\u76d6\u6570\u5927\u4e8e 0\uff0c\u8f93\u51fa Y\uff1b\u5426\u5219\u8f93\u51fa N\u3002\", \"Solution #1: Brute Force\": \"\u89e3\u6cd5\u4e00\uff1a\u66b4\u529b\u6807\u8bb0\", \"The most direct idea is to mark every parking spot that each light covers. This is simple and useful for understanding the problem, but it can be too slow when N, L, and Q are large.\": \"\u6700\u76f4\u63a5\u7684\u60f3\u6cd5\u662f\u628a\u6bcf\u76cf\u706f\u8986\u76d6\u7684\u6240\u6709\u505c\u8f66\u4f4d\u9010\u4e2a\u6807\u8bb0\u51fa\u6765\u3002\u8fd9\u4e2a\u65b9\u6cd5\u7b80\u5355\uff0c\u4e5f\u6709\u52a9\u4e8e\u7406\u89e3\u9898\u610f\uff0c\u4f46\u5f53 N\u3001L \u548c Q \u5f88\u5927\u65f6\u4f1a\u592a\u6162\u3002\", \"Solution #2: Difference Array\": \"\u89e3\u6cd5\u4e8c\uff1a\u5dee\u5206\u6570\u7ec4\", \"The optimized solution marks only the start and end boundary changes for each light. After one prefix sum pass, every query can be answered in O(1).\": \"\u4f18\u5316\u65b9\u6cd5\u53ea\u8bb0\u5f55\u6bcf\u76cf\u706f\u8986\u76d6\u533a\u95f4\u7684\u8d77\u70b9\u548c\u7ec8\u70b9\u8fb9\u754c\u53d8\u5316\u3002\u5b8c\u6210\u4e00\u6b21\u524d\u7f00\u548c\u540e\uff0c\u6bcf\u4e2a\u67e5\u8be2\u90fd\u53ef\u4ee5 O(1) \u56de\u7b54\u3002\", \"Python Solution\": \"Python \u89e3\u6cd5\", \"C++ Solution\": \"C++ \u89e3\u6cd5\", \"Complexity Analysis\": \"\u590d\u6742\u5ea6\u5206\u6790\", \"Building the difference array takes O(L). Computing the prefix sums takes O(N). Answering all queries takes O(Q). The total time complexity is O(N + L + Q), and the memory usage is O(N).\": \"\u6784\u5efa\u5dee\u5206\u6570\u7ec4\u9700\u8981 O(L)\uff0c\u8ba1\u7b97\u524d\u7f00\u548c\u9700\u8981 O(N)\uff0c\u56de\u7b54\u6240\u6709\u67e5\u8be2\u9700\u8981 O(Q)\u3002\u603b\u65f6\u95f4\u590d\u6742\u5ea6\u4e3a O(N + L + Q)\uff0c\u7a7a\u95f4\u590d\u6742\u5ea6\u4e3a O(N)\u3002\", \"Common Mistakes\": \"\u5e38\u89c1\u9519\u8bef\", \"Marking every spot covered by every light, which can be too slow for large spreads.\": \"\u9010\u4e2a\u6807\u8bb0\u6bcf\u76cf\u706f\u8986\u76d6\u7684\u6240\u6709\u4f4d\u7f6e\uff0c\u5728\u8303\u56f4\u5f88\u5927\u65f6\u4f1a\u592a\u6162\u3002\", \"Forgetting to clip intervals to the valid range 1..N.\": \"\u5fd8\u8bb0\u628a\u533a\u95f4\u9650\u5236\u5728\u6709\u6548\u8303\u56f4 1..N \u5185\u3002\", \"Forgetting the -1 update at right + 1.\": \"\u5fd8\u8bb0\u5728 right + 1 \u5904\u505a -1 \u66f4\u65b0\u3002\", \"Using nested loops over lights and queries.\": \"\u5bf9\u706f\u548c\u67e5\u8be2\u4f7f\u7528\u5d4c\u5957\u5faa\u73af\u3002\", \"Learning Outcomes\": \"\u5b66\u4e60\u76ee\u6807\", \"Recognize interval coverage problems.\": \"\u8bc6\u522b\u533a\u95f4\u8986\u76d6\u7c7b\u95ee\u9898\u3002\", \"Use a difference array to apply many range updates efficiently.\": \"\u4f7f\u7528\u5dee\u5206\u6570\u7ec4\u9ad8\u6548\u5904\u7406\u5927\u91cf\u533a\u95f4\u66f4\u65b0\u3002\", \"Use prefix sums to convert boundary changes into actual coverage.\": \"\u4f7f\u7528\u524d\u7f00\u548c\u628a\u8fb9\u754c\u53d8\u5316\u8f6c\u6362\u4e3a\u5b9e\u9645\u8986\u76d6\u60c5\u51b5\u3002\", \"Preprocess once so each query can be answered in O(1).\": \"\u901a\u8fc7\u4e00\u6b21\u9884\u5904\u7406\uff0c\u8ba9\u6bcf\u4e2a\u67e5\u8be2\u90fd\u80fd O(1) \u56de\u7b54\u3002\", \"Read Practice Review\": \"\u9605\u8bfb \u7ec3\u4e60 \u590d\u76d8\", \"Read\\nPractice\\nReview\": \"\u9605\u8bfb\\n\u7ec3\u4e60\\n\u590d\u76d8\", \"Part of the Accel Thinking content library for programming, AI literacy, and future skills.\": \"\u52a0\u901f\u5ea6\u601d\u7ef4\u5185\u5bb9\u5e93\u7684\u4e00\u90e8\u5206\uff0c\u9762\u5411\u7f16\u7a0b\u3001AI\u7d20\u517b\u4e0e\u672a\u6765\u6280\u80fd\u5b66\u4e60\u3002\", \"By Berny\": \"\u4f5c\u8005\uff1aBerny\", \"Back to Resources\": \"\u8fd4\u56de\u8d44\u6e90\u6587\u7ae0\", \"Open Channel\": \"\u6253\u5f00\u9891\u9053\", \"LATEST\": \"\u6700\u65b0\", \"Read Full Article\": \"\u9605\u8bfb\u5168\u6587\", \"Python Learning Notes\": \"Python \u5b66\u4e60\u7b14\u8bb0\", \"CP Weekly Challenges\": \"CP \u6bcf\u5468\u6311\u6218\", \"AI Literacy Articles\": \"AI \u7d20\u517b\u6587\u7ae0\", \"Resources for Programming, AI, and Future Skills\": \"\u7f16\u7a0b\u3001AI\u4e0e\u672a\u6765\u6280\u80fd\u8d44\u6e90\", \"A long-term content hub for parents, students, educators, and teams who want practical technology learning guidance.\": \"\u4e00\u4e2a\u957f\u671f\u5185\u5bb9\u5165\u53e3\uff0c\u670d\u52a1\u4e8e\u5e0c\u671b\u83b7\u5f97\u5b9e\u7528\u6280\u672f\u5b66\u4e60\u6307\u5bfc\u7684\u5bb6\u957f\u3001\u5b66\u751f\u3001\u6559\u80b2\u8005\u548c\u56e2\u961f\u3002\", \"Python CCC AI Literacy\": \"Python CCC AI\u7d20\u517b\", \"Start with focused learning notes today. Over time, this becomes the public library behind Accel Thinking.\": \"\u5148\u4ece\u805a\u7126\u7684\u5b66\u4e60\u7b14\u8bb0\u5f00\u59cb\uff0c\u9010\u6b65\u6c89\u6dc0\u4e3a\u52a0\u901f\u5ea6\u601d\u7ef4\u7684\u516c\u5f00\u5185\u5bb9\u5e93\u3002\", \"Explore by Topic\": \"\u6309\u4e3b\u9898\u6d4f\u89c8\", \"Choose a channel to follow weekly articles, learning notes, and practical guidance.\": \"\u9009\u62e9\u4e00\u4e2a\u9891\u9053\uff0c\u6301\u7eed\u9605\u8bfb\u6bcf\u5468\u6587\u7ae0\u3001\u5b66\u4e60\u7b14\u8bb0\u4e0e\u5b9e\u8df5\u6307\u5357\u3002\", \"Practical Python concepts, coding habits, project notes, debugging guidance, and student-friendly explanations.\": \"\u5b9e\u7528 Python \u6982\u5ff5\u3001\u7f16\u7801\u4e60\u60ef\u3001\u9879\u76ee\u7b14\u8bb0\u3001\u8c03\u8bd5\u65b9\u6cd5\uff0c\u4ee5\u53ca\u9002\u5408\u5b66\u751f\u9605\u8bfb\u7684\u89e3\u91ca\u3002\", \"CCC-style problem explanations, implementation notes, common mistakes, and weekly practice challenges.\": \"CCC \u98ce\u683c\u9898\u76ee\u89e3\u6790\u3001\u5b9e\u73b0\u8bf4\u660e\u3001\u5e38\u89c1\u9519\u8bef\u4e0e\u6bcf\u5468\u7ec3\u4e60\u6311\u6218\u3002\", \"Student and parent guidance on using AI tools responsibly while protecting real thinking ability.\": \"\u9762\u5411\u5b66\u751f\u548c\u5bb6\u957f\u7684 AI \u4f7f\u7528\u6307\u5bfc\uff0c\u5f3a\u8c03\u8d1f\u8d23\u4efb\u4f7f\u7528\uff0c\u540c\u65f6\u4fdd\u62a4\u771f\u5b9e\u601d\u8003\u80fd\u529b\u3002\", \"Python Syntax Basics: Print, Variables, and Types\": \"Python \u8bed\u6cd5\u57fa\u7840\uff1aprint\u3001\u53d8\u91cf\u4e0e\u7c7b\u578b\", \"Why Learn Python? Start with Readability, Not Syntax\": \"\u4e3a\u4ec0\u4e48\u5b66\u4e60 Python\uff1f\u4ece\u53ef\u8bfb\u6027\u5f00\u59cb\uff0c\u800c\u4e0d\u662f\u4ece\u8bed\u6cd5\u5f00\u59cb\", \"Using Codex to Support Python JamHack Competition Preparation\": \"\u7528 Codex \u52a9\u529b Python JamHack \u7ade\u8d5b\u51c6\u5907\", \"CCC 2024 J5 - Harvest Waterloo Solution & Analysis\": \"CCC 2024 J5 - Harvest Waterloo \u89e3\u9898\u4e0e\u5206\u6790\", \"CCC 2024 J5 \u2013 Harvest Waterloo Solution & Analysis\": \"CCC 2024 J5 - Harvest Waterloo \u89e3\u9898\u4e0e\u5206\u6790\", \"A beginner-friendly Python note on print(), comments, variable naming, basic types, and converting input before doing math.\": \"\u4e00\u7bc7\u9002\u5408\u521d\u5b66\u8005\u7684 Python \u7b14\u8bb0\uff0c\u4ecb\u7ecd print()\u3001\u6ce8\u91ca\u3001\u53d8\u91cf\u547d\u540d\u3001\u57fa\u7840\u7c7b\u578b\uff0c\u4ee5\u53ca\u505a\u6570\u5b66\u8fd0\u7b97\u524d\u5982\u4f55\u8f6c\u6362\u8f93\u5165\u3002\", \"A short Python Learning Note based on Phase I materials: why Python is a good first language, and why beginners should start with readability rather than memorizing syntax.\": \"\u4e00\u7bc7\u57fa\u4e8e Phase I \u8bb2\u4e49\u7684 Python \u5b66\u4e60\u7b14\u8bb0\uff1a\u4e3a\u4ec0\u4e48 Python \u9002\u5408\u4f5c\u4e3a\u7b2c\u4e00\u95e8\u8bed\u8a00\uff0c\u4ee5\u53ca\u521d\u5b66\u8005\u4e3a\u4ec0\u4e48\u5e94\u5148\u7406\u89e3\u53ef\u8bfb\u6027\uff0c\u800c\u4e0d\u662f\u6025\u7740\u80cc\u8bed\u6cd5\u3002\", \"A practical look at how Codex can help students prepare for Python JamHack without replacing their own thinking, debugging, and teamwork.\": \"\u4e00\u7bc7\u5b9e\u8df5\u578b\u6587\u7ae0\uff0c\u8ba8\u8bba\u5b66\u751f\u5982\u4f55\u4f7f\u7528 Codex \u51c6\u5907 Python JamHack\uff0c\u540c\u65f6\u4e0d\u66ff\u4ee3\u81ea\u5df1\u7684\u601d\u8003\u3001\u8c03\u8bd5\u548c\u56e2\u961f\u534f\u4f5c\u3002\", \"After students understand why Python is a good first language, the next step is learning how to read a small Python program without feeling lost. Syntax is not just punctuation. It is the visible structure that tells us what the program is doing.\": \"\u5f53\u5b66\u751f\u7406\u89e3\u4e86\u4e3a\u4ec0\u4e48 Python \u9002\u5408\u4f5c\u4e3a\u7b2c\u4e00\u95e8\u8bed\u8a00\u4e4b\u540e\uff0c\u4e0b\u4e00\u6b65\u5c31\u662f\u5b66\u4f1a\u9605\u8bfb\u4e00\u4e2a\u5c0f\u578b Python \u7a0b\u5e8f\u800c\u4e0d\u8ff7\u5931\u3002\u8bed\u6cd5\u4e0d\u53ea\u662f\u6807\u70b9\u548c\u683c\u5f0f\uff0c\u5b83\u662f\u7a0b\u5e8f\u7ed3\u6784\u7684\u5916\u5728\u8868\u73b0\uff0c\u544a\u8bc9\u6211\u4eec\u7a0b\u5e8f\u6b63\u5728\u505a\u4ec0\u4e48\u3002\", \"Start with print()\": \"\u4ece print() \u5f00\u59cb\", \"The first useful Python command is usually print(). It sends a value to the screen so we can see what the program is doing.\": \"\u7b2c\u4e00\u4e2a\u771f\u6b63\u6709\u7528\u7684 Python \u547d\u4ee4\u901a\u5e38\u662f print()\u3002\u5b83\u628a\u503c\u8f93\u51fa\u5230\u5c4f\u5e55\u4e0a\uff0c\u8ba9\u6211\u4eec\u770b\u5230\u7a0b\u5e8f\u6b63\u5728\u505a\u4ec0\u4e48\u3002\", \"For beginners, print() is more than output. It is also a simple debugging tool. When a program feels confusing, printing intermediate values can help students check what is happening step by step.\": \"\u5bf9\u521d\u5b66\u8005\u6765\u8bf4\uff0cprint() \u4e0d\u53ea\u662f\u8f93\u51fa\u5de5\u5177\uff0c\u4e5f\u662f\u6700\u7b80\u5355\u7684\u8c03\u8bd5\u5de5\u5177\u3002\u5f53\u7a0b\u5e8f\u8ba9\u4eba\u56f0\u60d1\u65f6\uff0c\u6253\u5370\u4e2d\u95f4\u503c\u53ef\u4ee5\u5e2e\u52a9\u5b66\u751f\u4e00\u6b65\u4e00\u6b65\u68c0\u67e5\u53d1\u751f\u4e86\u4ec0\u4e48\u3002\", \"Use Comments to Explain Your Thinking\": \"\u7528\u6ce8\u91ca\u89e3\u91ca\u4f60\u7684\u601d\u8def\", \"Python ignores anything after # on the same line. That makes comments useful for explaining intent.\": \"Python \u4f1a\u5ffd\u7565\u540c\u4e00\u884c\u4e2d # \u540e\u9762\u7684\u5185\u5bb9\u3002\u56e0\u6b64\uff0c\u6ce8\u91ca\u5f88\u9002\u5408\u7528\u6765\u89e3\u91ca\u4ee3\u7801\u610f\u56fe\u3002\", \"A good comment should explain why the code exists, not simply repeat what the code already says.\": \"\u597d\u7684\u6ce8\u91ca\u5e94\u8be5\u89e3\u91ca\u4ee3\u7801\u4e3a\u4ec0\u4e48\u5b58\u5728\uff0c\u800c\u4e0d\u662f\u7b80\u5355\u91cd\u590d\u4ee3\u7801\u672c\u8eab\u5df2\u7ecf\u8868\u8fbe\u7684\u5185\u5bb9\u3002\", \"Variables Give Names to Ideas\": \"\u53d8\u91cf\u4e3a\u60f3\u6cd5\u547d\u540d\", \"A variable stores a value so we can reuse it later. Clear variable names make programs easier to read.\": \"\u53d8\u91cf\u7528\u6765\u4fdd\u5b58\u4e00\u4e2a\u503c\uff0c\u65b9\u4fbf\u4e4b\u540e\u91cd\u590d\u4f7f\u7528\u3002\u6e05\u6670\u7684\u53d8\u91cf\u540d\u4f1a\u8ba9\u7a0b\u5e8f\u66f4\u5bb9\u6613\u9605\u8bfb\u3002\", \"Python variable names are case-sensitive, so score and Score are different names. In student code, it is better to use lowercase words separated by underscores, also called snake case.\": \"Python \u7684\u53d8\u91cf\u540d\u533a\u5206\u5927\u5c0f\u5199\uff0c\u6240\u4ee5 score \u548c Score \u662f\u4e24\u4e2a\u4e0d\u540c\u7684\u540d\u5b57\u3002\u5728\u5b66\u751f\u4ee3\u7801\u4e2d\uff0c\u66f4\u63a8\u8350\u4f7f\u7528\u5c0f\u5199\u5355\u8bcd\u5e76\u7528\u4e0b\u5212\u7ebf\u8fde\u63a5\uff0c\u4e5f\u5c31\u662f snake case\u3002\", \"Python Infers Types\": \"Python \u4f1a\u63a8\u65ad\u7c7b\u578b\", \"Python is dynamically typed. Students do not need to declare a variable type before assigning a value.\": \"Python \u662f\u52a8\u6001\u7c7b\u578b\u8bed\u8a00\u3002\u5b66\u751f\u5728\u7ed9\u53d8\u91cf\u8d4b\u503c\u4e4b\u524d\uff0c\u4e0d\u9700\u8981\u5148\u58f0\u660e\u53d8\u91cf\u7c7b\u578b\u3002\", \"This flexibility is helpful, but it also means students should pay attention to what kind of value each variable contains.\": \"\u8fd9\u79cd\u7075\u6d3b\u6027\u5f88\u6709\u5e2e\u52a9\uff0c\u4f46\u4e5f\u610f\u5473\u7740\u5b66\u751f\u9700\u8981\u7559\u610f\u6bcf\u4e2a\u53d8\u91cf\u91cc\u4fdd\u5b58\u7684\u662f\u4ec0\u4e48\u7c7b\u578b\u7684\u503c\u3002\", \"Convert Input Before Doing Math\": \"\u505a\u6570\u5b66\u8fd0\u7b97\u524d\u5148\u8f6c\u6362\u8f93\u5165\", \"User input arrives as text. If we want to do arithmetic, we usually need to convert it with int() or float().\": \"\u7528\u6237\u8f93\u5165\u8fdb\u6765\u65f6\u662f\u6587\u672c\u3002\u5982\u679c\u8981\u505a\u7b97\u672f\u8fd0\u7b97\uff0c\u901a\u5e38\u9700\u8981\u7528 int() \u6216 float() \u5148\u8f6c\u6362\u7c7b\u578b\u3002\", \"This is one of the most common early Python mistakes: trying to add input strings as if they were numbers.\": \"\u8fd9\u662f Python \u521d\u5b66\u9636\u6bb5\u6700\u5e38\u89c1\u7684\u9519\u8bef\u4e4b\u4e00\uff1a\u628a\u8f93\u5165\u5b57\u7b26\u4e32\u5f53\u6210\u6570\u5b57\u76f4\u63a5\u76f8\u52a0\u3002\", \"Practice Prompt\": \"\u7ec3\u4e60\u63d0\u793a\", \"Write a short program that:\": \"\u5199\u4e00\u4e2a\u5c0f\u7a0b\u5e8f\uff0c\u5b8c\u6210\u4ee5\u4e0b\u4efb\u52a1\uff1a\", \"Reads a student's name.\": \"\u8bfb\u53d6\u4e00\u540d\u5b66\u751f\u7684\u59d3\u540d\u3002\", \"Reads two quiz scores.\": \"\u8bfb\u53d6\u4e24\u6b21\u5c0f\u6d4b\u6210\u7ee9\u3002\", \"Converts the scores to integers.\": \"\u628a\u6210\u7ee9\u8f6c\u6362\u4e3a\u6574\u6570\u3002\", \"Prints a sentence with the student's average score.\": \"\u8f93\u51fa\u4e00\u53e5\u8bdd\uff0c\u5305\u542b\u8fd9\u540d\u5b66\u751f\u7684\u5e73\u5747\u5206\u3002\", \"Key Takeaway\": \"\u5173\u952e\u6536\u83b7\", \"Beginner syntax should be learned through reading and small experiments. Focus first on a few reliable habits: print values, name variables clearly, check types when confused, and convert input before doing math.\": \"\u521d\u5b66\u8bed\u6cd5\u5e94\u8be5\u901a\u8fc7\u9605\u8bfb\u548c\u5c0f\u5b9e\u9a8c\u6765\u638c\u63e1\u3002\u5148\u517b\u6210\u51e0\u4e2a\u53ef\u9760\u4e60\u60ef\uff1a\u6253\u5370\u503c\u3001\u6e05\u6670\u547d\u540d\u53d8\u91cf\u3001\u56f0\u60d1\u65f6\u68c0\u67e5\u7c7b\u578b\u3001\u505a\u6570\u5b66\u8fd0\u7b97\u524d\u8f6c\u6362\u8f93\u5165\u3002\", \"Many students start learning Python by trying to memorize syntax: where to put parentheses, how to write a loop, or which function name to use. Syntax matters, but it is not the best starting point.\": \"\u5f88\u591a\u5b66\u751f\u521a\u5f00\u59cb\u5b66 Python \u65f6\uff0c\u4f1a\u6025\u7740\u80cc\u8bed\u6cd5\uff1a\u62ec\u53f7\u653e\u5728\u54ea\u91cc\u3001\u5faa\u73af\u600e\u4e48\u5199\u3001\u51fd\u6570\u540d\u8be5\u7528\u54ea\u4e2a\u3002\u8bed\u6cd5\u5f53\u7136\u91cd\u8981\uff0c\u4f46\u5b83\u4e0d\u662f\u6700\u597d\u7684\u8d77\u70b9\u3002\", \"A better first question is: what kind of thinking does Python encourage?\": \"\u66f4\u597d\u7684\u7b2c\u4e00\u4e2a\u95ee\u9898\u662f\uff1aPython \u9f13\u52b1\u6211\u4eec\u5f62\u6210\u4ec0\u4e48\u6837\u7684\u601d\u8003\u65b9\u5f0f\uff1f\", \"Python Is Friendly, But Not Because It Is \\\"Easy\\\"\": \"Python \u5f88\u53cb\u597d\uff0c\u4f46\u4e0d\u7b49\u4e8e\u201c\u5f88\u7b80\u5355\u201d\", \"People often say Python is easy. That can be misleading. Programming is still hard because students must learn how to break problems down, test ideas, debug mistakes, and explain logic clearly.\": \"\u4eba\u4eec\u5e38\u8bf4 Python \u5f88\u7b80\u5355\uff0c\u8fd9\u79cd\u8bf4\u6cd5\u53ef\u80fd\u4f1a\u8bef\u5bfc\u5b66\u751f\u3002\u7f16\u7a0b\u4ecd\u7136\u6709\u96be\u5ea6\uff0c\u56e0\u4e3a\u5b66\u751f\u9700\u8981\u5b66\u4e60\u5982\u4f55\u62c6\u89e3\u95ee\u9898\u3001\u6d4b\u8bd5\u60f3\u6cd5\u3001\u8c03\u8bd5\u9519\u8bef\uff0c\u5e76\u6e05\u695a\u89e3\u91ca\u903b\u8f91\u3002\", \"Python feels friendly because it removes some unnecessary visual noise. A simple program can look close to plain English:\": \"Python \u4e4b\u6240\u4ee5\u663e\u5f97\u53cb\u597d\uff0c\u662f\u56e0\u4e3a\u5b83\u51cf\u5c11\u4e86\u4e00\u4e9b\u4e0d\u5fc5\u8981\u7684\u89c6\u89c9\u566a\u97f3\u3002\u4e00\u4e2a\u7b80\u5355\u7a0b\u5e8f\u770b\u8d77\u6765\u53ef\u4ee5\u63a5\u8fd1\u65e5\u5e38\u82f1\u8bed\uff1a\", \"This allows beginners to focus less on ceremony and more on the core idea: giving precise instructions to a computer.\": \"\u8fd9\u8ba9\u521d\u5b66\u8005\u53ef\u4ee5\u5c11\u5173\u6ce8\u5f62\u5f0f\uff0c\u591a\u5173\u6ce8\u6838\u5fc3\uff1a\u5982\u4f55\u7ed9\u8ba1\u7b97\u673a\u660e\u786e\u3001\u7cbe\u786e\u7684\u6307\u4ee4\u3002\", \"Readability Counts\": \"\u53ef\u8bfb\u6027\u5f88\u91cd\u8981\", \"One of the most important ideas in Python is readability. Code is not only written for the computer. It is also written for people: classmates, teachers, teammates, and your future self.\": \"Python \u4e2d\u6700\u91cd\u8981\u7684\u7406\u5ff5\u4e4b\u4e00\u662f\u53ef\u8bfb\u6027\u3002\u4ee3\u7801\u4e0d\u53ea\u662f\u5199\u7ed9\u8ba1\u7b97\u673a\u770b\u7684\uff0c\u4e5f\u662f\u5199\u7ed9\u4eba\u770b\u7684\uff1a\u540c\u5b66\u3001\u8001\u5e08\u3001\u961f\u53cb\uff0c\u4ee5\u53ca\u672a\u6765\u7684\u81ea\u5df1\u3002\", \"For students, this means a good Python program should be easy to follow. Variable names should be meaningful. Steps should be organized. The logic should be visible.\": \"\u5bf9\u5b66\u751f\u6765\u8bf4\uff0c\u4e00\u4e2a\u597d\u7684 Python \u7a0b\u5e8f\u5e94\u8be5\u5bb9\u6613\u8ddf\u4e0a\u3002\u53d8\u91cf\u540d\u8981\u6709\u610f\u4e49\uff0c\u6b65\u9aa4\u8981\u6709\u7ec4\u7ec7\uff0c\u903b\u8f91\u8981\u770b\u5f97\u89c1\u3002\", \"This is better for learning than trying to make code short, clever, or mysterious.\": \"\u8fd9\u6bd4\u4e00\u5f00\u59cb\u5c31\u8ffd\u6c42\u4ee3\u7801\u77ed\u3001\u5de7\u5999\u6216\u96be\u61c2\u66f4\u9002\u5408\u5b66\u4e60\u3002\", \"Do Not Start by Memorizing Every Detail\": \"\u4e0d\u8981\u4ece\u80cc\u6240\u6709\u7ec6\u8282\u5f00\u59cb\", \"When learning a first programming language, students sometimes feel they must memorize everything before writing code. That is not how programmers actually work.\": \"\u5b66\u4e60\u7b2c\u4e00\u95e8\u7f16\u7a0b\u8bed\u8a00\u65f6\uff0c\u5b66\u751f\u6709\u65f6\u4f1a\u89c9\u5f97\u5fc5\u987b\u5148\u80cc\u5b8c\u6240\u6709\u5185\u5bb9\u624d\u80fd\u5199\u4ee3\u7801\u3002\u4f46\u771f\u5b9e\u7684\u7a0b\u5e8f\u5458\u5e76\u4e0d\u662f\u8fd9\u6837\u5de5\u4f5c\u7684\u3002\", \"A more practical approach is:\": \"\u66f4\u5b9e\u9645\u7684\u65b9\u6cd5\u662f\uff1a\", \"Read small examples.\": \"\u9605\u8bfb\u5c0f\u4f8b\u5b50\u3002\", \"Modify them.\": \"\u4fee\u6539\u5b83\u4eec\u3002\", \"Run the code.\": \"\u8fd0\u884c\u4ee3\u7801\u3002\", \"Observe what changes.\": \"\u89c2\u5bdf\u53d1\u751f\u4e86\u4ec0\u4e48\u53d8\u5316\u3002\", \"Write down patterns you see often.\": \"\u8bb0\u5f55\u7ecf\u5e38\u51fa\u73b0\u7684\u6a21\u5f0f\u3002\", \"Syntax becomes familiar through repeated use. The deeper skill is learning how to ask: what is the program trying to do, and how should the steps be organized?\": \"\u8bed\u6cd5\u4f1a\u5728\u53cd\u590d\u4f7f\u7528\u4e2d\u9010\u6e10\u719f\u6089\u3002\u66f4\u6df1\u5c42\u7684\u80fd\u529b\u662f\u5b66\u4f1a\u8ffd\u95ee\uff1a\u8fd9\u4e2a\u7a0b\u5e8f\u60f3\u505a\u4ec0\u4e48\uff1f\u6b65\u9aa4\u5e94\u8be5\u5982\u4f55\u7ec4\u7ec7\uff1f\", \"REPL vs .py File\": \"REPL \u4e0e .py \u6587\u4ef6\", \"Students should know two ways to run Python:\": \"\u5b66\u751f\u5e94\u8be5\u77e5\u9053\u4e24\u79cd\u8fd0\u884c Python \u7684\u65b9\u5f0f\uff1a\", \"1. The REPL\": \"1. REPL\", \"The REPL is an interactive Python prompt. It is useful for quick experiments.\": \"REPL \u662f\u4ea4\u4e92\u5f0f Python \u63d0\u793a\u7b26\uff0c\u9002\u5408\u5feb\u901f\u505a\u5c0f\u5b9e\u9a8c\u3002\", \"Use the REPL when you want to test one small idea.\": \"\u5f53\u4f60\u60f3\u6d4b\u8bd5\u4e00\u4e2a\u5f88\u5c0f\u7684\u60f3\u6cd5\u65f6\uff0c\u53ef\u4ee5\u4f7f\u7528 REPL\u3002\", \"2. A .py File\": \"2. .py \u6587\u4ef6\", \"A Python file is better when the program has multiple steps and should be saved.\": \"\u5f53\u7a0b\u5e8f\u6709\u591a\u4e2a\u6b65\u9aa4\u5e76\u4e14\u9700\u8981\u4fdd\u5b58\u65f6\uff0cPython \u6587\u4ef6\u66f4\u5408\u9002\u3002\", \"Use a .py file when you are building a real program, homework solution, or contest answer.\": \"\u5f53\u4f60\u5728\u5199\u4e00\u4e2a\u771f\u6b63\u7684\u7a0b\u5e8f\u3001\u4f5c\u4e1a\u89e3\u7b54\u6216\u7ade\u8d5b\u7b54\u6848\u65f6\uff0c\u5e94\u8be5\u4f7f\u7528 .py \u6587\u4ef6\u3002\", \"A Good First Learning Habit\": \"\u4e00\u4e2a\u597d\u7684\u5165\u95e8\u5b66\u4e60\u4e60\u60ef\", \"For every new Python concept, students should ask three questions:\": \"\u9047\u5230\u6bcf\u4e2a\u65b0\u7684 Python \u6982\u5ff5\u65f6\uff0c\u5b66\u751f\u90fd\u53ef\u4ee5\u95ee\u4e09\u4e2a\u95ee\u9898\uff1a\", \"What problem does this concept help solve?\": \"\u8fd9\u4e2a\u6982\u5ff5\u5e2e\u52a9\u89e3\u51b3\u4ec0\u4e48\u95ee\u9898\uff1f\", \"What does a simple example look like?\": \"\u4e00\u4e2a\u7b80\u5355\u4f8b\u5b50\u662f\u4ec0\u4e48\u6837\u7684\uff1f\", \"What mistake would be easy to make?\": \"\u6700\u5bb9\u6613\u72af\u7684\u9519\u8bef\u662f\u4ec0\u4e48\uff1f\", \"This habit is more useful than memorizing a long list of syntax rules.\": \"\u8fd9\u4e2a\u4e60\u60ef\u6bd4\u80cc\u4e00\u957f\u4e32\u8bed\u6cd5\u89c4\u5219\u66f4\u6709\u7528\u3002\", \"Try this small exercise:\": \"\u8bd5\u8bd5\u8fd9\u4e2a\u5c0f\u7ec3\u4e60\uff1a\", \"Create a file named hello.py.\": \"\u521b\u5efa\u4e00\u4e2a\u540d\u4e3a hello.py \u7684\u6587\u4ef6\u3002\", \"Print your name.\": \"\u6253\u5370\u4f60\u7684\u540d\u5b57\u3002\", \"Create two variables: first_score and second_score.\": \"\u521b\u5efa\u4e24\u4e2a\u53d8\u91cf\uff1afirst_score \u548c second_score\u3002\", \"Print their average.\": \"\u6253\u5370\u5b83\u4eec\u7684\u5e73\u5747\u503c\u3002\", \"Rename the variables to make them clearer.\": \"\u91cd\u65b0\u547d\u540d\u53d8\u91cf\uff0c\u8ba9\u5b83\u4eec\u66f4\u6e05\u6670\u3002\", \"Python is a strong first language because it helps students practice clear thinking. The goal is not to memorize syntax as fast as possible. The goal is to learn how to write code that is readable, testable, and easy to explain.\": \"Python \u662f\u4e00\u95e8\u5f88\u597d\u7684\u7b2c\u4e00\u7f16\u7a0b\u8bed\u8a00\uff0c\u56e0\u4e3a\u5b83\u80fd\u5e2e\u52a9\u5b66\u751f\u7ec3\u4e60\u6e05\u6670\u601d\u8003\u3002\u76ee\u6807\u4e0d\u662f\u5c3d\u5feb\u80cc\u5b8c\u8bed\u6cd5\uff0c\u800c\u662f\u5b66\u4f1a\u5199\u51fa\u53ef\u8bfb\u3001\u53ef\u6d4b\u8bd5\u3001\u6613\u89e3\u91ca\u7684\u4ee3\u7801\u3002\"};\nconst titleMap = map;\n  document.documentElement.lang = 'zh-CN';\n  Object.keys(map).sort(function(a,b){return b.length-a.length;}).forEach(function(k){ document.title = document.title.replace(k, map[k]); });\n  function animatedHeading(el, text) {\n    const words = text.includes(' ') ? text.split(' ') : Array.from(text);\n    let offset = 0;\n    el.textContent = '';\n    words.forEach(function(word, wordIndex) {\n      const wordSpan = document.createElement('span');\n      wordSpan.className = 'ati-word';\n      Array.from(word).forEach(function(ch, i) {\n        const letter = document.createElement('span');\n        letter.className = 'ati-letter';\n        letter.style.setProperty('--i', offset + i);\n        letter.textContent = ch;\n        wordSpan.appendChild(letter);\n      });\n      el.appendChild(wordSpan);\n      offset += word.length + 1;\n      if (text.includes(' ') && wordIndex < words.length - 1) {\n        el.appendChild(document.createTextNode(' '));\n      }\n    });\n  }\n  document.querySelectorAll('h1[aria-label]').forEach(function(el){\n    const key = el.getAttribute('aria-label');\n    if (titleMap[key]) animatedHeading(el, titleMap[key]);\n  });\n  const skip = new Set(['SCRIPT','STYLE','PRE','CODE','TEXTAREA']);\n  const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, {\n    acceptNode: function(node){\n      const parent = node.parentElement;\n      if (!parent || skip.has(parent.tagName)) return NodeFilter.FILTER_REJECT;\n      return node.nodeValue.trim() ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n    }\n  });\n  const nodes = [];\n  while (walker.nextNode()) nodes.push(walker.currentNode);\n  nodes.forEach(function(node){\n    const raw = node.nodeValue;\n    const trimmed = raw.trim();\n    if (map[trimmed]) node.nodeValue = raw.replace(trimmed, map[trimmed]);\n    else if (trimmed.includes('Accel Thinking')) node.nodeValue = raw.replace(\/Accel Thinking\/g, '\u52a0\u901f\u5ea6\u601d\u7ef4');\n  });\n  document.querySelectorAll('.ati-home h2,.ati-home h3,.ati-home p,.ati-home a,.ati-home span,.ati-home strong,.ati-home b,.ati-home small,.ati-home li,.ati-page h2,.ati-page h3,.ati-page p,.ati-page a,.ati-page span,.ati-page strong,.ati-page b,.ati-page small,.ati-page li').forEach(function(el){\n    if (el.closest('pre,code,script,style,textarea') || el.querySelector('pre,code,script,style,textarea')) return;\n    const key = el.textContent.trim().replace(\/\\s+\/g, ' ');\n    const compactKey = key.replace(\/\\s+\/g, '');\n    if (map[key]) el.textContent = map[key];\n    else if (map[compactKey]) el.textContent = map[compactKey];\n  });\n  document.querySelectorAll('input[placeholder], textarea[placeholder], option, label').forEach(function(el){\n    const text = (el.textContent || el.getAttribute('placeholder') || '').trim();\n    if (map[text]) {\n      if (el.hasAttribute('placeholder')) el.setAttribute('placeholder', map[text]);\n      else el.textContent = map[text];\n    }\n  });\n})();\n<\/script><\/p>\n<style data-source=\"ati_article_share_tools\">\n\/* ati_article_bottom_gap_fix_20260919 *\/\n.entry-content>p:has(>script){display:none!important;height:0!important;margin:0!important;padding:0!important;overflow:hidden!important;line-height:0!important}\n.ati-share-tools{margin:0 0 30px!important;padding:20px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px}\n.ati-share-tools p{margin:0!important}\n.ati-share-tools .ati-share-kicker{color:#b47c00!important;font-size:13px!important;font-weight:900!important;text-transform:uppercase;letter-spacing:.08em}\n.ati-share-note{margin-top:6px!important;color:#475569!important;font-size:15px!important;line-height:1.45!important}\n.ati-share-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}\n.ati-share-actions button,.ati-share-actions a{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:0 13px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;color:#0f172a!important;font:inherit;font-size:13px;font-weight:900;line-height:1;cursor:pointer;text-decoration:none!important}\n.ati-share-actions button:hover,.ati-share-actions a:hover{border-color:#ffc400;background:#fff7d6}\n.ati-share-actions [data-share-copy-link],.ati-share-actions [data-share-native]{background:#ffc400;border-color:#ffc400;color:#050505!important}\n.ati-share-qr{display:flex;gap:14px;align-items:center;margin-top:16px;padding:14px;background:#fff;border:1px solid #e2e8f0;border-radius:8px}\n.ati-share-qr[hidden]{display:none!important}.ati-share-qr img{width:118px;height:118px;border-radius:6px}.ati-share-qr p{color:#475569!important;font-size:14px!important;line-height:1.4!important}\n.ati-share-status{min-height:18px;margin-top:10px!important;color:#0f766e!important;font-size:13px!important;font-weight:800!important}\n@media(max-width:640px){.ati-share-actions button,.ati-share-actions a{width:100%}.ati-share-qr{align-items:flex-start}.ati-share-qr img{width:104px;height:104px}}\n<\/style>\n<p><script data-source=\"ati_article_share_tools\">\n(function(){\n  function text(isZh, en, zh){ return isZh ? zh : en; }\n  function copyText(value, status, message){\n    function done(){ if(status) status.textContent = message; }\n    function fallback(){\n      var input = document.createElement('textarea');\n      input.value = value;\n      input.setAttribute('readonly', '');\n      input.style.position = 'fixed';\n      input.style.left = '-9999px';\n      document.body.appendChild(input);\n      input.select();\n      try { document.execCommand('copy'); } catch(e) {}\n      document.body.removeChild(input);\n      done();\n    }\n    if (navigator.clipboard && navigator.clipboard.writeText) {\n      navigator.clipboard.writeText(value).then(done).catch(fallback);\n    } else fallback();\n  }\n  document.querySelectorAll('[data-ati-share]').forEach(function(box){\n    if (box.dataset.ready) return;\n    box.dataset.ready = '1';\n    var isZh = location.pathname.toLowerCase().includes('\/zh_cn\/');\n    var pageUrl = location.origin + location.pathname;\n    var title = (document.querySelector('.ati-hero h1') || document.querySelector('h1'))?.innerText.trim() || document.title.replace(\/\\s+-\\s+.*$\/, '');\n    var status = box.querySelector('[data-share-status]');\n    var note = box.querySelector('.ati-share-note');\n    var kicker = box.querySelector('.ati-share-kicker');\n    var qrText = box.querySelector('.ati-share-qr p');\n    if (isZh) {\n      kicker.textContent = '\u5206\u4eab\u8fd9\u7bc7\u6587\u7ae0';\n      note.textContent = '\u590d\u5236\u94fe\u63a5\u3001\u8c03\u7528\u624b\u673a\u5206\u4eab\u9762\u677f\u3001\u7528\u5fae\u4fe1\u626b\u7801\uff0c\u6216\u901a\u8fc7\u90ae\u4ef6\u53d1\u9001\u3002';\n      qrText.textContent = '\u7528\u5fae\u4fe1\u626b\u7801\u540e\uff0c\u53ef\u5c06\u6587\u7ae0\u94fe\u63a5\u8f6c\u53d1\u7ed9\u597d\u53cb\u6216\u7fa4\u804a\u3002';\n    }\n    var labels = {\n      '[data-share-native]': text(isZh, 'Share', '\u7cfb\u7edf\u5206\u4eab'),\n      '[data-share-copy-link]': text(isZh, 'Copy Link', '\u590d\u5236\u94fe\u63a5'),\n      '[data-share-wechat]': text(isZh, 'WeChat QR', '\u5fae\u4fe1\u4e8c\u7ef4\u7801')\n    };\n    Object.keys(labels).forEach(function(sel){ var el = box.querySelector(sel); if(el) el.textContent = labels[sel]; });\n    var email = box.querySelector('[data-share-email]');\n    if (email) email.href = 'mailto:?subject=' + encodeURIComponent(title) + '&body=' + encodeURIComponent(title + '\\n\\n' + pageUrl);\n    var qrImg = box.querySelector('[data-share-qr-img]');\n    if (qrImg) qrImg.src = 'https:\/\/api.qrserver.com\/v1\/create-qr-code\/?size=180x180&data=' + encodeURIComponent(pageUrl);\n    var nativeBtn = box.querySelector('[data-share-native]');\n    if (nativeBtn) nativeBtn.addEventListener('click', function(){\n      if (navigator.share) {\n        navigator.share({title:title, url:pageUrl}).catch(function(){});\n      } else {\n        copyText(pageUrl, status, text(isZh, 'Link copied. You can paste it into any app.', '\u94fe\u63a5\u5df2\u590d\u5236\uff0c\u53ef\u7c98\u8d34\u5230\u4efb\u610f\u5e94\u7528\u3002'));\n      }\n    });\n    var copyBtn = box.querySelector('[data-share-copy-link]');\n    if (copyBtn) copyBtn.addEventListener('click', function(){\n      copyText(pageUrl, status, text(isZh, 'Link copied.', '\u94fe\u63a5\u5df2\u590d\u5236\u3002'));\n    });\n    var qrBtn = box.querySelector('[data-share-wechat]');\n    if (qrBtn) qrBtn.addEventListener('click', function(){\n      var qr = box.querySelector('[data-share-qr]');\n      if (qr) qr.hidden = !qr.hidden;\n    });\n  });\n})();\n<\/script><\/p>\n<style data-source=\"ati_ccc_dsa_roadmap_article_assets\">\n.ati-lang-zh{display:none!important}\nhtml[lang^=\"zh\"] .ati-lang-en,body.translatepress-zh_CN .ati-lang-en{display:none!important}\nhtml[lang^=\"zh\"] .ati-lang-zh,body.translatepress-zh_CN .ati-lang-zh{display:block!important}\nhtml[lang^=\"zh\"] section.ati-lang-zh,body.translatepress-zh_CN section.ati-lang-zh{display:grid!important}\nhtml[lang^=\"zh\"] .ati-feedback-cta.ati-lang-zh,body.translatepress-zh_CN .ati-feedback-cta.ati-lang-zh{display:flex!important}\n.ati-post-article pre{margin:18px 0 24px!important;padding:18px 20px!important;overflow:auto;border:1px solid #263244;border-radius:8px;background:#0f172a!important;color:#e5e7eb!important;font-size:14px!important;line-height:1.55!important}\n.ati-post-article pre code{display:block;padding:0!important;background:transparent!important;color:inherit!important;white-space:pre!important}\n.ati-post-article code{padding:.14em .34em;border-radius:4px;background:#eef2f7;color:#0f172a;font-size:.92em}\n.ati-post-article h3{margin:30px 0 12px!important;color:#0f172a!important;font-size:23px!important;font-weight:900!important;line-height:1.25!important}\n.ati-post-article ul,.ati-post-article ol{margin:12px 0 22px!important;padding-left:24px!important;color:#334155}\n.ati-post-article li{margin:8px 0!important;line-height:1.65!important}\n.ati-post-article .ati-table-wrap{margin:18px 0 26px;overflow-x:auto;border:1px solid #e2e8f0;border-radius:8px;background:#fff}\n.ati-post-article table{width:100%;border-collapse:collapse;color:#334155;font-size:14px;line-height:1.45}\n.ati-post-article th{background:#f8fafc;color:#0f172a;font-weight:900;text-align:left}\n.ati-post-article th,.ati-post-article td{padding:11px 13px;border-bottom:1px solid #e2e8f0;vertical-align:top}\n.ati-post-article tr:last-child td{border-bottom:0}\n.ati-feedback-cta{display:flex;align-items:center;justify-content:space-between;gap:24px;margin:34px 0 24px;padding:22px 24px;border:1px solid #e2e8f0;border-left:4px solid #ffc400;border-radius:8px;background:#f8fafc}\n.ati-feedback-copy{min-width:0}\n.ati-feedback-cta p{margin:0!important}\n.ati-feedback-title{color:#0f172a!important;font-size:20px!important;font-weight:900!important;line-height:1.25!important}\n.ati-feedback-note{max-width:650px;margin-top:7px!important;color:#475569!important;font-size:15px!important;line-height:1.55!important}\n.ati-feedback-button{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;min-height:44px;padding:0 18px;border:1px solid #ffc400;border-radius:7px;background:#ffc400;color:#050505!important;font-size:14px;font-weight:900;text-decoration:none!important;white-space:nowrap;transition:background .18s ease,border-color .18s ease,transform .18s ease}\n.ati-feedback-button:hover{border-color:#d69e00;background:#ffd84d;transform:translateY(-1px)}\n@media(max-width:700px){.ati-feedback-cta{align-items:stretch;flex-direction:column;padding:20px}.ati-feedback-button{width:100%}}\n<\/style>\n<p><script data-source=\"ati_ccc_dsa_roadmap_zh_20260915\">\n(function(){\n  if (location.pathname.indexOf('\/zh_cn\/') === -1) return;\n  document.title = \"CCC DSA \u77e5\u8bc6\u5730\u56fe\uff1a\u4ece Junior \u5230 Senior \u8981\u638c\u63e1\u54ea\u4e9b\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5 | \u52a0\u901f\u5ea6\u601d\u7ef4\";\n  document.querySelectorAll('.entry-title').forEach(function(el) { el.textContent = \"CCC DSA \u77e5\u8bc6\u5730\u56fe\uff1a\u4ece Junior \u5230 Senior \u8981\u638c\u63e1\u54ea\u4e9b\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5\"; });\n})();\n<\/script><script data-source=\"ati_article_feedback_cta\">\n(function(){\n  var cta = document.querySelector('[data-ati-feedback]');\n  if (!cta) return;\n  var isZh = location.pathname.indexOf('\/zh_cn\/') !== -1;\n  var contactPath = isZh ? '\/zh_cn\/contact\/' : '\/contact\/';\n  var articleTitle = (document.querySelector('.entry-title') || document.querySelector('.ati-hero h1') || {}).textContent || document.title || '';\n  var link = cta.querySelector('[data-ati-feedback-link]');\n  if (link) {\n    link.href = contactPath + '?ati_source=article&article_title=' + encodeURIComponent(articleTitle.trim()) + '&article_url=' + encodeURIComponent(location.href.split('#')[0]) + '#wpforms-form-76';\n  }\n})();\n<\/script><\/p>\n<p><script data-source=\"ati_strategy_phase1_nav_20260712\">\n(function(){\n  var base = 'https:\/\/accelthinking.com';\n  var isZh = location.pathname.toLowerCase().includes('\/zh_cn\/');\n  var t = {\"Home\": \"\u9996\u9875\", \"NorthStar\": \"\u5317\u6781\u661f\u6d4b\u8bc4\", \"Learning\": \"\u5b66\u4e60\u8def\u5f84\", \"Resources\": \"\u8d44\u6e90\u6587\u7ae0\", \"About\": \"\u5173\u4e8e\u6211\u4eec\", \"Contact\": \"\u8054\u7cfb\u6211\u4eec\", \"Start NorthStar\": \"\u5f00\u59cb\u5317\u6781\u661f\u6d4b\u8bc4\", \"Privacy Policy\": \"\u9690\u79c1\u653f\u7b56\", \"Terms & Conditions\": \"\u6761\u6b3e\u4e0e\u6761\u4ef6\", \"Close\": \"\u5173\u95ed\"};\n  var path = location.pathname.toLowerCase();\n  if (path.slice(-1) !== '\/') path += '\/';\n  var basePath = new URL(base).pathname.toLowerCase();\n  if (!basePath || basePath === '\/') basePath = '\/';\n  else basePath = basePath.replace(\/\\\/?$\/, '\/');\n  var zhHomePath = basePath === '\/' ? '\/zh_cn\/' : basePath + 'zh_cn\/';\n  function item(label, href, key) {\n    var active = false;\n    if (key === 'home') active = path === basePath || path === zhHomePath;\n    if (key !== 'home') active = path.indexOf('\/' + key + '\/') !== -1;\n    if (key === 'northstar') {\n      active = active || path.indexOf('\/northstar-quick-assessment\/') !== -1 || path.indexOf('\/northstar-assessment\/') !== -1 || path.indexOf('\/northstar-report\/') !== -1;\n    }\n    if (key === 'learning') {\n      active = active || path.indexOf('\/cp-academy\/') !== -1 || path.indexOf('\/python-programming-pathway\/') !== -1 || path.indexOf('\/ai-literacy\/') !== -1 || path.indexOf('\/python-assessment\/') !== -1;\n    }\n    if (key === 'resources') {\n      active = active || path.indexOf('\/resources\/') !== -1 || document.body.classList.contains('single-post');\n    }\n    return '<a class=\"' + (active ? 'active' : '') + '\" href=\"' + href + '\">' + (isZh ? (t[label] || label) : label) + '<\/a>';\n  }\n  function primary() {\n    return [\n      item('Home', base + '\/', 'home'),\n      item('NorthStar', base + '\/northstar\/', 'northstar'),\n      item('Learning', base + '\/learning\/', 'learning'),\n      item('Resources', base + '\/resources\/', 'resources'),\n      item('About', base + '\/about\/', 'about'),\n      item('Contact', base + '\/contact\/', 'contact')\n    ].join('');\n  }\n  function mobile() {\n    return primary() + '<a class=\"ati-mobile-cta\" href=\"' + base + '\/northstar\/\">' + (isZh ? t['Start NorthStar'] : 'Start NorthStar') + '<\/a><a class=\"ati-mobile-close\" href=\"#\">' + (isZh ? t.Close : 'Close') + '<\/a>';\n  }\n  document.querySelectorAll('.ati-nav,.ns-nav').forEach(function(nav) { nav.innerHTML = primary(); });\n  document.querySelectorAll('.ati-mobile-panel,.ati-mobile-nav-panel').forEach(function(nav) { nav.innerHTML = mobile(); });\n  document.querySelectorAll('.ati-footer nav,.ns-footer nav').forEach(function(nav) {\n    nav.innerHTML = primary() + item('Privacy Policy', base + '\/privacy-policy\/', 'privacy-policy') + item('Terms & Conditions', base + '\/terms-and-conditions\/', 'terms-and-conditions');\n  });\n  document.querySelectorAll('.ati-footer address,.ns-footer address').forEach(function(address) {\n    address.innerHTML = '<a href=\"mailto:info@accelthinking.com\">info@accelthinking.com<\/a><a href=\"tel:+18556265066\">' + (isZh ? '\u514d\u8d39\u7535\u8bdd\uff1a1-855-626-5066' : 'Toll-free: 1-855-626-5066') + '<\/a><span>' + (isZh ? '\u52a0\u62ff\u5927\u5b89\u5927\u7565\u7701\u5965\u514b\u7ef4\u5c14' : 'Oakville, Ontario, Canada') + '<\/span>';\n  });\n  document.querySelectorAll('.ati-header-cta,.ns-header-cta').forEach(function(a) {\n    a.href = base + '\/northstar\/';\n    a.textContent = isZh ? t['Start NorthStar'] : 'Start NorthStar';\n  });\n})();\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A CCC DSA roadmap from Junior to Senior, covering simulation, strings, grids, counting, prefix sums, graph search, greedy, DSU, shortest paths, dynamic programming, and typical historical CCC problems.<\/p>","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[7],"tags":[],"class_list":["post-1750","post","type-post","status-publish","format-standard","hentry","category-cp-weekly-challenge"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>CCC DSA \u77e5\u8bc6\u5730\u56fe | \u4ece Junior \u5230 Senior<\/title>\n<meta name=\"description\" content=\"\u4ece\u6a21\u62df\u3001\u5b57\u7b26\u4e32\u3001\u7f51\u683c\u548c\u524d\u7f00\u548c\u51fa\u53d1\uff0c\u9010\u6b65\u5b66\u4e60\u56fe\u641c\u7d22\u3001\u8d2a\u5fc3\u3001\u5e76\u67e5\u96c6\u3001\u6700\u77ed\u8def\u548c\u52a8\u6001\u89c4\u5212\uff0c\u5efa\u7acb CCC Junior \u5230 Senior \u7684\u7b97\u6cd5\u8def\u7ebf\u3002\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/accelthinking.com\/zh_cn\/ccc-dsa-roadmap-junior-to-senior\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CCC DSA \u77e5\u8bc6\u5730\u56fe | \u4ece Junior \u5230 Senior\" \/>\n<meta property=\"og:description\" content=\"\u4ece\u6a21\u62df\u3001\u5b57\u7b26\u4e32\u3001\u7f51\u683c\u548c\u524d\u7f00\u548c\u51fa\u53d1\uff0c\u9010\u6b65\u5b66\u4e60\u56fe\u641c\u7d22\u3001\u8d2a\u5fc3\u3001\u5e76\u67e5\u96c6\u3001\u6700\u77ed\u8def\u548c\u52a8\u6001\u89c4\u5212\uff0c\u5efa\u7acb CCC Junior \u5230 Senior \u7684\u7b97\u6cd5\u8def\u7ebf\u3002\" \/>\n<meta property=\"og:url\" content=\"https:\/\/accelthinking.com\/zh_cn\/ccc-dsa-roadmap-junior-to-senior\/\" \/>\n<meta property=\"og:site_name\" content=\"Accel Thinking\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-15T04:51:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-20T03:52:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/accelthinking.com\/wp-content\/plugins\/accel-analytics\/assets\/accel-thinking-og.png\" \/>\n<meta name=\"author\" content=\"ATI Builder\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"CCC DSA \u77e5\u8bc6\u5730\u56fe | \u4ece Junior \u5230 Senior\" \/>\n<meta name=\"twitter:description\" content=\"\u4ece\u6a21\u62df\u3001\u5b57\u7b26\u4e32\u3001\u7f51\u683c\u548c\u524d\u7f00\u548c\u51fa\u53d1\uff0c\u9010\u6b65\u5b66\u4e60\u56fe\u641c\u7d22\u3001\u8d2a\u5fc3\u3001\u5e76\u67e5\u96c6\u3001\u6700\u77ed\u8def\u548c\u52a8\u6001\u89c4\u5212\uff0c\u5efa\u7acb CCC Junior \u5230 Senior \u7684\u7b97\u6cd5\u8def\u7ebf\u3002\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/accelthinking.com\/wp-content\/plugins\/accel-analytics\/assets\/accel-thinking-og.png\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"ATI Builder\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/accelthinking.com\\\/zh_cn\\\/ccc-dsa-roadmap-junior-to-senior\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/accelthinking.com\\\/ccc-dsa-roadmap-junior-to-senior\\\/\"},\"author\":{\"name\":\"ATI Builder\",\"@id\":\"https:\\\/\\\/accelthinking.com\\\/#\\\/schema\\\/person\\\/bb7b104098a9c6c91f4fe54c4ab4a348\"},\"headline\":\"CCC DSA \u77e5\u8bc6\u5730\u56fe | \u4ece Junior \u5230 Senior\",\"datePublished\":\"2026-09-15T04:51:16+00:00\",\"dateModified\":\"2026-09-20T03:52:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/accelthinking.com\\\/ccc-dsa-roadmap-junior-to-senior\\\/\"},\"wordCount\":2619,\"image\":{\"@id\":\"https:\\\/\\\/accelthinking.com\\\/ccc-dsa-roadmap-junior-to-senior\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/accelthinking.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/logo-dark-cropped-51.png\",\"articleSection\":[\"CP Weekly Challenge\"],\"inLanguage\":\"zh-CN\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/accelthinking.com\\\/zh_cn\\\/ccc-dsa-roadmap-junior-to-senior\\\/\",\"url\":\"https:\\\/\\\/accelthinking.com\\\/zh_cn\\\/ccc-dsa-roadmap-junior-to-senior\\\/\",\"name\":\"CCC DSA \u77e5\u8bc6\u5730\u56fe | \u4ece Junior \u5230 Senior\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/accelthinking.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/accelthinking.com\\\/ccc-dsa-roadmap-junior-to-senior\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/accelthinking.com\\\/ccc-dsa-roadmap-junior-to-senior\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/accelthinking.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/logo-dark-cropped-51.png\",\"datePublished\":\"2026-09-15T04:51:16+00:00\",\"dateModified\":\"2026-09-20T03:52:54+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/accelthinking.com\\\/#\\\/schema\\\/person\\\/bb7b104098a9c6c91f4fe54c4ab4a348\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/accelthinking.com\\\/ccc-dsa-roadmap-junior-to-senior\\\/#breadcrumb\"},\"inLanguage\":\"zh-CN\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/accelthinking.com\\\/zh_cn\\\/ccc-dsa-roadmap-junior-to-senior\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-CN\",\"@id\":\"https:\\\/\\\/accelthinking.com\\\/zh_cn\\\/ccc-dsa-roadmap-junior-to-senior\\\/#primaryimage\",\"url\":\"https:\\\/\\\/accelthinking.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/logo-dark-cropped-51.png\",\"contentUrl\":\"https:\\\/\\\/accelthinking.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/logo-dark-cropped-51.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/accelthinking.com\\\/zh_cn\\\/ccc-dsa-roadmap-junior-to-senior\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/accelthinking.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"CCC DSA \u77e5\u8bc6\u5730\u56fe | \u4ece Junior \u5230 Senior\",\"item\":\"https:\\\/\\\/accelthinking.com\\\/zh_cn\\\/ccc-dsa-roadmap-junior-to-senior\\\/\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/accelthinking.com\\\/#website\",\"url\":\"https:\\\/\\\/accelthinking.com\\\/\",\"name\":\"Accel Thinking\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/accelthinking.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"zh-CN\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/accelthinking.com\\\/#\\\/schema\\\/person\\\/bb7b104098a9c6c91f4fe54c4ab4a348\",\"name\":\"ATI Builder\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-CN\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c77af32770dc7e2c3451795691a8d8e3e2d0c9faa5af72043c703fa202bdcd81?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c77af32770dc7e2c3451795691a8d8e3e2d0c9faa5af72043c703fa202bdcd81?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c77af32770dc7e2c3451795691a8d8e3e2d0c9faa5af72043c703fa202bdcd81?s=96&d=mm&r=g\",\"caption\":\"ATI Builder\"},\"url\":\"https:\\\/\\\/accelthinking.com\\\/zh_cn\\\/author\\\/ati-builder\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"CCC DSA \u77e5\u8bc6\u5730\u56fe | \u4ece Junior \u5230 Senior","description":"\u4ece\u6a21\u62df\u3001\u5b57\u7b26\u4e32\u3001\u7f51\u683c\u548c\u524d\u7f00\u548c\u51fa\u53d1\uff0c\u9010\u6b65\u5b66\u4e60\u56fe\u641c\u7d22\u3001\u8d2a\u5fc3\u3001\u5e76\u67e5\u96c6\u3001\u6700\u77ed\u8def\u548c\u52a8\u6001\u89c4\u5212\uff0c\u5efa\u7acb CCC Junior \u5230 Senior \u7684\u7b97\u6cd5\u8def\u7ebf\u3002","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/accelthinking.com\/zh_cn\/ccc-dsa-roadmap-junior-to-senior\/","og_locale":"zh_CN","og_type":"article","og_title":"CCC DSA \u77e5\u8bc6\u5730\u56fe | \u4ece Junior \u5230 Senior","og_description":"\u4ece\u6a21\u62df\u3001\u5b57\u7b26\u4e32\u3001\u7f51\u683c\u548c\u524d\u7f00\u548c\u51fa\u53d1\uff0c\u9010\u6b65\u5b66\u4e60\u56fe\u641c\u7d22\u3001\u8d2a\u5fc3\u3001\u5e76\u67e5\u96c6\u3001\u6700\u77ed\u8def\u548c\u52a8\u6001\u89c4\u5212\uff0c\u5efa\u7acb CCC Junior \u5230 Senior \u7684\u7b97\u6cd5\u8def\u7ebf\u3002","og_url":"https:\/\/accelthinking.com\/zh_cn\/ccc-dsa-roadmap-junior-to-senior\/","og_site_name":"Accel Thinking","article_published_time":"2026-09-15T04:51:16+00:00","article_modified_time":"2026-09-20T03:52:54+00:00","og_image":[{"url":"https:\/\/accelthinking.com\/wp-content\/plugins\/accel-analytics\/assets\/accel-thinking-og.png","type":"","width":"","height":""}],"author":"ATI Builder","twitter_card":"summary_large_image","twitter_title":"CCC DSA \u77e5\u8bc6\u5730\u56fe | \u4ece Junior \u5230 Senior","twitter_description":"\u4ece\u6a21\u62df\u3001\u5b57\u7b26\u4e32\u3001\u7f51\u683c\u548c\u524d\u7f00\u548c\u51fa\u53d1\uff0c\u9010\u6b65\u5b66\u4e60\u56fe\u641c\u7d22\u3001\u8d2a\u5fc3\u3001\u5e76\u67e5\u96c6\u3001\u6700\u77ed\u8def\u548c\u52a8\u6001\u89c4\u5212\uff0c\u5efa\u7acb CCC Junior \u5230 Senior \u7684\u7b97\u6cd5\u8def\u7ebf\u3002","twitter_image":"https:\/\/accelthinking.com\/wp-content\/plugins\/accel-analytics\/assets\/accel-thinking-og.png","twitter_misc":{"Written by":"ATI Builder","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/accelthinking.com\/zh_cn\/ccc-dsa-roadmap-junior-to-senior\/#article","isPartOf":{"@id":"https:\/\/accelthinking.com\/ccc-dsa-roadmap-junior-to-senior\/"},"author":{"name":"ATI Builder","@id":"https:\/\/accelthinking.com\/#\/schema\/person\/bb7b104098a9c6c91f4fe54c4ab4a348"},"headline":"CCC DSA \u77e5\u8bc6\u5730\u56fe | \u4ece Junior \u5230 Senior","datePublished":"2026-09-15T04:51:16+00:00","dateModified":"2026-09-20T03:52:54+00:00","mainEntityOfPage":{"@id":"https:\/\/accelthinking.com\/ccc-dsa-roadmap-junior-to-senior\/"},"wordCount":2619,"image":{"@id":"https:\/\/accelthinking.com\/ccc-dsa-roadmap-junior-to-senior\/#primaryimage"},"thumbnailUrl":"https:\/\/accelthinking.com\/wp-content\/uploads\/2026\/06\/logo-dark-cropped-51.png","articleSection":["CP Weekly Challenge"],"inLanguage":"zh-CN"},{"@type":"WebPage","@id":"https:\/\/accelthinking.com\/zh_cn\/ccc-dsa-roadmap-junior-to-senior\/","url":"https:\/\/accelthinking.com\/zh_cn\/ccc-dsa-roadmap-junior-to-senior\/","name":"CCC DSA \u77e5\u8bc6\u5730\u56fe | \u4ece Junior \u5230 Senior","isPartOf":{"@id":"https:\/\/accelthinking.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/accelthinking.com\/ccc-dsa-roadmap-junior-to-senior\/#primaryimage"},"image":{"@id":"https:\/\/accelthinking.com\/ccc-dsa-roadmap-junior-to-senior\/#primaryimage"},"thumbnailUrl":"https:\/\/accelthinking.com\/wp-content\/uploads\/2026\/06\/logo-dark-cropped-51.png","datePublished":"2026-09-15T04:51:16+00:00","dateModified":"2026-09-20T03:52:54+00:00","author":{"@id":"https:\/\/accelthinking.com\/#\/schema\/person\/bb7b104098a9c6c91f4fe54c4ab4a348"},"breadcrumb":{"@id":"https:\/\/accelthinking.com\/ccc-dsa-roadmap-junior-to-senior\/#breadcrumb"},"inLanguage":"zh-CN","potentialAction":[{"@type":"ReadAction","target":["https:\/\/accelthinking.com\/zh_cn\/ccc-dsa-roadmap-junior-to-senior\/"]}]},{"@type":"ImageObject","inLanguage":"zh-CN","@id":"https:\/\/accelthinking.com\/zh_cn\/ccc-dsa-roadmap-junior-to-senior\/#primaryimage","url":"https:\/\/accelthinking.com\/wp-content\/uploads\/2026\/06\/logo-dark-cropped-51.png","contentUrl":"https:\/\/accelthinking.com\/wp-content\/uploads\/2026\/06\/logo-dark-cropped-51.png"},{"@type":"BreadcrumbList","@id":"https:\/\/accelthinking.com\/zh_cn\/ccc-dsa-roadmap-junior-to-senior\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/accelthinking.com\/"},{"@type":"ListItem","position":2,"name":"CCC DSA \u77e5\u8bc6\u5730\u56fe | \u4ece Junior \u5230 Senior","item":"https:\/\/accelthinking.com\/zh_cn\/ccc-dsa-roadmap-junior-to-senior\/"}]},{"@type":"WebSite","@id":"https:\/\/accelthinking.com\/#website","url":"https:\/\/accelthinking.com\/","name":"Accel Thinking","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/accelthinking.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"zh-CN"},{"@type":"Person","@id":"https:\/\/accelthinking.com\/#\/schema\/person\/bb7b104098a9c6c91f4fe54c4ab4a348","name":"ATI Builder","image":{"@type":"ImageObject","inLanguage":"zh-CN","@id":"https:\/\/secure.gravatar.com\/avatar\/c77af32770dc7e2c3451795691a8d8e3e2d0c9faa5af72043c703fa202bdcd81?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c77af32770dc7e2c3451795691a8d8e3e2d0c9faa5af72043c703fa202bdcd81?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c77af32770dc7e2c3451795691a8d8e3e2d0c9faa5af72043c703fa202bdcd81?s=96&d=mm&r=g","caption":"ATI Builder"},"url":"https:\/\/accelthinking.com\/zh_cn\/author\/ati-builder\/"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/accelthinking.com\/zh_cn\/wp-json\/wp\/v2\/posts\/1750","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/accelthinking.com\/zh_cn\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/accelthinking.com\/zh_cn\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/accelthinking.com\/zh_cn\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/accelthinking.com\/zh_cn\/wp-json\/wp\/v2\/comments?post=1750"}],"version-history":[{"count":1,"href":"https:\/\/accelthinking.com\/zh_cn\/wp-json\/wp\/v2\/posts\/1750\/revisions"}],"predecessor-version":[{"id":1751,"href":"https:\/\/accelthinking.com\/zh_cn\/wp-json\/wp\/v2\/posts\/1750\/revisions\/1751"}],"wp:attachment":[{"href":"https:\/\/accelthinking.com\/zh_cn\/wp-json\/wp\/v2\/media?parent=1750"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/accelthinking.com\/zh_cn\/wp-json\/wp\/v2\/categories?post=1750"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/accelthinking.com\/zh_cn\/wp-json\/wp\/v2\/tags?post=1750"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}