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參賽選手,並未對校外人士開放。 NCTU Online Judge 交通大學的Online Judge。 比較特別的是,這是玩資訊安全攻防演練的Online Judge。
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
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
這個網站是現下最流行的程式相關網站。網站功能眾多,其中有一個部分是競賽,競賽的其中一個部分是演算法競賽。在這裡舉行的演算法競賽十分多,平均每個禮拜就有一次比賽,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
這個網站專門提供能用程式計算出答案的數學問題。每個問題都有固定一個答案,自己撰寫程式計算出解答後,只要在題目下方的表單中將答案輸入進去、上傳答案,就可以看到解題結果了。