
----- 基本算法 -----
ITCharge
高效率编程,慢节奏生活。
展开
-
UVA725 Division【枚举】
题目大意:输入一个正整数N,要求从小到大的输出形如abcde / fghij = n的表达式。要求a~f为数字0~9,且不能重复(前边可有0)。思路:如果将a b c d e f g h i j全部遍历的话,复杂度是10!,没有必要,直接枚举f g h i j,然后算出a b c d e,去判断是否存在重复数字即可。原创 2014-12-15 09:04:01 · 2649 阅读 · 0 评论 -
POJ3659 Cell Phone Network【最小支配集】【贪心】
题目大意:John想让他的所有牛用上手机以便相互交流(也是醉了。。。),他需要建立几座信号塔在N块草地中。已知与信号塔相邻的草地能收到信号。给你N-1个草地(A,B)的相邻关系,问:最少需要建多少个信号塔能实现所有草地都有信号。思路:考察树最小支配集问题。最小支配集:值从所有顶点中取尽量少的点组成一个集合,使得剩下的所有点都与取出来的点有边相连。顶点个数最小的支配集被称为最小支配集。这里用贪心法来求。1.以1号点深度优先搜索整棵树,求出每个点在DFS中的编号和每个点的父亲节点编号。2.按DFS原创 2015-01-01 14:04:46 · 2405 阅读 · 0 评论 -
HDU4500 小Q系列故事——屌丝的逆袭【模拟】
题目大意:工作室的布局是N*M的矩形,每个单位上有一名员工。每个位置由一个价值。每一个位置的价值和其上、下、左、右四个邻居的魅力值有关。如果一个位置的邻居与这个位置的员工性别不同,则该位置的价值总分加上这个邻居的魅力值,性别相同的话就下去邻居的魅力值。最终得分就是这个位置的价值。(输入的时候,男生魅力值用负数表示,女生魅力值用正数表示)那么问题来了:问哪个位置的魅力值最大,计算并输出最佳位置的行列号和序列号即相应的价值。思路:就是直接的模拟,遍历每个位置,判断一下上下左右和自身的正负情况,原创 2015-03-30 11:41:41 · 1363 阅读 · 0 评论 -
POJ1753 Flip Game【DFS】
Flip GameTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 27221 Accepted: 11809DescriptionFlip game is played on a rectangular 4x4 field with two-sided原创 2014-01-11 22:07:43 · 5239 阅读 · 0 评论 -
POJ2287 HDU1052 Tian Ji -- The Horse Racing【贪心】
题目大意:田忌和大王赛马,两个人各有N匹马,每匹马都有一个速度,跑的快的胜,慢的就输。田忌每赢一把得200,平了不得钱,输了输200。每次大王先出马,田忌再出马。问:田忌最多能得多少钱。思路:贪心思想。现对田忌和大王的马进行排序。田忌的马速度从小到大排列,大王的马速度从大到小排列。为了尽可能的赢,田忌就要采取以下策略:1)尽可能用自己速度低的马去赢得大王速度快的马。2)剩下赢不了的马,尽可能用自己的马和大王的马打平手3)剩下的既不能赢得比赛,也不能平手的马就只能是输了用NumA[]数组和原创 2015-04-13 20:41:29 · 892 阅读 · 0 评论 -
HDU1051 Wooden Sticks【贪心】
题目大意:有N根木棍,每根木棍的长度和质量是已知的,机器要处理这N根木棍,处理时间和木棍的长度和权重有关。第一根木棍的处理时间为1min,之后处理的木棍如果长度大于等于前一根木棍的长度并且权重也大于等于前一根木棍的长度,就不需要处理时间;否则就需要1min的处理时间。问:最小的处理时间为多少。思路:贪心思想。先将木棍按长度从小到大排列,如果长度一致,则按权重从小到大排列。然后根据题目要求,如果后边的木棍长度和权重都大于前者,则不需要处理时间,否则加1min处理时间。原创 2015-04-18 14:02:23 · 975 阅读 · 0 评论 -
NEFU563 鸭子知多少?【递归】
题目大意:有个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又2只。这样经过了N个村子还剩下2只鸭子,问:他出发时所赶的鸭子共有多少只。思路:路过第i个村子剩的鸭子数 = 第i+1天刚开始赶的鸭子数 = (第i+1个村子卖完剩的鸭子数+2)*2。用dfs(i)表示第i天剩的鸭子数,那么dfs(i) = (dfs(i+1)+2)*2。从第1天开始卖,则答案就是第0天还未卖的时候剩的鸭子数,即dfs(0)。原创 2015-04-13 16:08:24 · 1423 阅读 · 0 评论 -
NEFU560 半数集【递归】
题目大意:给定一个自然数N,有N开始产生半数集set(N)。set(N)定义如下:1)N是set(N)中的元素2)在N的左边自然数,但该自然数不能超过最近添加的数的一半。3)按照这个规律,直到不能添加自然数为止。例如:N = 6时,只能添加不超过6/2=3的自然数为1、2、3,即为16、26、36。而26、36可以继续添加1,即126、136。则set(N) = {6、16、26、126、36、136}。思路:递归的添加,设能添加的数的个数为HalfSet(N),可遍历1~N/2,ans原创 2015-04-13 16:18:40 · 1218 阅读 · 0 评论 -
NEFU564 汉诺塔【递归】
题目大意:庙里有3个柱子,柱A、柱B、柱C。柱A有64个盘子,从上往下越来越大。庙里的老和尚想把这64个盘子全部移动到柱C上。移动的时候始终只能小盘子压住大盘子,大盘子不能在小盘子上边。每次只能移动一个。问:将柱A上面钱N个盘子从A搬到柱C的移动次数最少的搬动方法是什么思路:吧N个盘子从柱A移到柱C需要三个步骤:1)把住A上N-1个盘子借助柱C移到柱B2)把柱A上第N个盘子移动到柱C3)把柱B上N-1个盘子借助柱A移动到柱C原创 2015-04-13 15:21:38 · 1085 阅读 · 0 评论 -
NEFU559 分书问题【递归】
题目大意:有编号分别为1~N的N本书,准备分给N个人,每个人阅读兴趣用一个二维数组表示。1:喜欢这本书;0:不喜欢这本书。Like[i][j] = 1,i喜欢书j;Like[i][j] = 1,i不喜欢书j。问:如何分书才能使得所有人都满意,输出第i个人分得的书的编号,如果有多个答案输出序列数小的那一组。思路:序列要求从小到大,那么就从小到大递归美剧每个人喜欢的书,找到第一组答案就可以了。用vis[]数组来判断第i本书是否被选,ans[]数组来存储输出序列。从第一个人开始选书,到最后一个原创 2015-04-13 18:03:26 · 1280 阅读 · 0 评论 -
NEFU561 方块计算【递归】
题目大意:在一间M*N的长方形房间里,地上铺了白色、黑色两种颜色的正方形瓷砖,你站在其中一块黑色瓷砖上,只能向相邻的黑色瓷砖移动。问:总共能够达到多少快黑色的瓷砖。数据中,'.'表示黑色的瓷砖,'#'表示白色的瓷砖,'@'表示你站的这块瓷砖(该瓷砖是黑色的)。思路:只能向相邻的黑色瓷砖移动,那么对于位置(x,y),就只能向(x+1,y),(x,y+1),(x-1,y),(x,y+1)的黑色的瓷砖移动。每次移动的时候看看没走过的瓷砖是不是黑色的瓷砖,如果是就继续走,否则就返回。用ans存储走过原创 2015-04-13 18:30:14 · 1032 阅读 · 0 评论 -
HDU2709 Sumsets【递推】
题目大意:将一个整数N分解成2^i相加的形式,共有多少种分法。例如:7 = 1+1+1+1+1+1+1 = 1+1+1+1+1+2 = 1+1+1+2+2 = 1+1+1+4 = 1+2+2+2 = 1+2+4,共有6种分法。思路:设a[n]为整数n分解成2^i相加形式的分法个数。当n为奇数时,n-1为偶数,n = 1 + n-1,分解出一个1,再分解偶数n-1,也就是a[n-1]种分法。当n为偶数时,有两种分解方法。1):相加的2^i中含有1。因为n为偶数,所以至少有两个1,即n = 1原创 2015-04-08 10:19:13 · 1280 阅读 · 0 评论 -
HDU4152 ZZY’s Dilemma【枚举】
题目大意:ZZY有N个目标,每个目标都有一个分数值,只有达到给定的分数值才算完成目标。他有M个习惯。每个习惯对这N个目标有影响xi,xi >= 0,表示对目标有积极作用,xi < 0表示对目标有消极作用。现在问:如果ZZY想实现这N个目标,他能够有的习惯数目最大是多少,并输出能够有的习惯编号。思路:用0和1来表示选和不选习惯i,则有2^M种情况(最多为2^16 = 65536)。枚举得到结果。用Goal[]存储目标分数,F[i][j]来存储第 i 习惯对第 j 个目标的影响。G[]存储不同习原创 2015-05-18 11:50:33 · 1491 阅读 · 0 评论 -
HDU1251 统计难题【字典树】
题目大意:给你一张单词表,每个单词占一行,以空行结束。再给你几个单词前缀。那么问题来了:统计出单词表中以所给单词前缀为前缀的单词数目。思路:其实就是字典树的模板应用。根据所给单词表建立一个字典树,并记录所有前缀的个数。然后根据所给单词前缀去字典树中查找是否含有这个前缀。找到就输出该前缀的个数。原创 2015-02-14 22:13:50 · 927 阅读 · 0 评论 -
XMU1016 Magic Square【幻方构造】
题目大意:给你一个整数N,然后输出一个N阶幻方。解题思路:关于幻方,搜索肯定超时。但是我们可以直接构造一个幻方。就是根据奇数阶(2*M+1)幻方、单偶数阶(4*M+2)幻方、双偶数阶(4*M)幻方等不同的构造方法来构造。参考博客:http://blog.youkuaiyun.com/u012317281/article/details/380511851 奇数阶 (2*M+1) 幻方构造法 (1) 将 1 放在第一行最中间的一列上 (2) 从 2 开始直到 N*N 为止各数依次按下列规则存放:向右上方原创 2015-08-21 12:45:36 · 879 阅读 · 0 评论 -
POJ3270 Cow Sorting【置换群】【间接排序】
POJ3270_Cow Sorting【置换群】【间接排序】原创 2014-09-16 21:09:48 · 1345 阅读 · 0 评论 -
HDU2073 无限的路【水题】【递推】
题目大意:按照图上所示,给你两点坐标,求两点间的折线距离。思路:利用递推。这里,模拟了从(0,0)点到(x,y)点折线路线递推的过程。设i为横坐标,j为纵坐标。则路径为 先右下到纵坐标为0,再一步到达横坐标为0的,纵坐标为原横坐标+1的位置。所以直接模拟递推求。用ans[x][y]保存(0,0)点到(x,y)点的距离。最终结果为:fabs(ans[x1][y1]-ans[x2][y2])。原创 2015-01-15 08:54:04 · 1059 阅读 · 0 评论 -
POJ-2965-The Pilots Brothers' refrigerator-2013-12-05 11:18:12
The Pilots Brothers' refrigeratorTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 16671 Accepted: 6327 Special JudgeDescriptionThe game “The Pilo原创 2014-01-11 22:09:05 · 898 阅读 · 0 评论 -
POJ-3295-Tautology-2013-12-04 20:44:18
TautologyTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 8533 Accepted: 3275DescriptionWFF 'N PROOF is a logic game played with dice. Each die has six原创 2014-01-11 22:05:46 · 1034 阅读 · 0 评论 -
HDU1302_Snail【模拟题】【水题】
题目大意:蜗牛从井底向上爬高,井深H米,早上爬U米,晚上下滑D米,且它从第二天开始每天疲劳,每天比第一天少F%,问最后第几天能爬出井或者不能爬出井而失败。思路:简单模拟,按照题目要求做就可以。原创 2014-11-20 07:29:33 · 2158 阅读 · 0 评论 -
POJ-1068-Parencodings-2013-12-12 23:34:16
ParencodingsTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 18245 Accepted: 10981DescriptionLet S = s1 s2...s2n be a well-formed string of parentheses原创 2014-01-11 22:19:14 · 924 阅读 · 0 评论 -
NYOJ448_寻找最大数【贪心】
题目大意:……删去m位数,输出剩余的数字 使新数最大思路:贪心思想。设位数为len,删去m位数,输出新数,就是输出新数为len-m位根据贪心思想。从最高位开始,每次保证取出来的数字都是最优的。比如说7位数,删去3位数。应该从第一位到第len-2位上取最大值。这样首先保证最高位千位上的结果正确。再从刚才找到值的下一位开始到第len-1位上取最大值。保证百位上的结果正确。再从刚才找到值的下一位开始到第len位上取最大值,保证各位上结果正确。比如:9456973 4因为要删去4个数,所以输出新数为原创 2014-10-14 19:29:27 · 1054 阅读 · 0 评论 -
UVA-11729 - Commando War-2014年4月19日112200
GCommando WarInput: Standard InputOutput: Standard Output “Waiting for orders we held in the wood, word from the front never cameBy evening the sound of the gunfire was mi原创 2014-04-19 17:40:57 · 1049 阅读 · 0 评论 -
HDU1390_Binary Numbers【水题】【位运算】
题目大意:给你一个数N,输出N的二进制形式上为1的数位(从右至左)思路:每次(N&1)判断末尾是否为1,为1则存入数组ans[]中,不为1则不存,之后数位自增,N向右移一位,继续判断末尾……原创 2014-11-26 22:54:19 · 2010 阅读 · 0 评论 -
HDU-1107-武林-2014-01-23 20:00:59
武林Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2377 Accepted Submission(s): 637Problem Description在一个有12行12列的方形的武林世界里,少林、原创 2014-01-23 21:18:29 · 1170 阅读 · 0 评论 -
POJ-1573-Robot Motion-2013-12-15 00:46:22
Robot MotionTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 9547 Accepted: 4631DescriptionA robot has been programmed to follow the instructions i原创 2014-01-11 22:20:29 · 796 阅读 · 0 评论 -
POJ-2109-Power of Cryptography-2013-12-08 22:28:27
Power of CryptographyTime Limit: 1000MS Memory Limit: 30000KTotal Submissions: 17166 Accepted: 8673DescriptionCurrent work in cryptography involves (among other原创 2014-01-11 22:14:34 · 843 阅读 · 0 评论 -
HDU1196_Lowest Bit【位运算】【水题】
题目大意:给你一个数A,求它的二进制表示中最右边的1表示的数比如:26的二进制表示为11010,最右边的1表示的数为00010。思路:位运算,其实就是求A & (A ^ (A-1) ),即A & (A-1)原创 2014-10-29 21:04:57 · 1214 阅读 · 0 评论 -
UVA-11292 - Dragon of Loowater-2014年4月19日100424
Problem C: The Dragon of LoowaterOnce upon a time, in the Kingdom of Loowater, a minor nuisance turned into a major problem.The shores of Rellau Creek in central Loowater had always been a prime b原创 2014-04-19 17:33:46 · 1037 阅读 · 0 评论 -
HDU2054_A == B ?【模拟题】【大数】【水题】
题目大意:给你两个数A和B,判断A和B是否相等,若相等输出"YES",否则输出"NO"。思路:题目没有给出A、B的数据规模,这里就是个大数题。把A、B用字符数组存起来,标记A、B的正负号,若为正,则标记为1,若为负,则标记为0,将字符数组内的'-'赋值为'0',然后将整数前的零和小数部分后边的零清除,然后用数组将整数部分和小数部分分别存起来。之后分别比较A、B的整数部分和小数部分是否相等。注意A、B可能为整数或是小数,尤其注意A、B可能会在整数部分前边有N个零或者小数部分后边有N个零,比如0原创 2014-11-10 14:06:14 · 1349 阅读 · 0 评论 -
POJ-2586-Y2K Accounting Bug-2013-12-12 20:13:42
Y2K Accounting BugTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 9243 Accepted: 4593DescriptionAccounting for Computer Machinists (ACM) has sufferred原创 2014-01-11 22:17:36 · 1261 阅读 · 0 评论 -
POJ-1083-Moving Tables-2013-11-26 16:43:58
Moving TablesTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 24363 Accepted: 8085DescriptionThe famous ACM (Advanced Computer Maker) Company has rente原创 2013-12-15 12:12:29 · 893 阅读 · 0 评论 -
HDU1009_FatMouse' Trade【贪心】【水题】
题目大意:有N个房间,每个房间存有FatMouse喜欢吃的食物,但是每个房间的食物都需要用相应的猫粮去换。FatMouse 有M磅的猫粮,为它最多能换到多少的食物。思路:贪心方法。用结构体存每间房间的食物量和所需猫粮量。按食物的单价(即食物/猫粮的大小)进行排列,每次选单价最小的购买,知道M磅猫粮用完原创 2014-10-19 19:40:18 · 1353 阅读 · 0 评论 -
POJ-1328-Radar Installation-2013-12-07 01:49:28
Radar InstallationTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 45922 Accepted: 10252DescriptionAssume the coasting is an infinite straight line. La原创 2014-01-11 22:13:16 · 5335 阅读 · 0 评论 -
hihoCoder1227 The Cats' Feeding Spots【暴力】
题目大意:给你 M 个点的坐标(二维平面),从这 M 个点中找出 N 个点,使得以这 N 个点中的某一点为圆心,且半径为整数的圆包含这 N 个点,同时保证圆周上没有点。求这个最小的半径,如果没有就输出"-1"。解题思路:点数最多有 100 个,那么要预先求出 100 个点之间的相互距离,保存在数组 D[][] 中。然后遍历每个点,对每个点到其他点之间的距离进行排序,判断第 N 个点是否符合要求,并找出满足要求最小的答案 Ans。原创 2015-10-12 19:18:15 · 776 阅读 · 2 评论