Online Judge System
源起
「Association for Computing Machinery (ACM) 」是一個致力於電腦科學教育的協會,出版大量專業期刊、文獻,舉辦重大的計算機科學會議,在資訊界舉足輕重、名聞遐邇。
ACM 每年度都會舉辦一次「The ACM-ICPC International Collegiate Programming Contest (ACM-ICPC) 」,是一個給全世界大專院校學生參加的演算法程式設計比賽,比賽目的在於考驗選手臨場時的演算法設計能力、程式編寫能力。 ACM 首先在世界各地舉辦初賽,然後從各個賽區選拔出表現優秀的隊伍,角逐世界總決賽。台灣主要大專院校近十幾年來不遺餘力,積極爭取到台灣賽區的舉辦權和承辦權,並鼓勵學生參與比賽。另外台灣教育部也創辦了類似的「全國大專電腦軟體設計競賽」,藉此發掘優秀的選手,賦予為國爭光的使命。
ACM-ICPC 帶動了演算法程式設計的風氣。世界上許多大專院校的資訊系所,仿照 ACM-ICPC 的比賽模式,紛紛自行開發出即時線上比賽系統,能夠自動批改、評分、計時、統計。學生不必齊聚一堂,藉由網際網路,就可以相互切磋程式設計技巧。比賽結束之後,便將比賽題目編列題庫,並開放線上批改程式的功能,供學生賽後練習檢討。這套系統大家一般稱之為「 Online Judge System 」,或直接稱為「 Online Judge 」、「 OJ 」。
最古老、也是最有知名度的 OJ ,是由西班牙知名的瓦雅多利大學「Universidad de Valladolid (UVa) 」開發的「UVa Online Judge 」。 UVa Online Judge 是台灣人最熟悉的一個 OJ :資訊相關科系的學生,常利用它來磨鍊程式設計技巧;教師將它當作課程教材使用;有許多個人網站從事題目翻譯,提供測試資料集等等。
UVa Online Judge 亦和 ACM 合作,成為 ACM 推廣的一個 OJ ,藉此向大眾提倡程式設計。因此, UVa Online Judge 除了收集自行舉辦的比賽的題目,也嘗試收錄世界各地重大程式設計比賽的題目,以臻豐富完整。有趣的是,歷年來大家口耳相傳、以訛傳訛,便將 UVa Online Judge 誤植為 ACM 了,把 UVa Online Judge 的題庫稱作「 ACM 題目」,利用 UVa Online Judge 訓練程式設計技巧時稱作「寫 ACM 」,約定俗成。
知名的 Online Judge
UVa Online Judge,UVa Online Judge: Electronic Board
西班牙Valladolid大學的Online Judge。
是最古老也是全世界最知名的Online Judge,題庫目前約有3000+題。
題目類型非常廣泛。絕大部分的題目難度偏易,適合初學者磨練程式設計功力。
有專業的審題團隊。另外也有許多工具網站、相關書籍。
ACM-ICPC Live Archive
與ACM協會合作,專門收集ACM-ICPC的比賽題目,
依照年份與賽區進行編目,可惜的是題庫尚未收集完整。
很久以前,ACM-ICPC Live Archive的題庫,
是跟UVa Online Judge的題庫捆在一起的,共用一套OJ。
後來在2003年的聖誕節,站方決定將ACM-ICPC Live Archive獨立出來成為一個網站。
雖然現在兩個網站各自運作,但實際上兩者都是UVa Online Judge的小組在維護的。
PKU JudgeOnline
中國北京大學的Online Judge,是中國規模最大的一個Online Judge,
題目類型偏向演算法競賽,可以找到比賽常見題型。
好處是可以在網路上輕鬆找到中文的解題資訊。
Timus Online Judge
俄國Ural大學的Online Judge,是俄國最大的Online Judge。
有比較進階的演算法題目,難度偏高。
有專業的審題團隊。
Sphere Online Judge
波蘭Sphere實驗室建立的Online Judge,是波蘭最大的Online Judge。
會員可自創題目,題目很有特色,但是品質良莠不齊。
支援多種程式語言。
Polish Olympiad in Informatics
波蘭用來訓練國際資訊奧林匹亞競賽選手的網頁。
收錄近年來IOI的題目、以及培訓營隊的題目。
題型幾乎都是演算法設計,而非演算法應用。
程度很高,不是平常人能夠接觸的領域。
台灣的 Online Judge
高中生程式解題系統 ZeroJudge
由高師大附中所開發的Online Judge,
是第一個使用繁體中文介面的系統,實乃台灣人之福。
請大家記得懷著感恩的心,謝謝系統設計者。
Temporary Infor Online Judge
建國中學資訊社的Online Judge。
有很多學生自行設計的創意題目。
NTU Online Judge
台灣大學的Online Judge。
目前只用於培訓校內的ACM-ICPC參賽選手,並未對校外人士開放。
UVa Online Judge 工具網站
Lucky貓的ACM園地,Lucky貓的 ACM 中譯題目 Mirror
這個站專門提供UVa Online Judge中譯題目。非常棒!非常棒!非常棒!
我在搜尋引擎輸入過上百次的Luckycat!
Ruby兔的ACM園地
這個站也是專門提供UVa Online Judge中譯題目。後繼有人矣!
UVa Online Judge: Electronic Board
UVa Online Judge的問題討論版。
由於主頁上沒有放連結,所以可能有人不知道。
發問時請遵守板規,
善用搜尋功能,找到問題的討論串,發問時採用回覆文章方式。
讓後人可以容易找到相關討論。
UVA toolkit
站長將他寫過的UVa Online Judge的題目整理成表,
每一題都貼心的寫下了解題提示,
也提供了執行檔,供大家自行測試自己的測試資料。
是個很好用的網站!
Felix Halim .Net,UVa Hunting
這個站製作了一些網頁小工具,
讓使用者可以查詢自己在UVa Online Judge的解題進度,
以及比對自己和別人的解題清單。相當好用!
此站站長和World of Seven的站長是兄弟關係。
World of Seven: Methods to Solve
站長熱愛程設解題,在新加坡大學當學生時,憑著熱情而創立了這個網站。
站長現在已經是新加坡大學的教授,而且有在教授程式解題的課程,
最近還出版了一本程式解題的教科書:Competitive Programming。
站長也將自己寫過的題目做了清楚的分類,
留下了簡短的提示,供後人參考。
Algorithmist
這個網站屬於wiki性質,
旨在收集各個OJ的題目分類、釋意、測試資料,
另外還有一些資料結構和演算法的教學文章。
UVa Online Judge 解題資訊
中山大學「高等程式設計與實作」課程
2003,2004,2006,2007,2008,2010,2011
2008集訓,2009集訓,2010集訓
歷年的課程主頁裡面,可以找到一些解題報告。
Waterloo Programming Contests
加拿大滑鐵盧大學所舉辦的線上比賽,題目於賽後都歸入UVa Online Judge的競賽題庫。
可以找到UVa Online Judge競賽題庫中許多題目的測試資料、解答程式碼。
Bal4u
一位日本人Bal4u的個人部落格。
過去曾有許多強大的演算法教學文章,以及UVa Online Judge一些難題的解法。
Bal4u曾在UVa Online Judge排名第三名。
UVa Online Judge 題目分類
Programming Challenges 的習題
歸類方式、難度高低都是十分詭異。不過這些題目相當有特色,值得一試。
New Comer
★ 100 The 3n + 1 problem
★ 10189 Minesweeper
★ 10137 The Trip
★ 706 LCD Display
★ 10267 Graphical Editor
★★ 10033 Interpreter
★ 10196 Check The Check
★ 10142 Australian Voting
Data Structure
★ 10038 Jolly Jumpers
★★ 10315 Poker Hands
★★ 10050 Hartals
★★ 843 Crypt Kicker
★ 10205 Stack 'em Up
★★ 10044 Erdos Numbers
★ 10258 Contest Scoreboard
★★★ 10149 Yahtzee
String
★ 10082 WERTYU
★★ 10010 Where's Waldorf?
★ 10252 Common Permutation
★★ 850 Crypt Kicker II
★ 10188 Automated Judge Script
★★ 10132 File Fragmentation
★★★ 10150 Doublets
★★ 848 Fmt
Sorting
★ 10041 Vito's Family
★★ 120 Stacks of Flapjacks
★★★ 10037 Bridge
★ 10191 Longest Nap
★★ 10026 Shoemaker's Problem
★★ 10138 CDVII
★★ 10152 ShellSort
★ 10194 Football (aka Soccer)
Arithmetic and Algerba
★ 10035 Primary Arithmetic
★ 10018 Reverse and Add
★ 701 The Archeologists' Dilemma
★★ 10127 Ones
★★★ 847 A Multiplication Game
★ 10105 Polynomial Coefficients
★ 10077 The Stern-Brocot Number System
★★★★ 10202 Pairsumonious Numbers
Combinations
★ 10183 How Many Fibs?
★★ 10213 How Many Pieces of Land ?
★★ 10198 Counting
★★ 10157 Expressions
★★ 10247 Complete Tree Labeling
★★ 10254 The Priest Mathematician
★★ 10049 Self-describing Sequence
★★ 846 Steps
Number Theory
★ 10110 Light, More Light
★★ 10006 Carmichael Numbers
★ 10104 Euclid Problem
★★ 10139 Factovisors
★★ 10168 Summation of Four Primes
★ 10042 Smith Numbers
★ 10090 Marbles
★★ 10089 Repackaging
Backtracking
★★ 861 Little Bishops
★★★ 10181 15-Puzzle Problem
★★ 10128 Queue
★★ 10160 Servicing Stations
★★ 10032 Tug of War
★★ 10001 Garden of Eden
★★★ 704 Colour Hash
★★★ 10270 Bigger Square Please...
Graph Traversal
★ 10004 Bicoloring
★★ 10067 Playing with Wheels
★★★ 10099 The Tourist Guide
★★ 705 Slash Maze
★★★ 10029 Edit Step Ladders
★★★ 10051 Tower of Cubes
★★★ 10187 From Dusk Till Dawn
★★★ 10276 Hanoi Tower Troubles Again!
Graph Algorithm
★★ 10034 Freckles
★★★ 10054 The Necklace
★★ 10278 Fire Station
★★★ 10039 Railroads
★★★ 10158 War
★★★ 10199 Tourist Guide
★★★★ 10249 The Grand Dinner
★★★ 10092 The Problem with the Problem Setter
Dynamic Programming
★★ 10131 Is Bigger Smarter?
★★★ 10069 Distinct Subsequences
★★★ 10154 Weights and Measures
★★★ 116 Unidirectional TSP
★★ 10003 Cutting Sticks
★★★ 10261 Ferry Loading
★★★ 10271 Chopsticks
★★★ 10201 Adventures in Moving - Part IV
Grid
★ 10161 Ant on a Chessboard
★★★ 10047 The Monocycle
★★ 10159 Star
★★ 10182 Bee Maja
★★★ 707 Robbery
★★ 10177 (2/3/4)-D Sqr/Rects/Cubes/Boxes?
★★ 10233 Dermuba Triangle
★★★ 10075 Airlines
Geometry
★ 10310 Dog and Gopher
★★ 10180 Rope Crisis in Ropeland!
★★ 10195 The Knights Of The Round Table
★★★ 10136 Chocolate Chip Cookies
★★ 10167 Birthday Cake
★★ 10215 The Largest/Smallest Box ...
★★★ 10209 Is This Integration ?
★★★ 10012 How Big Is It?
Computational Geometry
★★ 10135 Herding Frosh
★★ 10245 The Closest Pair Problem
★★★ 10043 Chainsaw Massacre
★★★ 10084 Hotter Colder
★★★ 10065 Useless Tile Packers
★★ 849 Radar Tracking
★★★ 10088 Trees on My Island
★★★★ 10117 Nice Milk
USACO 論壇上有人提供的題單
-----------------------------------
Flood Fill:
-----------------------------------
352 - The Seasonal War
469 - Wetlands of Florida
572 - Oil Deposits
657 - The die is cast
705 - Slash Mazes
776 - Monkeys in a Regular Forest
782 - Contour Painting
784 - Maze Exploration
785 - Grid Colouring
830 - Shark
852 - Deciding victory in Go
10279 - Mine Sweeper
10336 - Rank the Languages
10592 - Freedom Fighter
10946 - You want what filled?
-----------------------------------
Max Flow / Max Bipartite Matching:
-----------------------------------
259 - Software Allocation
563 - Crimewave
663 - Sorting Slides
670 - The Dog Task
753 - a plug for unix
820 - Internet Bandwidth
10080 - Gopher II
10092 - The Problem with the Problem Setter
10122 - Mysterious Mountain
10249 - the grand dinner (Max Flow too slow for TLE)
10330 - Power Transmission
10380 - Shogi Tournament
10511 - Councilling
10746 - Crime Wave - The Sequel
10779 - Collectors Problem
10804 - Gopher Strategy
-----------------------------------
Games:
-----------------------------------
847 - Multiplication Game
10368 - Euclids Game
10404 - Bachet's Game
10578 - The Game of 31
-----------------------------------
Dynamic Programming:
-----------------------------------
108 - Maximum Sum
111 - History Grading
116 - Unidirectional TSP
147 - Dollars
164 - String Computer
231 - Testing the CATCHER
348 - Optimal Array Multiplication Sequence
357 - Let Me Count The Ways
442 - Matrix Chain Multiplication
481 - What Goes Up
497 - Strategic Defense Initiative
507 - Jill Rides Again
526 - String Distance and Edit Process
531 - Compromise
562 - Dividing Coins
674 - Coin Change
711 - Dividing Up
836 - Largest Submatrix
10003 - Cutting Sticks
10032 - Tug Of War
10051 - Tower of Cubes
10066 - The Twin Towers
10069 - Unidirectional TSP
10081 - Tight Words
10100 - Longest Match
10130 - SuperSale
10131 - Is Bigger Smarter?
10154 - Weights and Measures
10192 - Vacation
10201 - Advantures in Moving Part IV
10259 - Hippity Hopscotch
10261 - Ferry Loading
10280 - Old Wine into New Bottles
10304 - Optimal Binary Search Tree
10379 - Pit Stop Strategy
10400 - Game Show Math
10405 - Longest Common Subsequence
10465 - Homer Simpson
10482 - The Candyman Can
10529 - Dumb Bones
10549 - Russian Dolls
10558 - A Brief Gerrymander
10559 - Blocks
10593 - Kites
10599 - Robots (II)
10604 - Chemical Reaction
10617 - Again Palindrome
10635 - Prince and Princess
10645 - Menu
10664 - Luggage
10690 - Expression Again
10721 - Bar Codes
10723 - Cyborg Genes
10739 - String to Palindrome
10755 - Garbage Heap
10759 - Dice Throwing
10817 - Headmaster's Headache
10819 - Trouble of 13-Dots
10827 - Maximum Sum on a Torus
10860 - Many a Little Makes a Mickel
10874 - Segments
10898 - Combo Deal
10912 - Simple Minded Hashing
10913 - Walking on a Grid
-----------------------------------
Graphs:
-----------------------------------
117 - The Postal Worker Rings Once
125 - Numbering Paths
280 - vertex
709 - Formatting Text (the shortest path)
793 - Network Connections
10239 - The Book-shelver's Problem (the shortest path)
10265 - Toroidal Chess Queens' Problem (tree rounds ???)
10266 - Surveying (connected components)
10054 - euler problem
10178 - count the faces
10608 - Friends
10731 - Test
-----------------------------------
Connectivity:
-----------------------------------
459 - Graph Connectivity
10147 - Highways
10397 - Connect the Campus
-----------------------------------
Big Integer:
-----------------------------------
324 - Factorial Frequencies
424 - Integer Inquiry
495 - Fibonacci Freeze
623 - 500!
713 - Adding Reversed Numbers
10013 - Super long sums
10018 - Reverse and Add
10035 - Primary Arithmetic
10106 - Product
10220 - I Love Big Numbers !
10515 - Powers Et Al.
-----------------------------------
Counting:
-----------------------------------
357 - Let Me Count The Ways
369 - Combinations
10219 - Find the ways !
10338 - Mischievous Children
-----------------------------------
Josephus:
-----------------------------------
151 - Power Crisis
440 - Eeny Meeny Moo
-----------------------------------
Math:
-----------------------------------
106 - Fermat vs. Pythagoras
113 - Power of Cryptography
579 - ClockHands
834 - Continued Fractions
847 - A Multiplication Game
10071 - Back to High School Physics
10079 - Pizza Cutting
10161 - Ant on a Chessboard
10302 - Summation of Polynomials
10408 - Farey sequences
-----------------------------------
Matrix:
-----------------------------------
108 - Maximum Sum
348 - Optimal Array Multiplication Sequence
541 - Error Correction
836 - Largest Submatrix
10189 - Minesweeper
-----------------------------------
Number Conversion:
-----------------------------------
344 - Identifying Concurrent Events
446 - Kibbles ``n'' Bits ``n'' Bits ``n'' Bits
575 - Skew Binary
10469 - To Carry or not to Carry
-----------------------------------
Number Theory:
-----------------------------------
136 - Ugly Numbers
138 - Street Numbers
160 - Factors and Factorials
256 - Quirksome Squares
294 - Divisors
350 - Pseudo-Random Numbers
382 - Perfection
406 - Prime Cuts
408 - Uniform Generator
543 - Goldbach's Conjecture
686 - Goldbach's Conjecture (II)
10200 - Prime Time
-----------------------------------
Simulation:
-----------------------------------
10346 - Peter's Smoke
10409 - Die Game
-----------------------------------
Sorting & Searching:
-----------------------------------
299 - Train Swapping
331 - Mapping the Swaps
499 - What's The Frequency, Kenneth?
10008 - What's Cryptanalysis?
10107 - What is the Median?
10295 - Hay Points
10327 - Flip Sort
-----------------------------------
String:
-----------------------------------
272 - TEX Quotes
401 - Palindromes
444 - Encoder and Decoder
458 - The Decoder
483 - Word Scramble
490 - Rotating Sentences
492 - Pig-Latin
494 - Kindergarten Counting Game
576 - Haiku Review
739 - Lost in Space
10082 - WERTYU
10222 - Decode the Mad man
10260 - Soundex
10293 - Word Length and Frequency
10340 - Peter's Smoke
10361 - Peter's Smoke
10424 - Love Calculator
10508 - Word Morphing
-----------------------------------
Tree:
-----------------------------------
536 - Tree Recovery
10223 - How many nodes ?
10410 - Tree Reconstruction
-----------------------------------
Variable Range:
-----------------------------------
10055 - Hashmat the Brave Warrior
-----------------------------------
Greedy:
-----------------------------------
10020 - Minimal Coverage
10382 - Watering Grass
10440 - Ferry Loading (II)
10563 - Least Squares
10665 - Diatribe
不知道是誰整理的題單
http://webdocs.cs.ualberta.ca/~contest/club/class.txt
------------------------------------------------------------
Graph Theory:
------------------------------------------------------------
- Topological Sorting:
00200 Rare Order Find the correct ordering of an alphabet
10305 Ordering Tasks Provide some ordering of tasks
- Trees
00112 Tree Summing Navigate through a LISP encoded binary tree
00115 Climbing Trees Figure out the relationships between people
00122 Trees on the level Produce level-order traversals of binary trees
00615 Is It A Tree? Determine whether or not the graph is a tree
10308 Roads in the North Find the longest distance (diameter) of a tree.
- Eulerian Graphs
00117 The Postal Worker... Minimize a cost tour for a postman
(Simplified Chinese Postman problem)
- Cycles
00125 Numbering Paths Count number of paths in a directed graph
00626 Ecosystem Find/Print all cycles of size 3
- Polygon Intersection
00137 Polygons Find the XOR of two polygon areas
- Maximum Flow
00563 Crimewave Solve the escape problem
- Minimum Spanning Trees
10307 Killing Aliens in Bor.. Find least cost way to assimilate all
------------------------------------------------------------
Dynamic Programming:
------------------------------------------------------------
- Memotization
00101 The 3n + 1 Problem Find the size of the longest sequence
00371 Ackermann Functions Find the size of the longest sequence
00547 DDF Output the longest Decimal-Digit Factor
- Longest Asc/Desc Subsequence
00103 Stacking Boxes Find the longest desc. subsequence in n-dims.
00111 History Grading Find marks for a chronologic ordering question
- Longest Common Subsequence
00531 Compromise Find the LCS for two texts
- 1D Minimize/Maximize
00222 Budget Travel Minimize the cost of a road trip
- 2D Minimize/Maximize
00104 Arbitrage Find a successful arbitrage sequence
00108 Maximum Sum Find the sub-rectangle with largest sum
00116 Unidirectional TSP Find the minimal path through a 2D field
00585 Triangles Find the largest triangle in a trianglular field
00590 Always on the run Find the minimum cost for flying city to city
00526 String Distance & Transform... Find the string distance and path
10285 Longest Run on a Snowboard Find the longest snowboarding path in a 2D field
10306 E-coins Find minimum number of 2D coins to get certain sum
- Change Making
00147 Dollars Count # of ways to make change
------------------------------------------------------------
Modelling/Simulation:
------------------------------------------------------------
- Object State Modelling
00102 The Blocks Problem Manipulation of blocks with robot arm
- Planar World Modelling
00114 Simulation Wizardry Simulate a idealized pinball machine
00118 Mutant Flatworld Explorers Simulate robots moving on a plane
00407 Gears on a Board Simulate gears on a plane
00411 Centipede Collisions Simulate centipedes on a plane
00824 Coast Tracker Simulate coastal robots on a plane
- Geometric Structure Modelling
00201 Squares Count the number of squares in a grid
00209 Triangular Vertices Model triangular coordinates
- Record Keeping / Bookkeeping
00119 Greedy Gift Givers Keep track of everyone's net gain/loss
00123 Searching Quickly Keep track of keywords in titles of books
00139 Telephone Tangles Keep track of telephone bill
00145 Gondwanaland Telecom Keep track of telephone bill
00405 Message Routing Keep track of where routing goes
00603 Parking Lot Keep track of cars in a parking lot
00645 File Mapping Print out a file directory
- Josephus Rings
00130 Roman Roulette Find the survivor
00133 The Dole Queue Find the order of selected people
00144 Student Grants Find the order of students getting grants
00151 Power Crisis Find the step such that a certain region survives
- Card Games
00127 "Accordian" Patience Simulate Accordian Patience (Solitaire)
00131 The Psychic Poker Player Determine the best Poker hand
00451 Poker Solitaire Evaluate some Poker hands
00462 Bridge Hand Evaluator Evaluate some Bridge hands and suggest a move
00635 Clock Solitaire Count winning Clock solitaire games
- Board Games
00141 The Spot Game Figure out who wins the Spot game
00633 A Chess Knight Figure out how many moves for a dynamic knight
00647 Chutes and Ladders Figure out who wins a game of Chutes and Ladders
10284 Chessboard in FEN Figure out number of unattacked squares
- Parsing:
00134 Loglan-A logical Language Check to see if sentences are in the grammar
00171 Car Trialling Check to see if sentence is valid instruction
00620 Cellular Structure Identify the type of organism.
00622 Grammar Evaluation Evaluate/Parse a [+,*,(,)] math expression
- Calendar/Time Modelling
00150 Double Time Convert between two calendars
00419 Matching Meetings Find suitable meeting times for department
- Sports Games
00584 Bowling Calculate a bowling game score
- Data Type Modelling
00540 Team Queue Implement a efficient TeamQueue (buddy system)
- Print/Font Formatting
00403 Postscript Implement "fonts" with formatting
00416 LED Test Determine if there is a valid LED countdown
00426 Fifth Bank of Swamp County Output the bank record sorted in 3 columns
00433 Bank (Not Quite O.C.R) Check LED version of bank number
- Text Manipulation
00373 Romulan Spelling Fix some spelling mistakes
00444 Encoder and Decoder Encode/Decode according to certain rules
00464 Sentence/Phrase Generator Generate phrases according to grammar rules
00625 Compression Compress some source code
00628 Passwords Rule replacement
00641 Do the Untwist Untwist an encrypted string
- Assembler Modelling
00448 OOPS! Convert hexcode to assembly code
------------------------------------------------------------
Arithmetic:
------------------------------------------------------------
- Fractions
00202 Repeating Decimals Figure out length of repeat period of fraction
00834 Continued Fractions Convert fraction to a continued fraction
- Pythagorean Triples
00106 Fermat vs. Pythagoras Generating/Counting Pythagorean triples
- Additive/Multiplicative Series
00107 The Cat in the Hat Calculate the number of cats in the hat
00138 Street Numbers Find special house numbers
10302 Summation of Polynomials Find the sum of the first N cubes
- Exponentiation/Logarithms
00113 Power of Cryptography Find integer roots of large numbers
00545 Heads Find 2^-n = x.xxxE-y for large n
- Polynomials
00126 The Errant Physicist Multiply polynomials of x and y
00586 Instant Complexity Calculate the complexity of a program
- Long Division/Multiplication
00128 Software CRC Calculate the CRC value for a string of text(divide)
00550 Multiplcation by Rotation Find shortest factor with rotamult-property
00465 Overflow Determine whether numbers overflow an int
- Combinatorics:
00135 No Rectangles Find a suitable block design
00146 ID Codes Find the next permutation
00153 Permalex Convert between indices and words sorted in lex. order
00580 Critical Mass Count number of binary strings with 3 consecuive 1's
00527 The partition of a cake Count the number of partitions made by cake cutting
10294 Arif in Dhaka (First Love pt2) Count the number of necklace/bracelets of size N with T colors
10303 How Many Trees? Count the number of binary trees (Catalan numbers)
- Primes/Factorization
00136 Ugly Numbers Find the 1500th ugly number factors(2,3,5)
00583 Prime Factors List the prime factorization of a number efficiently
10311 Goldbach and Euler Determine if a number is sum of 2 primes
- Probability
00542 France '98 Figure out the probability that a team will win
10288 Coupons Figure out probability that you will win
- Number Bases
00619 Numerical Speaking Convert between words and numeric index
- Partitioning
00668 Parliament Find maximum distinct partition product
------------------------------------------------------------
Direct:
------------------------------------------------------------
- Counting:
00102 Ecological Bin Packing Find minimum number of bottles to move
00154 Recycling Find station that minimizes items moving
00278 Chess Count number of non attacking pieces
00413 Up and Down Sequences Count the number of up and down runs
00613 Numbers that Count Find out if numbers are self-inventorying
00637 Booklet Printing Figure out which pages go where in a fold-over booklet
00696 How Many Knights Find max # of knights to place on n*m board
10293 Word Length and Frequency Count length and freq of words
10300 Ecological Premium Count premiums for farmers
- Sorting:
00110 Meta-Loopless Sorts Produce Pascal programs that do sorting
00120 Stacks of Flapjacks Sort a stack of flapjacks using flips
00514 Rails Sort a train using a station
00538 Balancing Bank Accounts Figure out who owes who what
00612 DNA Sorting Sort some DNA based on some trait
00632 Compression (II) Perform a Burrows Wheel Transform
- Recursion
00155 All Squares Count number of squares surrounding a point
00432 Modern Art Generate some modern triangular art
- Palindromes
00401 Palindromes Determine the type of the word
- String manipulation/comparision
00644 Immediate Decodability Determine if the code set is immediately decodable
------------------------------------------------------------
Geometry:
------------------------------------------------------------
- Z-Buffering
00105 The Skyline Problem Construct a skyline vector
00142 Mouse Clicks Determine which windows was clicked
- Convex Hulls
00109 SCUD Busters Determine regions with power after a war
00132 Bumpy Objects Find a stable position for shapes
- Circles
00121 Pipe Fitters Calculate the most pipes that can fit
00149 Forests Determine viewable trees in an infinite forest
10301 Rings and Glue Determine number of intersecting circles
- Points in Polygons
00143 Orchard Trees Determine numbers of points in triangles
00634 Polygon Determine if a point is in a polygon
- Distance
00152 Tree's a Crowd Generate a histogram of tree distances
10310 Dog and Gopher Find out if the golpher can get to hole
- Art Gallery Problem
00588 Video Surveillance Determine if a camera can see all walls
- Spheres/Globes
00535 Globetrotter Find distance between two points on earth
- Polar/Azimuth Coordinates
00404 Radar Scopes Figure out warnings for planes using radar
- Area of polygons
00428 Swamp County Roofs Calculate area of trapezoidal roof tiles
- Pure Geometry
10283 The Kissing Circles Determine areas associated with circles in circles
10286 Trouble with a Pentagon Find the length of largest square in a pentagon
10287 Gifts in a Hexagon Box Fit circles inside a regular hexagonal box
- Center of gravity
10291 Cut the Legs Cut a table so that it balances
- Line intersection
00834 Water Falls Figure out where water will land
----------------------------------------------------------------------
Searching:
----------------------------------------------------------------------
- Constraint Satisfaction
00124 Following Orders Find all consistent orderings
00129 Krypton Factor Find special "hard" sequences
- Brute Force Searching (no pruning)
00140 Bandwidth Check all 8! sequences
00418 Molecules Find the largest molecule that can be made
00565 Pizza Anyone? Satisfy all topping requests if possible
00616 Coconuts, Revisited Find the maximum number of people on island.
00629 Test Find all "non different" sets
00638 Finding Rectangles Find all rectangles in alphabetical order
- Search with pruning
00624 CD Find set of songs which fit best on tape
10309 Turn the Light Off Find min. # of pushes to turn off lights
- Anagrams
00148 Anagram Checker Find possible anagram sentences from dictionary
00630 Anagrams(II) Find possible anagrams for words
00642 Word Amalgamation Find possible anagrams for words
- Word Searches
00581 Word Search Wonder Find words in a grid
00409 Excuses, Excuses! Find key "excuses" in a sentences
00425 Enigmatic Encryption Find the password from a text
00604 The Boggle Game Find matching words in 2 Boggle boards
- Greedy Algorithms
00410 Balance Station Minimize Imbalance for a centrifuge
USACO
USACO Training Program Gateway
http://train.usaco.org
USACO = USA Computing Olympiad 美國資訊奧林匹克。這個網頁是美國用來訓練國際資訊奧林匹亞競賽選手的網頁,同時亦開放給大眾使用。
這個網站非常有趣!首先註冊一個帳號,進入網站後,會看到一個任務表,完成前面的任務,才會開啟後面的任務──循序漸進,學習更精深的課題。有些任務是只是一些文字資料,講述方法或概念,只要讀完,就算是解決了任務。讀完資料後,接下來的任務,通常都是一連串程式設計的題目,正好學以致用。
有些困難的題目,都會貼心的附帶提示,讓使用者不至於無所適從。每當解決了一個問題之後,便可以觀看該題的解析、解法、解答,讓自己有檢討和進步的空間。這個網站可說是一個非常完整的教學網站!
USACO Contest Gateway
http://ace.delos.com/contestgate
USACO的活動時間是每年十月到隔年三月。十月好像是新生入學,而四月就是資訊奧林匹克競賽的時間(一個全世界天才高中生參與的資訊競賽)。USACO過了三月之後就會沉寂,一直到十月才又有新一季的活動。
每一季開始時,USACO會舉辦資格賽,以鑑定新人的實力。接下來每個月都會舉辦月賽,參訓選手依照實力,獲邀參加對應等級的賽事。月賽的用意,一方面當作是成效驗收,一方面也是在激勵選手邁向更高的等級。USACO也不藏私,所有月賽都對外界開放,也因此USACO也就成了全世界天才高中生相互較勁與成長的場所,而一般民眾也有了動動腦的時間。
比賽說明
USACO的比賽區分為金銀銅三種等級。每個人預設都是銅等級,隨時都可以參加銅等級的比賽。通過金、銀等級的資格賽,鑑定為金、銀等級的人,每個月才能獲邀參加金、銀等級的比賽。
如果沒有參加資格賽,又想要晉升等級,就必須在賽事中有傑出表現。每次月賽結束後,USACO會主動寄送升級的邀請函,給表現優異的選手。
金等級滿困難的,水準相當於ACM-ICPC區賽的中上題目。銀等級是基礎演算法的應用。銅等級是只要懂得寫程式就行了。
每次月賽會提供48小時的緩衝期,期間內隨時都可以參加比賽,開啟題目後,才開始計時。比賽時間是兩小時三題,作題時間相當充裕。每一題都有約十組的測試資料,途中可以不斷上傳解答程式碼進行測試,以最後一次上傳的程式碼為正式解答。評分方式採部分給分,每答對一組測試資料都會得到分數。
賽後兩天左右,會公佈成績,提供題目講評與解答。講評與解答都是開放給所有的人,是一個非常好的學習資源。想要提升自我實力的人,一定要多看金、銀等級的講評。
最後是小叮嚀。USACO的題目是有版權的,請不要隨便在公眾網路上張貼題目、張貼解答程式碼,這會讓管理員很頭痛。USACO也嚴禁比賽作弊,被抓到作弊者,將會永久停權,並且成為國際之恥。曾有國家因為不遵守規矩而被禁賽,請各位三思。
TopCoder
TopCoder
http://www.topcoder.com/
這個網站是現下最流行的程式相關網站。網站功能眾多,其中有一個部分是競賽,競賽的其中一個部分是演算法競賽。在這裡舉行的演算法競賽十分多,平均每個禮拜就有一次比賽,Google Code Jam剛開始也是在這裡舉行的。在這裡舉行的演算法競賽也有很多類型,最常舉辦的比賽類型就是Single Round Match,簡稱SRM,至今已舉辦過450+場,是最簡易的競賽類型,其他還有馬拉松競賽、多回合競賽等等。某些大型比賽是有獎金的,例行賽的出題者也有獎金,因而吸引很多網民在TopCoder出沒。
比賽說明
http://www.topcoder.com/wiki/display/tc/Algorithm
大致上分為三個階段:第一個階段是程式解題,自己寫好解答程式碼,自己測試後沒問題就可以上傳,等候批改;第二個階段是找別人程式碼的漏洞,自己擬好測試資料去測別人寫的程式碼,測出漏洞後自己可得到分數、別人會降低分數,但是實施測試卻測不出漏洞,自己就會被扣分;第三個階段是由系統幫大家批改程式碼,並且統計分數。
通常比賽題目會有兩套,分別叫做DIV1和DIV2,積分比較高的使用者會以DIV1進行比賽,積分比較低的使用者則以DIV2進行比賽,想當然 DIV1的題目比DIV2的題目難得多了。兩套題目分別都是三題,但是三題的難度是不同的,有不同的給分,解出難題則會得到比較高的分數。比賽結束後會依該場比賽的答題情況以及排名名次,重新計算個人的積分。大家平時在練習時,可以直接做DIV1分數最高的題目,沒必要做分數低的題目,如此學習效果較好。
演算法競賽的部分,可以從TopCoder網站左邊的選單中找到,路徑是Competition下面的Algorithm。第一個選項Launch Arena是打開TopCoder用於演算法線上競賽的一套軟體,這套軟體叫做Arena,是一支Java程式。Arena跑起來之後,以個人的帳號密碼登入,就會出現一個介面,在上面可以直接參加比賽,也可以瀏覽過去的比賽題庫,也可以進行解題練習,就跟一般的Online Judge提供的功能差不多。另外Arena還有聊天系統,還有一些個人環境設定等等的功能。
Arena還有一套寫程式的介面,使用者也可以直接在Arena上面編寫程式、執行程式、設計測試資料並測試程式。比較麻煩的一點是,解答程式碼必須包裝成class的形式,程式進入點的member function需按照題目規定來撰寫,系統才有辦法幫你批改和測試。也因此有很多人幫Arena寫了外掛,自動幫你處理這些繁瑣的問題,讓這個寫程式的介面更好用。
第二個選項Statistics,有很多關於比賽的資訊,第一個選項Match Archive會列出亙古迄今舉行過的演算法競賽,另外有一個Promblem Arcive則是列出亙古迄今的所有比賽題目。另外還有一個重要的選項是Match Editorial,可以觀看賽後講評,大部分的比賽都會提供詳細的解法以及解答程式碼,是個很好的學習教材。
這裡僅做些拋磚引玉,詳細情形大家可以自行去了解一下。
Project Euler
Project Euler
http://projecteuler.net/
這個網站專門提供能用程式計算出答案的數學問題。每個問題都有固定一個答案,自己撰寫程式計算出解答後,只要在題目下方的表單中將答案輸入進去、上傳答案,就可以看到解題結果了。
回到首頁
Online Judge System
UVa Online Judge工具網站
UVa Online Judge解題資訊
UVa Online Judge題目分類
USACO
TopCoder
Project Euler