miaoge-ge/coding-agent-skills

competitive-programming-expert

Use this skill when user needs to solve competitive programming problems.

소스 보기
원본 Skill 문서

원본 저장소의 제목, 예시, 코드, 표, 링크, 이미지를 유지해 표시합니다.

Competitive Programming Problem Solver

Description

Solve competitive programming problems with optimal solutions, complexity analysis, and complete code implementation.

When to Use

  • User provides problem link or description from LeetCode/Codeforces/AtCoder/ACM-ICPC platforms
  • User requests "solve this algorithm problem" or "optimize this solution"
  • User asks for specific algorithm/data structure implementation (e.g., "how to implement segment tree")
  • User's code encounters TLE/MLE/WA and needs debugging
  • User asks for solution templates or patterns for certain problem types

When NOT to Use

  • User only asks about algorithm concepts or theory without specific problem
  • User needs algorithm design for software engineering, not competitive programming
  • User is doing system design or architecture problems
  • User only needs code completion or syntax help without algorithmic logic

Input

typescript
{
  problem: string          // Problem description or link
  platform?: string        // Platform name (leetcode/codeforces/atcoder, etc.)
  language?: string        // Preferred language (default: C++ or Python)
  userCode?: string        // User's existing code (for optimization/debugging)
  constraints?: {          // Problem constraints
    timeLimit?: string     // e.g., "1s", "2s"
    memoryLimit?: string   // e.g., "256MB"
    inputSize?: string     // e.g., "n ≤ 10^5"
  }
}

Output

typescript
{
  analysis: {
    type: string           // Problem type (DP/Graph/Greedy/Number Theory, etc.)
    keyInsight: string     // Core idea
    edgeCases: string[]    // Edge cases to consider
  }
  solution: {
    approach: string       // Solution explanation
    complexity: {
      time: string         // Time complexity (e.g., O(n log n))
      space: string        // Space complexity
      justification: string // Why it meets problem constraints
    }
    code: string          // Complete executable code
  }
  optimization?: string   // Optional optimization suggestions
}

Execution Steps

Step 1: Understand Constraints

  • Extract input size upper bound (e.g., n ≤ 10^5)
  • Calculate time budget (typically 1s ≈ 10^8 operations)
  • Identify special restrictions (e.g., read-only once, online algorithm)

Step 2: Classify and Model

  • Categorize problem into known algorithm types (DP/Graph/Greedy/Number Theory/String/Computational Geometry)
  • Extract mathematical model or state definition
  • List at least 3 typical edge cases

Step 3: Design Solution

  • Explain core idea in 1-2 sentences
  • For non-obvious algorithms (e.g., greedy/constructive), briefly justify correctness
  • Specify time and space complexity

Step 4: Implement Code

Output code according to platform conventions:

  • LeetCode: Provide class/function definition without main function
  • Codeforces/AtCoder: Provide complete code with standard I/O
  • Other platforms: Ask user preference

Code requirements:

  • Clear variable naming
  • Comments on key steps
  • Cover identified edge cases

Step 5: Verify and Optimize

  • Validate correctness with sample inputs
  • If user provides existing code, compare differences and identify bottlenecks
  • If constant-factor optimizations exist (e.g., fast I/O, bitwise tricks), mention separately

Failure Handling

  • Unclear problem: Request complete problem statement or link
  • Missing constraints: Ask for input size bounds and time limits
  • No optimal solution exists: Provide passable solution first, then discuss if better approach exists
  • Language not supported: Explain language limitations and suggest alternatives

See Also

  • cpp-expert — language-level optimization, STL, and UB concerns for C++ submissions.
  • python-expert — fast I/O and idiomatic patterns for Python submissions.
  • software-architect — when the problem is system design rather than a contest task.