随笔分类 -  算法竞赛入门经典

紫书笔记
摘要:抄书(Copying Books, UVa 714) 题目链接 输入输出 第一行代表有n组数据,以下n组数据每组两行,第一行是m和k,第二行的m个数是序列。 对于每组输入,输出最优的划分方式。 Sample Input 2 9 3 100 200 300 400 500 600 700 800 90 阅读全文
posted @ 2021-01-19 12:26 yudoge 阅读(102) 评论(0) 推荐(0) 编辑
摘要:煎饼(Stacks of Flapjacks, UVa120) 题目链接 有一叠煎饼正在锅里。煎饼共有nn30张,每张都有一个数字,代表它的直径大小,如图8-11所示。flip(k)操作可以把铲子插到倒数第k张煎饼下面,并且翻转铲子上面所有的煎饼。例如,图8-11(a),依次执行操作fli 阅读全文
posted @ 2021-01-14 12:52 yudoge 阅读(165) 评论(0) 推荐(0) 编辑
摘要:循环日程表 循环日程表问题。n=2k个运动员进行网球循环赛,需要设计比赛日程表。每个选手必 须与其他n 1个选手各赛一次;每个选手一天只能赛一次;循环赛一共进行n 1天。按此要求设计一张比赛日程表,该表有n行和n 1列,第i行j列为第i个选手第j天遇到的选手。 思路 此题可以使用递归策略,考虑当k= 阅读全文
posted @ 2021-01-13 11:30 yudoge 阅读(202) 评论(0) 推荐(0) 编辑
摘要:#include <cstdio> #include <iostream> #include <vector> #include <cmath> #include <ctime> using namespace std; /* 产生长度为length的,元素为[-range,range)中随机数的v 阅读全文
posted @ 2021-01-11 13:44 yudoge 阅读(334) 评论(0) 推荐(0) 编辑
摘要:埃及分数(Eg[y]ptian Fractions (HARD version), Rujia Liu's Present 6, UVa12558) 题目链接 把a/b写成不同的埃及分数之和,要求项数尽量小,在此前提下最小的分数尽量大,然后第二小的分数尽量大……另外有k(0≤k≤5)个数不能用作分母 阅读全文
posted @ 2020-12-14 20:25 yudoge 阅读(122) 评论(0) 推荐(0) 编辑
摘要:宝箱(Zombie's Treasure Chest, Shanghai 2011, UVa12325) 你有一个体积为N的箱子和两种数量无限的宝物。宝物1的体积为S1,价值为V1;宝物2的体积为S2,价值为V2。输入均为32位带符号整数。你的任务是计算最多能装多大价值的宝物。例如,n=100,S1 阅读全文
posted @ 2020-12-06 20:38 yudoge 阅读(232) 评论(0) 推荐(0) 编辑
摘要:题目描述 你有一篇由n(2≤n≤9)个自然段组成的文章,希望将它们排列成1, 2,…, n。可以用Ctrl+X(剪切)和Ctrl+V(粘贴)快捷键来完成任务。每次可以剪切一段连续的自然段,粘贴时按照顺序粘贴。注意,剪贴板只有一个,所以不能连续剪切两次,只能剪切和粘贴交替。 例如,为了将{2,4,1, 阅读全文
posted @ 2020-12-06 12:35 yudoge 阅读(121) 评论(0) 推荐(0) 编辑
摘要:埃及分数问题 在古埃及,人们使用单位分数的和(即1/a,a是自然数)表示一切有理数。例如,2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为在加数中不允许有相同的。对于一个分数a/b,表示方法有很多种,其中加数少的比加数多的好,如果加数个数相同,则最小的分数越大越好。例如,19/45=1/ 阅读全文
posted @ 2020-12-05 15:59 yudoge 阅读(333) 评论(0) 推荐(0) 编辑
摘要:如果不了解隐式图遍历,请看:八数码问题——隐式图遍历 隐式图遍历是非常暴力的操作,状态多,耗费内存严重,而且时间复杂度也不低。所以在编码时要考虑很多细节。 倒水问题(Fill, UVa 10603) 原题Vjudge地址 题目大意 有三个容积为a,b和c毫升的杯子(abc为整数并且不会大于200), 阅读全文
posted @ 2020-12-04 20:32 yudoge 阅读(115) 评论(0) 推荐(0) 编辑
摘要:隐式图 显式图是指有一张图的实体,你需要使用各种遍历技术从中找到一个路径或者什么答案。而隐式图是指没有这个图的实体,你需要在遍历的过程中动态生成一些图。 隐式图中把每个图看作一个状态,有多少个图就有多少种状态。光说太抽象了,看看题目。 八数码问题 八数码问题。编号为1~8的8个正方形滑块被摆成3行3 阅读全文
posted @ 2020-12-02 17:14 yudoge 阅读(445) 评论(0) 推荐(0) 编辑
摘要:题目描述 给出房间的宽度r和s个挂坠的重量wi。设计一个尽量宽(但宽度不能超过房间宽度r)的天平,挂着所有挂坠。天平由一些长度为1的木棍组成。木棍的每一端要么挂一个挂坠,要么挂另外一个木 棍。如图7-9所示,设n和m分别是两端挂的总重量,要让天平平衡,必须满足na=mb。 例如,如果有3个重量分 阅读全文
posted @ 2020-12-02 15:11 yudoge 阅读(154) 评论(0) 推荐(0) 编辑
摘要:在紫书上看到的,挺有意思。 一看到位运算我就会躲,因为我整不明白。 代码 #include "iostream" #include "cstdio" using namespace std; void subset(int n, int s) { printf("{"); for (int i = 阅读全文
posted @ 2020-11-25 16:28 yudoge 阅读(254) 评论(0) 推荐(1) 编辑
摘要:这刘汝佳说的。。。 已经好久没碰数学的我感觉被针对了。。。 PS:题目确实不难,但是都需要动动小脑袋去优化。 除法(Division, UVa 725) 输入正整数n,按从小到大的顺序输出所有形如abcde/fghij = n的表达式,其中a~j恰好为数字0~9的一个排列(可以有前导0),2≤n≤7 阅读全文
posted @ 2020-11-24 10:20 yudoge 阅读(177) 评论(0) 推荐(0) 编辑
摘要:四分树(Quadtrees, UVa 297) 如图6-8所示,可以用四分树来表示一个黑白图像,方法是用根结点表示整幅图像,然后把行列各分成两等分,按照图中的方式编号,从左到右对应4个子结点。如果某子结点对应的区域全黑或者全白,则直接用一个黑结点或者白结点表示;如果既有黑又有白,则用一个灰结点表示, 阅读全文
posted @ 2020-11-21 20:52 yudoge 阅读(243) 评论(0) 推荐(0) 编辑
摘要:修改天平(Equilibrium Mobile, NWERC 2008, UVa12166) 给一个深度不超过16的二叉树,代表一个天平。每根杆都悬挂在中间,每个秤砣的重量 已知。至少修改多少个秤砣的重量才能让天平平衡?如图6-23所示,把7改成3即可。 输入 示例第一行为整数n,它代表有多少组测试 阅读全文
posted @ 2020-11-19 16:49 yudoge 阅读(241) 评论(0) 推荐(0) 编辑
摘要:巡逻机器人(Patrol Robot, ACM/ICPC Hanoi 2006, UVa1600) 机器人要从一个m*n(1≤m,n≤20)网格的左上角(1,1)走到右下角(m,n)。网格中的一些格子是空地(用0表示),其他格子是障碍(用1表示)。机器人每次可以往4个方向走一格,但不能连续地穿越k( 阅读全文
posted @ 2020-11-17 17:56 yudoge 阅读(144) 评论(0) 推荐(0) 编辑
摘要:理想路径(Ideal Path, NEERC 2010, UVa1599) 给一个n个点m条边2n1000001m200000的无向图,每条边上都涂有一种颜色。求从结点1到结点n的一条路径,使得经过的边数尽量少,在此前提下,经过边的颜色序列的字典序最小。一对结点间可能有多条边,一条 阅读全文
posted @ 2020-11-15 20:19 yudoge 阅读(158) 评论(0) 推荐(0) 编辑
摘要:给定n种正方形,每种正方形有4条边,每条边有2个字符构成,包含以下两种模式: 第一个为A-Z的大写字母,第二个为+/-,如A+或Z- 00 当两条边的第一个字符相同,而第二个字符相反时,两边可相连,00不可与任何边相连。 现假设每种正方形无限供应,并且可以随意旋转和翻转,问是否存在无限拼接图像? 下 阅读全文
posted @ 2020-11-13 19:07 yudoge 阅读(118) 评论(0) 推荐(0) 编辑
摘要:有时我们需要处理的数据是连续的,比如时间,距离,坐标等等。这时需要用到离散化。 比如给你个二维坐标轴,500*500,给你一堆建筑物的实数型的坐标,让你求一些东西。坐标轴上的点是无穷的,计算机没法表示,所以我们不如把重心放在这些已有的建筑物坐标上而不是整个坐标轴,因为这些数据是有限且离散的。 城市正 阅读全文
posted @ 2020-11-13 18:48 yudoge 阅读(246) 评论(0) 推荐(0) 编辑
摘要:输入一个m行n列的字符矩阵,统计字符“@”组成多少个八连块。如果两个字符“@”所在的格子相邻(横、竖或者对角线方向),就说它们属于同一个八连块。例如,下面的示例中有两个八连块。 ****@ *@@*@ *@**@ @@@*@ @@**@ 说的挺不好理解的,其实就是找图中有几个连通分量,这图里右两个。 阅读全文
posted @ 2020-11-08 13:49 yudoge 阅读(127) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示
主题色彩