刷题系列
Demon的黑与白
Stay hungry,Stay foolish
展开
-
POJ 刷题系列:1837. Balance
POJ 刷题系列:1837. Balance传送门:1837. Balance题意: 一个天枰上有C个钩子,把M个砝码挂在这些C个钩子上,问多少种平衡的挂法。思路: 首先考虑单个砝码在天枰的位置,可以得到C个状态,对应的平衡度为:G[0] * C[i],记录这些初始平衡度的个数。这样当放入第二个砝码时,可以遍历这些平衡度,从而得到一个新的平衡度。此时,不同位置,不同质量的砝...原创 2018-05-23 00:07:17 · 814 阅读 · 0 评论 -
POJ 刷题系列:2485. Highways
POJ 刷题系列:2485. Highways传送门:2485. Highways题意: 给出一张grid图,求MST中的最长边。思路: 还是用prim算法,很简单,思路可以参考http://blog.csdn.net/u014688145/article/details/78926763代码如下:import java.io.BufferedReader;import java.io.F原创 2017-12-29 22:22:15 · 508 阅读 · 0 评论 -
POJ 刷题系列:2299. Ultra-QuickSort
POJ 刷题系列:2299. Ultra-QuickSort传送门:2299. Ultra-QuickSort题意: 给出长度为n的序列,每次只能交换相邻的两个元素,问至少要交换几次才使得该序列为递增序列。思路: 实际上是让你求解逆序对的个数,求逆序对的个数可以采用归并排序。曾写过一篇关于算法细节系列(27):时间复杂度为何还能优化?今天又重新复习了一遍,有了一些新的理解。原创 2018-01-14 21:09:04 · 504 阅读 · 0 评论 -
POJ 刷题系列:2388. Who's in the Middle
POJ 刷题系列:2388. Who’s in the Middle传送门:2388. Who’s in the Middle题意: 给定n个数,从小到大排列,求出中间大的数。思路: 直接排序,调用接口就非常方便了。代码如下:import java.io.BufferedReader;import java.io.File;import java.io.Fi原创 2018-01-14 18:52:09 · 334 阅读 · 0 评论 -
POJ 刷题系列:1936. All in All
POJ 刷题系列:1936. All in All传送门:1936. All in All题意: 给定两个字符串s和t,你需要判断s是否是t的“子列”。也就是说,如果你去掉t中的某些字符,剩下字符将连接而成为s。思路: 动规or递归+记忆化,定义状态dp[i][j]表示T[0…i - 1] 及S[0…j - 1]能否构成子列,状态转移如下:if S[j] == T[原创 2018-01-14 18:40:27 · 297 阅读 · 0 评论 -
POJ 刷题系列:1094. Sorting It All Out
POJ 刷题系列:1094. Sorting It All Out传送门:1094. Sorting It All Out题意: 给出n个字母,m组大小关系,判断是否能够确定n个字母的唯一顺序,其中不能存在环。思路: 一开始使用了DFS,每当加入一条关系时,更新邻接表,并判断是否存在环以及能否得到唯一的拓扑序,结果一直超时,不知道歪。实际上如果存在唯一的顺序,那么当且仅当只有一个点入度为0,原创 2018-01-04 22:33:11 · 656 阅读 · 0 评论 -
POJ 刷题系列:3080. Blue Jeans
POJ 刷题系列:3080. Blue Jeans传送门:3080. Blue Jeans题意: 一组字符串,求字符串组的公共最长子串,如果有多个最长,取alphabetical order最小。思路: KMP + 暴力枚举子串,不过Java关于模式匹配,已有封装好的代码,如下:import java.io.BufferedReader;import java.i原创 2018-01-14 17:58:40 · 329 阅读 · 0 评论 -
POJ 刷题系列:1789. Truck History
POJ 刷题系列:1789. Truck History传送门:1789. Truck History题意: 用一个7位的string代表一个编号,两个编号之间的distance代表这两个编号之间不同字母的个数。一个编号只能由另一个编号“衍生”出来,代价是这两个编号之间相应的distance,现在要找出一个“衍生”方案,使得总代价最小,也就是distance之和最小。 例如有如下4个编原创 2017-12-28 21:45:03 · 342 阅读 · 0 评论 -
POJ 刷题系列:3026. Borg Maze
POJ 刷题系列:3026. Borg Maze传送门:3026. Borg Maze题意: 给出一张迷宫图,墙用”#”表示,起始点为”S”, 外星人为”A”,求从S出发,连通”A”的最短路径。注意:”A”和”A”之间相连也算连通。思路: BFS + PRIME, 算比较综合了,BFS为了求每个”A”之间的最短距离,接着PRIME求MST即可。需要注意,地图中并非所有顶点有有效距离,所以把除原创 2018-01-03 19:26:08 · 558 阅读 · 0 评论 -
POJ 刷题系列:1125. Stockbroker Grapevine
POJ 刷题系列:1125. Stockbroker Grapevine传送门:1125. Stockbroker Grapevine题意: 给出一幅有向图,从某个结点s出发,能够抵到其他任何顶点,且传播到最后一个顶点所需要的时间最短,求s。思路: 数据很水,用floyd求出任意两点之间的最短距离即可。接着遍历顶点s,求出抵达最后一个顶点的时间t,每个s对应一个t,求出t最小的s。代码如下:原创 2017-12-27 18:42:13 · 472 阅读 · 0 评论 -
POJ 刷题系列:3041. Asteroids
POJ 刷题系列:3041. Asteroids传送门:3041. Asteroids题意: 在NxN的网格中有K颗小行星。小行星i的位置是Ri,Ci。现在有一个强力武器能够有一发光束将一整行或一整列的小行星轰为灰烬。想要利用这个武器摧毁所有小行星最少需要几发光束。思路: 思路参考《挑战》P229,简单说说,小行星的行和列可以代表二分图中的左侧结点和右侧结点。所以当确定一条原创 2018-01-05 21:20:55 · 303 阅读 · 0 评论 -
POJ 刷题系列:3349. Snowflake Snow Snowflakes
POJ 刷题系列:3349. Snowflake Snow Snowflakes传送门:3349. Snowflake Snow Snowflakes题意: 每个雪花都有六个分支,用六个整数代表,这六个整数是从任意一个分支开始,朝顺时针或逆时针方向遍历得到的。输入多个雪花,判断是否有形状一致的雪花存在。思路: 和HASH检测冲突的原理很像,先对6个数进行HASH而不管顺序,原创 2018-01-15 19:34:01 · 444 阅读 · 0 评论 -
POJ 刷题系列:3274. Gold Balanced Lineup
POJ 刷题系列:3274. Gold Balanced Lineup传送门:3274. Gold Balanced Lineup题意: 官方题解: Consider the partial sum sequence of each of the k features built by taking the sum of all the values up t原创 2018-02-04 22:04:21 · 404 阅读 · 0 评论 -
POJ 刷题系列:2503. Babelfish
POJ 刷题系列:2503. Babelfish传送门:2503. Babelfish题意: 翻译:给出一英文单词和与之对应的外文,组成字典集。后续当给出一个外文单词时,求出对应的英文单词。思路: 无脑 HashMap,外文为key,英文单词为value,存入hashMap。代码如下:import java.io.IOException;import java原创 2018-02-04 10:27:00 · 370 阅读 · 0 评论 -
POJ 刷题系列:2002. Squares
POJ 刷题系列:2002. Squares传送门:2002. Squares题意: 在二维坐标系下,给出若干点,求这些点最多能组成多少个正方形。思路: 可以观察输入n只有1000,所以我们可以把这些点全部存入内存中(hash),因为已知正方形的两个点,可以求出另两个点的坐标。这样暴力枚举每个点,判断是否存在构成正方形的两个点。代码如下:import java.原创 2018-01-19 20:15:42 · 384 阅读 · 0 评论 -
POJ 刷题系列:1035. Spell checker
POJ 刷题系列:1035. Spell checker传送门:1035. Spell checker题意: 一组字符串,组成字典。查询某个字符串是否在该字典中。如果不存在,输出字典集中与查询字符串编辑距离为1的字符串。思路: 因为每个字符串的最大长度为15,查询O(1),采用暴力。代码如下:import java.io.BufferedReader;import原创 2018-01-10 19:18:31 · 431 阅读 · 0 评论 -
POJ 刷题系列:3436. ACM Computer Factory
POJ 刷题系列:3436. ACM Computer Factory传送门:3436. ACM Computer Factory题意: 一个工厂,有n台机器,每台机器均有输入条件和输出结果,比如3个零件,机器1,输入0 0 1,表示输入机器1之前必须拥有零件3,输出 1 1 1,则表示通过该机器,能够制造出零件2。每台机器每小时也有它的最大产量w,问n台机器最多能制造多少台。原创 2018-01-09 21:20:14 · 359 阅读 · 0 评论 -
POJ 刷题系列:1840. Eqs
POJ 刷题系列:1840. Eqs传送门:1840. Eqs题意: 等式 a1x31+a2x32+a3x33+a4x34+a5x35=0a_1x_1^3+ a_2x_2^3+ a_3x_3^3+ a_4x_4^3+ a_5x_5^3=0 ,其中ai∈[−50,50],i=1,2,3,4,5a_i \in [-50, 50], i = 1, 2, 3, 4, 5,xi∈[−50,5原创 2018-01-17 19:31:05 · 310 阅读 · 0 评论 -
POJ 刷题系列:1459. Power Network
POJ 刷题系列:1459. Power Network传送门:1459. Power Network题意: 给你n个点,其中有np个是能提供电力的点,nc个是能消费电力的点,剩下的点(n-np-nc)是中转战即不提供电力也不消费电力,点与点之间是有线路存在的,有m条线路,每条线路有最多运载限定。 前4个数据就是有n个点,np个供电点,nc个消费点,m条线路,接来题目先给出原创 2018-01-08 21:28:30 · 394 阅读 · 0 评论 -
POJ 刷题系列:3020. Antenna Placement
POJ 刷题系列:3020. Antenna Placement传送门:3020. Antenna Placement题意: 一个矩形中,有N个城市’*’,现在这n个城市都要覆盖无线,若放置一个基站,那么它至多可以覆盖相邻的两个城市。问至少放置多少个基站才能使得所有的城市都覆盖无线?思路: 看了discuss,咋有那么多人纠结无向图和有向图的区别。而且我也并没有理解所谓的答原创 2018-01-07 22:50:50 · 310 阅读 · 0 评论 -
POJ 刷题系列:2240. Arbitrage
POJ 刷题系列:2240. Arbitrage传送门:2240. Arbitrage题意: 给出各种货币的相互转换汇率,判断是否存在无限的生钱方式。思路: 在图模型中找负环即可。此处负环符合特征如下:在负环上的顶点会不断更新最大值,所以在N轮没有停止更新就说明存在了负环。代码如下:import java.io.BufferedReader;import java.io.File;imp原创 2017-12-27 19:12:47 · 604 阅读 · 0 评论 -
POJ 刷题系列:2253. Frogger
POJ 刷题系列:2253. Frogger传送门:2253. Frogger题意: 湖里有各个石头的坐标,Freddy能够借助石头跳跃到Fiona的每条路径中的最大跳跃距离的最小值。思路: 以为是二分+dfs,会超时。与其这样还不如直接dfs每条路径求出max的同时,抵达终点时求min,结果还是超时。想了下,难道可以用DP做状态记录,所以借用floyd算法的思路,经过N轮,对于每个点(石头原创 2017-12-27 09:07:34 · 305 阅读 · 0 评论 -
POJ 刷题系列:2739. Sum of Consecutive Prime Numbers
POJ 刷题系列:2739. Sum of Consecutive Prime Numbers传送门:POJ 2739. Sum of Consecutive Prime Numbers题意: 给定一个数num,求连续的素数和等于num的个数。思路: 题目给定了连续素数,所以只需要从小于num的素数开始不断累加,知道sum >= num,其中若sum == num则计数。素数打表采用艾氏筛选原创 2017-12-07 22:13:52 · 567 阅读 · 0 评论 -
POJ 刷题系列:2632. Crashing Robots
POJ 刷题系列:2632. Crashing Robots传送门:2632. Crashing Robots题意: 在一张地图(A x B)中给出N个robot的位置和初始移动方向,以及M条指令,任意两个robot不能同时移动,问是否存在非法的crash状态(撞墙,撞其他robot)。 思路: 思路比较简单的模拟题,新建一个grid地图信息,每个位置初始化为0,有机器人的位置则初始化原创 2017-12-21 10:32:47 · 304 阅读 · 0 评论 -
POJ 刷题系列:1753. Flip Game
POJ 刷题系列:1753. Flip Game传送门:POJ 1753. Filp Game题意: 一个4*4的矩阵,每一格要么是白色,要么是黑色。现在你可以选择任意一个格变成相反的颜色,则这个格的上,下,左,右四个格也会跟着变成相反的色(如果存在的话)。问要把矩阵的所有格子变成同一个颜色,你最少需执行几次上面的操作。思路: 讲真,难度一下上来了,不过既然提示枚举了采用BFS或者DFS暴搜原创 2017-12-11 22:06:07 · 781 阅读 · 0 评论 -
POJ 刷题系列:3094. Quicksum
POJ 刷题系列:3094. Quicksum传送门:POJ 3094. Quicksum题意: 给定一个字符串S,且A = 1, B = 2…. 空格 = 0, 求Quick Sum, 公式详见链接。思路: 无脑题。。。代码如下:import java.util.Scanner;public class Main{ public static void main(String[] a原创 2017-12-11 21:10:54 · 563 阅读 · 0 评论 -
POJ 刷题系列:2255. Tree Recovery
POJ 刷题系列:2255. Tree Recovery传送门:POJ 2255. Tree Recovery题意: 给出先序和中序,求后序。思路: 依旧很水,给定先序易知根结点,从中序中找到根结点就能确定左孩子们和右孩子们,递归建树。最后后序遍历一遍即可。代码如下:import java.io.BufferedReader;import java.io.File;import java原创 2017-12-11 20:55:47 · 360 阅读 · 0 评论 -
POJ 刷题系列:3006. Dirichlet's Theorem on Arithmetic Progressions
POJ 刷题系列:3006. Dirichlet’s Theorem on Arithmetic Progressions传送门:3006. Dirichlet’s Theorem on Arithmetic Progressions题意: 给出一个递增序列,求该递增序列中第n个素数。思路: 这些水题怎么都有关素数的。。。实际上给定初项a和公差d,以及可能的素数,能判断该素数是否在这个递增数原创 2017-12-10 22:37:32 · 353 阅读 · 0 评论 -
POJ 刷题系列:1068. Parencodings
POJ 刷题系列:1068. Parencodings传送门:1068. Parencodings题意: 给出一组P-Sequence,每个数代表当前右括号之前的所有左括号数,求W-Sequence,表示当前右括号与它对应的左括号之间的左括号数。还是看例子吧: 思路: 抓住两点,对应于P-Sequence,对于每个右括号i,插入的左括号数为p[i] - p[i - 1]。对于W-Seq原创 2017-12-19 20:53:32 · 393 阅读 · 0 评论 -
POJ 刷题系列:3295. Tautology
POJ 刷题系列:3295. Tautology传送门:3295. Tautology题意: 给出二元变量 p,q,r,s,t以及运算符K,A,N,E,C,求所给运算符和变量的集合是否符合永真,若永真输出tautology,否则输出not。思路: 首先构造出p,q,r,s,t可能的组合,因为只有5个变量,所以总共有2^5种状态,对这些状态逐一测试,看是否存在表达式为false的情况。采用df原创 2017-12-19 19:12:13 · 519 阅读 · 0 评论 -
POJ 刷题系列:1503 Integer Inquiry
POJ 刷题系列:1503 Integer Inquiry传送门:POJ 1503 Integer Inquiry题意: 实现VeryLongIntegers两数相加算法。思路: 因为字符长度可达100位,自然不能用long,int这些基本类型实现。所以采用字符串逐个相加进位来实现,熟悉进位法即可。代码如下:import java.io.BufferedReader;import java原创 2017-12-10 21:43:12 · 445 阅读 · 0 评论 -
POJ 刷题系列:2262. Goldbach's Conjecture
POJ 刷题系列:2262. Goldbach’s Conjecture传送门:POJ 2262. Goldbach’s Conjecture题意: 给定一个大于4的数num,求两个奇素数使得num = p1 + p2.思路: 打一个素数表,枚举小于num的素数p1,接着二分查找num-p2是否在素数表中,有则输出答案。代码如下:import java.io.BufferedReader;原创 2017-12-10 21:20:20 · 507 阅读 · 0 评论 -
POJ 刷题系列:1573. Robot Motion
POJ 刷题系列:1573. Robot Motion传送门:1573. Robot Motion题意: 一张地图包含N,S,W,E的指令,从指定起点[1, p]出发,是否有一条路径能够走到地图边缘,有则输出路径数,无说明走入了死循环,输出走入循环前和循环的步数。 思路: 用一个时间戳来记录走到当前点的时间点,这样如果走到边缘可直接输出,否则判断该点是否在之前被访问过,拿到该点最先的原创 2017-12-21 12:11:17 · 569 阅读 · 0 评论 -
POJ 刷题系列:2996. Help Me with the Game
POJ 刷题系列:2996. Help Me with the Game传送门:2996. Help Me with the Game题意: 给出棋盘情况, 输出白棋和黑棋在棋盘上的坐标,白棋为大写字母,黑棋为小写字母,且坐标原点从左下角开始,具体对应关系看原题。思路: 根据给出的输出顺序,对于白棋先从棋盘的左下角往右上角扫描,对于黑棋从棋盘的左上角往右下角扫描。扫描顺序确定后,用map记录原创 2017-12-21 16:10:50 · 494 阅读 · 0 评论 -
POJ 刷题系列:2159. Ancient Cipher
POJ 刷题系列:2159. Ancient Cipher传送门:POJ 2159. Ancient Cipher题意: 给定两个长度相等的字符串a, b,问a是否由b映射过来。思路: 注意映射规则:比如字符”A”可以映射成任意字符,只要每个字符的映射规则保持不变即可。所以我们只需要对每个字符串的频次进行统计并排序,看频次是否相等。代码如下:import java.io.BufferedRe原创 2017-12-07 19:49:17 · 658 阅读 · 1 评论 -
POJ 刷题系列:2586. Y2K Accounting Bug
POJ 刷题系列:2586. Y2K Accounting Bug传送门:2586. Y2K Accounting Bug题意: 有一个公司由于某个病毒使公司赢亏数据丢失,但该公司每月的 赢亏是一个定数,要么一个月赢利s,要么一月亏d。现在ACM只知道该公司每五个月有一个赢亏报表,而且每次报表赢利情况都为亏。在一年中这样的报表总共有8次(1到5,2到6,…,8到12),现在要编一个程序确定当赢s原创 2017-12-15 23:27:41 · 542 阅读 · 0 评论 -
POJ 刷题系列:2109. Power of Cryptography
POJ 刷题系列:2109. Power of Cryptography传送门:2109. Power of Cryptography题意: 给定n,p,求k,使得kn=pk^n = p思路: 这不应该放在贪心里啊!!!刷新了我对double的认识,实际上double的表示范围是巨大的。有1030810^{308}这么大。浮点型: Float 32位单精度浮点数 10^-38~10^3原创 2017-12-15 20:13:00 · 663 阅读 · 0 评论 -
POJ 刷题系列:3299. Humidex
POJ 刷题系列:3299. Humidex传送门:POJ 3299. Humidex题意: 给定T, D, H中的任意两个数,求另外一个。思路: 公式由题目给定,如下: humidex = temperature + h h = (0.5555)× (e - 10.0) e = 6.11 × exp [5417.7530 × ((1/273.16) - (1/(dewpoi原创 2017-12-06 20:57:12 · 1445 阅读 · 0 评论 -
POJ 刷题系列:1062. 昂贵的聘礼
POJ 刷题系列:1062. 昂贵的聘礼传送门:1062. 昂贵的聘礼题意: 年轻的探险家来到了一个印第安部落里。在那里他和酋长的女儿相爱了,于是便向酋长去求亲。酋长要他用10000个金币作为聘礼才答应把女儿嫁给他。探险家拿不出这么多金币,便请求酋长降低要求。酋长说:”嗯,如果你能够替我弄到大祭司的皮袄,我可以只要8000金币。如果你能够弄来他的水晶球,那么只要5000金币就行了。”探险家就跑到原创 2017-12-23 12:45:22 · 521 阅读 · 0 评论 -
POJ 刷题系列:1860. Currency Exchange
POJ 刷题系列:1860. Currency Exchange传送门:1860. Currency Exchange题意: N种货币,任意货币之间可以相互转换,转换需要手续费commission,假设货币A当前金额为money,转换公式如下:(money - commission) * rate,现给出任意货币之间的转换手续和转换率,问从S点出发,是否存在一条路径使得回到S时,能够增值。思路原创 2017-12-22 21:17:20 · 2599 阅读 · 0 评论