2013年9月22日

uva 12124

摘要: 分类: 高效搜索,二分题意: 给定电脑各种配件,每个配件有价格和品质因子,在给定钱数b的前提下,每种配置选一个,使得最小品质因数最大,保证有解输入: 测试组数T, 钱数b,配件个数n,以下n行为每个配件的分类, 名称, 价格, 品质因子输出: 最大的品质因数方案的品质因子核心: 搜索答案,按照品质因子个数进行二分查找 二分查找是个蛮有趣的问题,恰好这个题里面一些细节处理不好是通不过测试的。 ① 基本二分: int right = upper; while(left = num) right = mid; else left = mid +... 阅读全文

posted @ 2013-09-22 17:54 小书包_Ray 阅读(244) 评论(0) 推荐(1) 编辑

2013年9月18日

uva 10795

摘要: 分类: 递归与模拟题意: 汉诺塔问题改版,求对于给定状态的汉诺塔问题,到指定目标状态,需要多少次操作输入: 盘子数目n,每个盘子所在的架子编号输出: 移动次数解法: 经典汉诺塔问题,f(n) = 2 * f(n - 1) + 1;其中f(1) = 1,将1-n的盘子移动到另外一个盘子需要的次数 这个题怎么做,想了好一会没有特别好的思路,参考了书上的解法 初始状态 ----> 中间状态(必须经由) ----> 目标状态 由于可逆性,可以改为初始状态 ----> 中间状态 #include #include #include #include #include #incl... 阅读全文

posted @ 2013-09-18 12:06 小书包_Ray 阅读(187) 评论(0) 推荐(0) 编辑

2013年9月17日

uva 11384

摘要: 分类: 中位数与递归题意: 给定n表示整数序列1...n,每次操作可以同时选择一个或者多个整数,同时减去一个整数,求次数最少输入: 整数n输出: 最小次数解法: 化为n/2的子问题,f(n) = f(n / 2) + 1, 起始点f(1) = 1, 解之f(n) = log(n) + 1 关键问题是,为什么这样次数就是最优的? 书上和许多其它报告多提的是多次尝试,权且如此吧 #include #include #include #include #include #include #include #include #include #include #include ... 阅读全文

posted @ 2013-09-17 21:14 小书包_Ray 阅读(177) 评论(0) 推荐(0) 编辑

uva 11464

摘要: 分类: 枚举 和 剪枝题意: 给定矩阵由0,1组成,使用最少的改变(使0变成1),使得任何元素的上下左右元素(如果存在)和为偶数输入: 测试组数, 矩阵大小n ,矩阵每一个数输出: 最小翻转次数,无法实现则输出-1解法: 类似关灯问题,枚举第一行的状态(2^n)种情况,依题意,所有的后续方格可以由上面确定,检查翻转次数与是否满足 关键在于如何编写,即按照顺序确定每一个方格的状态 在代码中体现为 check函数,注意实现过程中适当剪枝,提高速度#include #include #include #include #include #include #include #incl... 阅读全文

posted @ 2013-09-17 20:35 小书包_Ray 阅读(129) 评论(0) 推荐(0) 编辑

uva 10881

摘要: 分类:排序与坐标映射题意:给定木棒上蚂蚁的位置,木棒的长度,运动方向和速度,以及时间,确定之后蚂蚁的状态。蚂蚁碰撞同时改变方向,速度不变输入:组数, 木棒长度, 时间T, 蚂蚁个数n, 以下n行是蚂蚁的位置(距离左端),以及运动方向输出:按照输入顺序,每只蚂蚁的状态,掉下则为“Fell off”,正在碰撞为“Turning”, 其余为位置和方向解法: 核心:关注最终结果,“对穿”,见《训练指南》 关键:如何“按照输入顺序”输出“最终结果” 对每只蚂蚁记录其inputOrder为输入顺序,再按照初始位置排序,注意这个排序的下标即为最终终态的蚂蚁下标,记录为finalPo... 阅读全文

posted @ 2013-09-17 16:39 小书包_Ray 阅读(174) 评论(0) 推荐(0) 编辑

2013年9月16日

uva 11300

摘要: 分类: 中位数与排序统计学题意: N个人每个人有Ai个金币,综合整除N,每个人可以给相邻的人一定数量的金币(圆环) 如何给使得金币流动数最少,而且每个人最后金币数量一样输入: N,每个人金币Ai输出: 最小的金币流通数目解法: 设Xi为第i个人给第i-1个人的金币数,x1表示第一个人给第四个人,只设置单方向(双向可以抵消) 列方程组 A1 - X1 + X2 = M . . Ai-1 - Xi-1 + Xi+1 = M 有n-1个方程组, Ai和M是常数 优化目的 sigma(|xi|)最小,简... 阅读全文

posted @ 2013-09-16 17:44 小书包_Ray 阅读(150) 评论(0) 推荐(0) 编辑

CLRS 前几章

摘要: 天又翻开CLRS,看了看前几章的习题,做了一些回顾,做一些笔记吧。1.递归式求解常用的主方法以b为base,取a的log,与变量f(n)进行比较,然后三种情况。2. p23 2.3-6 在插入排序中加入二分检索在Insertion-sort中前5-7行向A[1...j -1]寻找一个恰当的位置来放置A[j],在这个过程的同时,把每一个比A[j]大的元素向后移了一位,二分检索可以减少寻找位置的时间,但是不能减少移动元素所需要的时间,因此单独加入二分检索不能减少Insertion-sort所需要的时间。3. p23 2.3-7 设计一个算法,在O(nlgn)以内判断给定集合S中有没有两个数的和为给 阅读全文

posted @ 2013-09-16 16:21 小书包_Ray 阅读(192) 评论(0) 推荐(0) 编辑

uva 11729

摘要: 分类: 贪心题意: 每个人分派任务,分配和完工需要时间,如何安排分配顺序总完工时间最小输入: 任务数N,每个人分配需要的时间B,每个人执行需要的时间J输出: 总完成最快时间、解法:贪心核心:①两个任务交换顺序不会影响其它任务的最终完成时间②那么何种情况下交换两种任务可以减少总时间分两种情况情况一:交换之前前面的任务后结束J[1] >= J[2] + B[2] [B...1][J...........1] [B.2][J.2] B[1]+J[1]是总时间且 > B[2]+B[1]+J[2] 如果交换 交换后完成总时间是 B[2]+B[1]... 阅读全文

posted @ 2013-09-16 10:59 小书包_Ray 阅读(155) 评论(0) 推荐(0) 编辑

uva 11292

摘要: 题意:有n条恶龙,m个骑士,每个骑士能够斩掉直径为x的恶龙需要支付他x的费用,如何聘请骑士费用最小输入:整数n,m 每个龙的直径,每个骑士的能力(费用)输出:最小费用,无解则输出Loowater is doomed解法:贪心#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using na 阅读全文

posted @ 2013-09-16 10:25 小书包_Ray 阅读(118) 评论(0) 推荐(0) 编辑

poj 3253

摘要: 分类: 堆题意: 切割平板为指定的分块大小,每一次切割的费用都是当前木块的长度输入: 切割成的块数N,每块大小xi输出: 最小的切割费用自己练习写一写堆,也可用STL的优先队列 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 ... 阅读全文

posted @ 2013-09-16 09:19 小书包_Ray 阅读(164) 评论(0) 推荐(0) 编辑

导航