Classified Problems on Online Judge
练习题选自以下在线测评系统
* sicily:http://soj.me, 中山大学Sicily在线测评系统
* UVA OnlineJudge, 题号前缀为uva
* ProgrammingChanlanges Online Judge, 题号前缀为pc
题目的分类仅供参考,很多题目有多种实现,有些题目比较综合,所以或许有不确切或不正确的分类,发现问题请提醒我。
1. 编程入门
2. 数据结构
3. 字符串
4. 排序
5. 算术与代数
6. 组合问题
7. 数论
8. 搜索: 回溯法,启发式搜索
9. 图遍历
10. 图算法
11. 动态规划
12. 网格,几何,计算几何
【编程入门】
PC 110101, uva 100, The 3n+1 problem, 难度 1
PC 110102, uva 10189, Minesweeper, 难度 1
PC 110103, uva 10137, The Trip, 难度 1
pc 110104, uva 706, LC-Display, 难度 1
pc 110105, uva 10267, Graphical Editor, 难度 1
PC 110106, uva 10033, Interpreter, 难度 2
pc 110107, uva 10196, Check the Check, 难度 1
PC 110108, uva 10142, Australian Voting, 难度 1
sicily 1144陶陶摘苹果. 简单计数,难度0
sicily 1145校门外的树. 简单计数,难度0
sicily 1232Electrical Outlets.简单计数,难度0
sicily 1324 Score.简单计数,难度0
sicily 1157 Thehardest problem.简单大小比较,难度0
sicily 1147谁拿了最多奖学金. 结构体、数组、分支,难度1
sicily 1795 Table tennis, 几何题, 难度
sicily 1798 Aliceand Bob,策略, 难度1
sicily 1087 Funny game. 简单策略. 难度1
sicily 1510 Mispelling, 字符串, 难度0
sicily 1500 Prime Gap. 求小于给定整数的最大素数. 难度1.
sicily 1561 PRIME Number. 难度1
sicily 1007 To and Fro, 数组与下标(二维数组), 难度1
sicily 1036 Crypto Columns, 二维数组,字符串,排序, 难度1
sicily 1014, Specialized Four-Dig, 进制转换,字符串, stack, 难度 1
sicily 1813 M进制数问题, 难度 1
sicily 1298 数制转换. 把整数转换成特殊3进制. 难度1.
sicily 1325 Digit Generator. 提取整数各位数字. 难度0
sicily 1154 easysort.简单排序. 难度0
sicily 1814 日期计算问题
sicily 1815 计算两点间的距离
sicily 1816 平面几何问题
sicily 1817 校歌手大奖赛
sicily 1818 成绩转换
【数据结构】
/* Data Structure:
Stacks and Queues
Binary Search Tree
Hash Table
Dictionaries (set, map)
Priority Queues
Disjoint Sets
tries
Suffix Trees
B-Trees
Kd-Trees
Skip-Lists
Balanced Trees: AVL Tree, Splay Tree, Red-Black Tree
*/
pc 110201, uva 10038, Jolly Jumper, 难度 1
pc 110202, uva 10315, Poker Hands, 难度 2
pc 110203, uva 10050, Hartals, 难度 2
pc 110204, uva 843, Crypt Kicker, 难度 2
pc 110205, uva 10205, Stack 'em Up, 难度 1
pc 110206, uva 10044, Erdos Numbers, 难度 2
pc 110207, uva 10258, Contest Scoreboard, 难度 1
pc 110208, uva 10149, Yahtzee, 难度 3
sicily 1200 Stick. 简单查找配对,或排序或用set,难度1
sicily 1194 Message Flood. 单词查找。排序后二分查找,或哈希或平衡二叉树或set, 难度1
sicily 1931 卡片游戏. 队列,难度2
sicily 1443 Printer Queue. 基本队列操作。
sicily 1021 couples. 栈, 难度1
sicily 1934 移动小球. 线性表,难度2
sicily 1509 Rails. 难度2
sicily 1768 双栈排序
sicily 1021 couples. 栈,难度2
sicily 1210 二叉树, 二叉树遍历顺序先后中转换,挺经典的。
sicily 1935 二叉树重建. 二叉树,难度2
sicily 1082 manager, 维护一个能够删除最小元和最大元的数据结构,可以用一个大根堆和一个小根
堆实现,Wanglei用了两个set,set1支持最小元的删除,set2支持最大元的删除,每
加入一个新元素x,将x加入set1,-x加入set2,这样set1的头元素就是最小元,
set2的头元素的相反数就是最大元.
sicily 1310 Right-Heavy Tree 笛卡尔树相关,复杂度O(N)或O(NlogN)。
sicily 1426 Phone List 电话号码前缀检索,trie树相关。
sicily 1149 等价表达式 判断表达式是否等价(递归求解)
sicily 1136 山海经 n长序列里求m次区间询问的最大连续子区间和。线段树/RMQ
sicily 1375 Balanced Lineup. 哈希
【字符串】
/*
String Problems:
String Matching
Approximate String Matching
Text Compression
Cryptography
Longest Common Substring/Subsequence
Shortest Common Superstring
*/
pc 110302, uva 10010, Where's Waldorf, 字符串
pc 110304, uva 850, Crypt Kicker II, 字符串
pc 110306 File Fragmentation, 字符串
pc 110307 Doublets, 字符串
sicily 1133 SPAM 输出输入字符串里的合法email地址。
sicily 1323 Switch text 字符串处理。
【排序和查找】
/*
Sorting: Insertion Sort, Selection Sort, Heapsort,Mergesort, Quicksort, Counting Sort, Bucket Sort
Searching: Sequence Search, Binary Search
Median and Selection
*/
pc 110401, uva 10041, Vito's Family
pc 110403, uva 10037, Bridge
pc 110405, uva 10026, Shoemaker's Problem
pc 110406, uva 10138, CDVII
pc 110402, uva 120, Stacks of Flapjacks, 堆栈, 排序
pc 110404, uva 10191, Longest Nap
pc 110407, uva 10152, ShellSort, 龟壳排序
pc 110408, uva 10194, Football
sicily 1930 排序. 直接选择排序. 难度1.
sicily 1046 Plane Spotting. 排序. 难度1.
sicily 1134 积木分发. 从小到大排序. 难度1.
sicily 1097 LED Modding 排序。
sicily 1438 Shopaholic 排序,隔三求和。
sicily 1306 Sorting Algorithm 基本的排序,输出。
sicily 1198 Substring. 字符串,排序. 难度1.
sicily 1252 Defining Moment 字符串划分前后缀
【图遍历】
/* Graph Travasal
Breadth-First Search and Applications: ConnectedComponents, Two-Coloring Graphs,
Depth-First Search and Applications: Finding Circles,Articulation Vertices寻找割点,
TopologicalSorting, Strongly Connected Componensts,
*/
pc 110901, uva 10004, Bicoloring, 难度1
pc 110902, uva 10067, Playing with Wheels, 难度2
pc 110903, uva 10099, The Tourist Guide, 难度3
pc 110904, uva 705, Slash Maze, 难度2
pc 110905, uva 10029, Edit Step Ladders, 难度3
pc 110906, uva 10051, Tower of Cubes, 难度3 (USE UVA JUDGE-- NOT PC JUDGE)
pc 110907, uva 10187, From Dusk Till Dawn, 难度3
pc 110908, uva 10276, Hanoi Tower Troubles Again, 难度3
sicily 1936 Knight Moves. 深度优先搜索,回溯
sicily 1940 Ordering Tasks. 拓扑排序. 难度3
sicily 1155 Can I Post the letter 判断两点是否可达。(图的遍历)
sicily 1308 Dependencies among Jobs 图的遍历。
sicily 1424 奖金 拓扑排序
sicily 1034 Forest 森林的定义,求最大宽度与深度。(深度优先遍历)
sicily 1114 Food Cubes 广度优先遍历给3维空间图染色。(dfs容易栈溢出)
【图算法】
/*Graph Problems
1. Polynomial-Time Problems
Connected Components
Topological Sorting
Minimum Spanning Tree
Shortest Path
Transitive Closure and Reduction
Mathcing
Eulerian Cycle/Chinese Postman
Edge and Vertex Connectivity
Network Flow
2. Hard Problems
Clique
Independent Set
Vertex Cover
Traveling Salesman Problem
Hamitonian Cycle
Graph Partition
Vertex Coloring
Edge Coloring
Graph Isomorphism
Steiner Tree
Feedback Edge/Vertex Set
*/
pc 111001, uva 10034, Freckles, 难度 2
pc 111002, uva 10054, The Necklace, 难度 3, (USE UVAJUDGE -- NOT PC JUDGE)
pc 111006, uva 10199, Tourist Guide, 难度 3
pc 111007, uva 10249, The Grand Dinner, 难度 4, (USE UVAJUDGE -- NOT PC JUDGE)
pc 111003, uva 10278, Fire Station, 难度 2
pc 111004, uva 10039, Railroads, 难度 3
pc 111005, uva 10158, War, 难度 3
pc 111008, uva 10092, The problem with the ProblemSetter, 难度 3
sicily 1031 Campus 单源最短路,dijkstra。
sicily 1090 Highways 最小生成树。难度2。
sicily 1402 Panic Room 构图求网络最大流
sicily 1303 Job Assignment 二分图的最大权匹配
sicily 1192 Guardian of Decency 求最大独立集,比较特殊可以转二分匹配做。
sicily 1211 商人的宣传, 简单题,有向图矩阵乘法,O(n^3*logL);直接迭代也行,O(n*m*L)。
sicily 1350 Piggy banks 给出每个点出度为1的有向图,求环的个数。(简单)
sicily 1423 魔王bug的2色定理 构图求网络的最小割。
sicily 1173 Reliable Nets 无向图求最小的二连通子图。(数据小可以搜索)
sicily 1141 猴子的争斗 完全图最小生成树的方法数,节点全排列: n!*(n^(n-2))
sicily 1196 Conflict 关系闭包的转换
sicily 1170 Countdown 建树,统计
sicily 1132 ROUTES 用括号序列表示树,求两节点最近公共祖先。
sicily 1210 二叉树 知道前序后序求可能的方法数
sicily 1326 Apple Tree, 建树,求两结点最近公共祖先。
利用栈:计数器=0,遇到'0',计数器入栈,计数器++;遇到'1',栈顶元素出栈,并且当前栈顶元素为出栈元素父节点,连边
【搜索:回溯,启发式搜索,剪枝】
pc 110801, uva 861, Bishops
pc 110802, uva 10181, 15-Puzzle Problem (USE UVA JUDGE -- NOT PC JUDGE)
pc 110805, uva 10032, Tug of War
pc 110806 Garden of Eden
pc 110807, uva 704, Colour Hash
sicily 1002 Anti-Prime Sequences. 搜索,回溯。
sicily 1835 N Queens Problem. 搜索,回溯。
sicily 1444 Prime Path 广度优先搜索
sicily 1048 Inverso. 广度优先搜索BFS,二进制表示状态判重。难度3
sicily 1317 Sudoku. 数独求解的个数。
sicily 1171 The Game of Efil 2^16 dfs枚举棋盘后检测
sicily 1219 新红黑树. 砍树博弈,min-max搜索或记忆化搜索
v1215 脱离地牢. 有限制的迷宫求两人相遇的最小步骤。(广度优先搜索)
sicily 1180 Pasting Strings 给10个字符串,求一个排列使得某种权和最大,全排列搜索。
sicily 1024 Magic Island. 无向图的最长路,深度优先搜索DFS. 难度2
sicily 1050 Numbers & Letters 回溯 DFS求5个数可否运算得到目标数, 否则输出可得到的小于目标数的最大数.
sicily 1135 飞越原野 最短时间过地图,广度优先搜索.
sicily 1107 Simple Puzzle 按题意搜索,有可能有前置零,输出排序.
sicily 1150 简单魔板 广度优先搜索,全排列的hash函数设计
sicily 1151 魔板 广度优先搜索,全排列的hash函数设计
sicily 1152 简单的马周游问题,迷宫问题的可行性剪枝.
sicily 1153 马周游问题。 同上,扩展状态节点的时候按目标函数值排序。
sicily 1378 八数码问题. 启发式搜索。
【动态规划】
pc 111101 Is Bigger Smarter? (USE UVA JUDGE -- NOT PC JUDGE)
pc 111103 Weights and Measures
pc 111104 Unidirectional TSP
pc 111106 Ferry Loading (USE UVA JUDGE -- NOT PC JUDGE)
sicily 1001 Alphacode, dp基本题
sicily 1264 Atomic Car Race dp基本题.
sicily 1342 开心的金明 背包dp
sicily 1146 采药 01背包 剩余类dp
sicily 1419 On the run(牛奶快递), dp
sicily 1019 Apple Tree 树型dp,边dfs边更新最优值。05韩国赛区题,本题即是经典的最近公共祖先(LCA)的简化版。因为给出了访问顺序,而且只需求一次,所以比传统的LCA简单很多。可以使用传统的单个LCA问题的朴素算法来解这道题,简单介绍如下:
要求u和v的LCA,只要从u的父亲开始顺着树往上枚举u的祖先并保存在一个列表L中,然后
再用类似的方法枚举v,当第一次发现某个祖先x在L中时,则输出x。复杂度是o(n)。
由于这题的特殊性,也可以用一种更简单的方法来做。那就是根据DFS的原理,设一个栈,直接从左往右扫一次。这样也是o(n),但写起来更容易一些,不过比较易出错。
另外,这题还要注意的地方就是A=B的时候要特殊处理一下。
sicily 1138 寻宝之旅 dp
sicily 1225 电子眼 树+一边的图上求最小边覆盖,树型dp.
sicily 1404 Hie with the Pie 状态压缩dp
sicily 1103 The Top-Code 字符串划分dp,要求字典序输出方案时的状态表示方法。
sicily 1123 The Longest Walk 有向图求任意起终点的无重复点的最长路,状态压缩dp
【未归类的 动态规划/递推/组合计数】
sicily 1355 The Bus 二维的最长上升子序列,最长不递减子序列的变种。用STL里的map写巨简单。
sicily 1169 ACM(ACronymMaker) 给一些短语求按题意要求构成指定缩写的方法数.
sicily 1163 Tour 欧几里德旅行商问题(吴文虎那本书p314)
sicily 1233 Necklace Decomposition 按题意分割字母.
sicily 1222 单词选择 在给定文章里选出连续的一段包含最多的word且长度最短.
sicily 1197 Hotel 字符串含通用符的匹配,记忆化搜索.
sicily 1120 Walk Through the Forest 简单无向图,求节点1到节点2的按题意走法的方法数.
sicily 1091 Maximum Sum 求分两个部分后的和最大.
sicily 1098 Marching in the Corp 给出部分偏序关系,求可能的排名方法数.
sicily 1049 Mondriaan 2*1跟1*1的砖铺成2*n的走道的方法数%10.
sicily 1121 Tri Tiling 2*1的转铺成3*n的走道的方法数。
sicily 1327 Pinary 递推求第k个pinary数。
sicily 1233 Necklace Decomposition 按题意分割字母.
sicily 1221 数字游戏 n个数序列每个数每次会减少b[i]。取出m个数,求最大值.
sicily 1139 电路稳定性 递归处理括号对序列算电路不通概率.
sicily 1108 Online Selection 问答游戏,n层k个回答拿了m分,求最大的回答0的个数.
sicily 1033 City Road 求0,0走到n+1,m+1的最短路方法数,中间有一些障碍.
sicily 1176 Two Ends 二人从两头取数,对方贪心取大的,你尽量使得两者的差大.
sicily 1413 Whac-a-Mole 打地鼠游戏,求一定时间内能打到最多地鼠的方案。
sicily 1415 Honeycomb Walk 蜜蜂窝走N步回到出发地的方法数。
【二分法/分治】
sicily 1017 Rate of Return. 求解方程,二分. 难度2
sicily 1211 商人的宣传 求两点间L步到达的方法数.
sicily 1137 河床. 求一个最长的连续区间满足其中的最小数和最大数之差不大于k。
sicily 1441 Pie 二分
【贪心】
sicily 1198 Substring 8个串排出最小字典序。(用ab
sicily 1140 国王的遗产 砍不大于n/2个节点的最大树枝
sicily 1172 Queens, Knights and Pawns 染色模拟
sicily 1193 Up the Stairs 搬箱子上楼梯.
【算数与代数】
/*
Numerical Problems:
Solving Linear Equations
Bandwidth Reduction
Matrix Multiplication
Determinants and Permantents
Constrained and Unconstrined Optimization
Linear Programing
Random Number Generation
Factoring and Primality Testing
Arbitrary-Precision Arithmetic
Kanpsack Prpblem
Discret Fourier Transform
*/
pc 110502 Reverse and Add
pc 110503 The Archeologists' Dilemma
pc 110504 Ones
pc 110505 A multiplication game
sicily 1813 M进制数问题. 进制转换,难度1
sicily 1201 01000001. 大整数二进制加法
sicily 1029 Rabbit. 高精度求和,难度2
sicily 1020 Big Integer. 高精度数求模,难度2
sicily 1381 a * b. 高精度乘法
sicily 1240 Faulty Odometer 十进制数少了4的计数
【组合问题】
/*
Combinatorial Problems:
Median and Selection
Generating Permutations
Generating Subsets
Generating Partitions
Generating Graphs
Generating Calculations
Job Scheduling
Satisfiability
*/
pc 110603 Counting
pc 110604 Expressions
pc 110606 The Priest Mathematician
pc 110607 Selfdescribing Sequence
sicily 1089 Farey Sequence. 计算Farey Sequence元素个数. 难度2
sicily 1224 速配游戏 组合数学上经典的稳定婚姻问题。
sicily 1242 Suit Distribution 无聊计数
sicily 1174 Square Count 数方块数,容斥原理。
sicily 1302 Magic Square 奇数阶的魔方构造
sicily 1125 Arnie versus the IRS. 两个日期间0-9数字出现次数统计,周末不计。
sicily 1200 Stick. 奇数根木棍,不同种类的有偶数个,有一种只有奇数个。异或. 难度1
sicily 1344 数列 某种规则的数列生成
sicily 1203 The Cubic End 给一个1,3,7,9结尾的数求一个数的立方的尾部是原数
sicily 1280 Permutation
sicily 1214 信号分析 数列找规律求an=n的个数. 二进制表示时是回文。出题人梁峰, 很有意思的一题,不是看过他的报告我也想不到。请问你是否有从二进制的方向想过这个数列呢?n=1,2,3,4,5,6,7,8;an=1,1,3,1,5,3,7,1,它们的二进制形式为n=(1)2,(10)2,(11)2,(100)2,(101)2,(110)2,(111)2,(1000)2;an=(1)2,(01)2,(11)2,(11)2,(001)2,(101)2,(011)2,(111)2,(0001)2,找出什么规律了吗?an的二进制串恰好是n的二进制串的反转。其实这个可以用归纳法证明:对于a2n=an,(2n)2=(n)2_0(注意这里设”_”为二进制串连接符号,再设~n为n的二进制串倒转),经函数a反转后等式成立(反转后0在前面实际就没了)。
对于a4n+1 = 2*a2n+1 - an,(4n+1)2=(n)2_01,(2n+1)2=(n)2_1,(a4n+1)2=10_(~n)2,2*a(2n+1)=2*[1_(~n)2]=1_(~n)2_0,an=(~n)2,a4n+1 + an = 10_(~n)2 + (~n)2 = 1_(~n)2_0 =
2*a2n+1。同理a4n+3等式亦相同证明,综上等式对所有n∈N均成立,证毕。知道这个性质,简单了,使得an=n的只有那些二进制形式是回文串的了,枚举二进制的前半部分p,翻转复制到后一半,注意要生成两个n值,一个是p_(~p),一个是p_~(int(p/2)),如果小于等于n,则统计。时间复杂度是O(√n)。
【数论】
/* Numberic Theory:
素数:寻找素数,素数的个数
整除性:最大公约数,最小公倍数
模算术
同余
*/
pc 110702 Carmichael Numbers (USE UVA JUDGE -- NOT PC JUDGE)
pc 110704 Factovisors
pc 110707 Marbles
pc 110708 Repackaging
【暂时未细分的数学】
sicily 1251 Plinko 弹珠游戏算概率
sicily 1258 It 多项式求导
sicily 1047 Super Snooker 连续的数和可否二分.
sicily 1448 Antimonotonicity 最长不单调子序列(f[0]>f[1]
sicily 1433 Optimal Parking 直接算
sicily 1259 Sum of Consecutive Prime Numbers 连续素数和
sicily 1239 Smallest Differencev 一些数码,组成差最小的两个数
sicily 1231 The Embarrassed Cryptographer 两个素数积,枚举因子
sicily 1218 纪念邮票 同1209
sicily 1209 Sequence Sum Possibilities 求m分解成不同的连续整数和的方法数
sicily 1206 Stacking Cylinders 堆圆筒,解方程.
sicily 1199 GCD 求小于N且与N的GCD大于M的数个数.
sicily 1190 Reduced ID Number 找最小的数使得给出的所有数mod它的结果不同
sicily 1099 Packing Passengers 线性模方程
sicily 1119 Factstone Benchmark 求n!<=2^k的最大n. 两边取对数.
sicily 1412 Tour Guide n个物体向各个方向做匀速运动。
sicily 1305 Who’s Winner 博弈题,找规律。
【模拟/其他】
sicily 1122 Prerequisites 模拟统计学生选课。
sicily 1093 Air Express 枚举。
sicily 1237 Paint Mix 黑白染料混合出指定灰度的染料。
sicily 1202 The Bank of Kalii 日期比较
sicily 1187 Laserbox 机器人运动模拟,dfs遍历。
sicily 1177 Take Your Vitamins 按要求做一些基本的数据统计。
sicily 1182 Context-Free Clock 钟表时间和时针分针之间夹角的关系。
sicily 1100 Tennis Anyone 网球排名统计。
sicily 1110 ioi photos 模拟.统计
sicily 1128 DICE 判断骰子是左手型还是右手型,模拟旋转.(逆序可以做)
sicily 1129 ISBN 给定规律求ISBN最后一位.
sicily 1401 Children of the Candy Corn 模拟左手规则走迷宫。
sicily 1205 brainf*ck 模拟解释执行题目中定义的一种编程语言
【几何与计算几何】
/* Computatinal Geometry:
Robust Geometric Primitives
Convex Hull
Triangulation
Voronoi Diagrams
Nearest Neighbor Search
Range Search
Point Location
Intersection Detection
Bin Packing
Medial-Axis Transform
Polygon Partitioning
Simplifying Polygons
Sharpe Similarity
Motion Planning
Maintaining Line Arrangements
Minkowski Sum
*/
pc 111202 The Monocycle
pc 111203 Star
pc 111205 Robbery
pc 111207 Dermuba Triangle
pc 111301 Dog and Gopher
pc 111302 Rope Crisis in Ropeland!
pc 111305 Birthday Cake (USE UVA JUDGE -- NOT PC JUDGE)
pc 111308 How Big Is It?
pc 111401 Herding Frosh
pc 111403 Chainsaw Massacre
pc 111404 Hotter Colder
pc 111408 Nice Milk
sicily 1012 Stacking Cylinders. 平面几何. 难度2
sicily 1175 Swamp Things 平面上N个点,求一条经过最多点的直线。
sicily 1234 Playground 半圆圈能否构成封闭圈。平面图,转为判断多边形能否构成
sicily 1179 Extrusion 多边形求面积
sicily 1045 Space Management 求平面上矩形叠加的总面积,矩形切割或者离散化.
sicily 1092 Stars in Your Window 线段树.
sicily 1145 校门外的树 离散化或O(n)的扫描
sicily 1223 防御力场 求一条过目标点的直线,使得直线一边的点最少
sicily 1216 野外行军 光程最短路
sicily 1118 War on Weather 球外一点与球切线直接判断范围。