贴一个BUPT的POJ推荐50题,最近慢慢做……
POJ推荐50题
POJ == 北京大学ACM在线评测系统 http://acm.pku.edu.cn/JudgeOnline
1. 标记 难 和 稍难 的题目大家可以看看,思考一下,不做要求,当然有能力的同学可以直接切掉。
2. 标记为 A and B 的题目是比较相似的题目,建议大家两个一起做,可以对比总结,且二者算作一个题目。
3. 列表中大约有70个题目。大家选做其中的50道,且每类题目有最低数量限制。
4. 这里不少题目在 BUPT ACM FTP 上面都有代码,请大家合理利用资源。
5. 50个题目要求每个题目都要写总结,养成良好的习惯。
6. 这50道题的规定是我们的建议,如果大家有自己的想法请与我们 Email 联系。
7. 建议使用 C++ 的同学在 POJ 上用 G++ 提交。
8. 形成自己编写代码的风格,至少看上去美观,思路清晰(好的代码可以很清楚反映出解题思路)。
9. 这个列表的目的在于让大家对各个方面的算法有个了解,也许要求有些苛刻,教条,请大家谅解,这些是我们这些年的经验总结,所以也请大家尊重我们的劳动成果。
10. 提交要求:一个总文件夹名为 bupt0xx (即你的比赛帐号), 这个文件夹内有各个题目类别的子目录(文件夹),将相应的解题报告放入对应类别的文件夹。在本学期期末,小学期开始前,将该文件夹的压缩包发至 buptacm@gmail.com 。 对于每个题目只要求一个 POJxxxx.cpp 或 POJxxxx.java (xxxx表示POJ该题题号) 的文件,注意不要加入整个 project 。
11. 如果有同学很早做完了要求的题目,请尽快和我们联系,我们将指导下一步的训练。
下面是一个解题报告的范例:
例如:POJ1000.cpp
//考查点:会不会编程序。
//思路:此题要求输入两个数, 输出两个数的和,我用 scanf 和 printf。
//提交情况:Wrong Answer 1次,忘了写 printf()。
Compile Error 2次,选错了语言,由于C++ 和 G++ 在 iostream.h 的不用引用方法;少一个大括号。
Accepted 1次。
//收获:学到了 scanf, printf 的基本用法,熟悉了 OJ 的系统环境。
//经验: 写好代码后本地编译 而且需要静态观察,杜绝编译错误。
// AC Code
#include <stdio.h>
int main() {
int a,b;
scanf("%d%d",&a,&b);
printf("%d/n",a+b);
return 0;
}
第一类动态规划(至少6题,2479and2593必做) 2479and2593 1015 1042(也可贪心) 1141 1050 1080 1221 1260 2411(稍难) 1276
第二类搜索(至少4题) 1011 1033 1129 2049 2056 2488 2492(稍难,也可并查集?)
第三类贪心(至少2题) 1065 2054(难) 1521 2709
第四类最短路(至少3题) 1062 1125 1797 2253 2679Bellman-Ford(难)
第五类最小生成树(至少2题,而且Prim和Kruskal至少各用一次) 1251 1258 1789 2485
第六类最大流(至少2题) 1087 1459 1149 2516(最小费用最大流)(难)
第七类二分图(至少3题) 1325 1469 2195(KM算法或最小费用最大流)(难) 2446 1422and2594
第八类并查集(至少2题) 1861 1182(难) 1308 2524
第九类快速查找(B-Search,Hashandsoon)(至少3题) 2503 2513(+Euler回路的判定) 1035 1200 2002
第十类数论(至少2题) 1061 1142 2262 2407 1811(难) 2447(难)
第十一类线段树(无最少题数要求) 2352(可用简单方法) 2528
第十二类计算几何(至少2题,1113凸包算法必做) 1113 1292 2148(难) 2653 1584
第十三类高精度(至少3题,1001必做) 1001 1047 1131 1503 1504 1060and1996(多项式) SCU1002,1003,1004(http://acm.scu.edu.cn/soj)
第十四类模拟(至少5题) 1029and1013 1083and2028 2234and1067 1012 1026 1068 1120 2271 2632
第十五类数学(至少4题) 2249 1023 2506 1079 1019and1095 1905and1064(二分)