ACMer's collection
文章平均质量分 54
GMFTBY
for all
展开
-
POJ 1753 - 位运算(异或)+BFS / DFS+枚举
1.Question:题目大意:有一个4*4的棋盘,棋盘上有黑白子,我们对棋盘进行如下操作:操作的定义:我们每次可以反转一个棋子,即黑变白,白变黑,之后上下左右四个方向的棋子都会跟着进行翻转操作题目中让我们求可以使得整个棋盘变成纯色的最少的操作次数2.Solution:本题的解法思路有很多,之后的枚举+DFS的思路我会更新补上,这里我们着重讲解位运算+BFS的思路求原创 2016-10-24 09:22:41 · 921 阅读 · 0 评论 -
POJ 2586 - 贪心 or DP
1.Question:有一个公司,12个月份,所有的连续的5个月都是亏损的,请求出在此情况下的一年最大的盈利数目,如果没有输出Defict输入:n,d分别代表每个月的固定的收入和固定的亏损2.Solution:相比较而言,DP的思路更快:DP 0ms 贪心16ms本题我用了两种思路去做:1.贪心:网上的大神的讲解:我们从1月开始贪心,每次将亏损的月份放在最后面才原创 2016-10-28 09:21:16 · 384 阅读 · 0 评论 -
POJ 3414 - Easy BFS - 六入口倒水问题
1.Question:题目描述:有两个杯子,a,b,我们现在给定一个数据c现在有这么三种操作:FILL(i) fill the pot i (1 ≤ i ≤ 2) from the tap;DROP(i) empty the pot i to the drain;POUR(i,j) pour from pot i to pot j; after原创 2016-11-09 12:07:19 · 390 阅读 · 0 评论 -
HDU1556 - 线段树基础
Question:给出一个序列,我们每次都可以给一段子序列进行一次操作序列的数据量是n(nSolution:首先,为了更好的理解我们的线段树的优化措施我们先来考虑一下我们的朴素的做法对于这道题,我们的做法无非就是开辟一个一维数组,每次对那个区间进行操作,我们就对区间范围呢你的所有的数据都统一进行累加操作最后,我们将以为数组的值全部输出就好了该算法的时间复杂度原创 2016-10-07 15:09:35 · 2100 阅读 · 0 评论 -
HDU1754 - 线段树 Water~
Question:本题是标准的线段树求区间最大值的版题题目描述如下:1.输入直到文件末尾截止2.n,m其中n代表元素的的个数,m代表m次操作3.一行输入n个数字表示所有的数组元素4.接下来m行输入,Q操作代表询问,U操作代表替换5.针对每次的Q操作输出区间最大值Solution:线段树求解区间最大值给树上节点附上权值max标记该节点覆盖的区间内的最大值原创 2016-10-07 17:51:19 · 325 阅读 · 0 评论 -
POJ 3087 - STL(map)+滚动数组
1.Question:目的:通过本题熟悉C++,STL标准模板库中的map强大容器的基本操作题意:Shuffle游戏输入:第一次输入的t代表数据的测试用例个数之后的c代表我们玩的牌的每组牌的牌数(0之后两行代表我们的两座拍的顺序,顺序输入时从底向上的(从左到右)最后一行输入代表我们要活的的最终的状态,现在问我们进过多少次操作可以获得我们的最终状态,如果我们可以获得最原创 2016-11-10 13:24:01 · 376 阅读 · 0 评论 -
POJ 2503 - 字符串哈希
1.Question:简单的字符串哈希的题目引用拉链法处理冲突2.Code:#include"iostream"#include"cstring"#include"cstdlib"#include"cstdio"#define N 100003using namespace std;typedef struct node{ char english[15];原创 2016-10-30 09:45:20 · 320 阅读 · 0 评论 -
POJ 2531 - DFS - 经典
1.Question:题意:有一个无向图,现在,我们需要将无向图进行划分,是的,每两个点之间都有连边,并且两边集合的点之间边有权值,集合内的点之间没有权值,现在求最大的情况是多少2.Solution:真的是一道非常新颖的DFS的思路,我们需要做的就是穷尽所有的可能情况1.我们首先假设,所有的点都在0集合2.我们穷举的情况是,所有的点在0,1之间的分布3.在DFS中,我们原创 2016-11-11 09:28:29 · 407 阅读 · 0 评论 -
1102 面积最大的矩形(简单DP)
1.Question:有一个正整数的数组,化为直方图,求此直方图包含的最大矩形面积。例如 2,1,5,6,2,3,对应的直方图如下:面积最大的矩形为5,6组成的宽度为2的矩形,面积为102.Solution:DP思想,和小学期做的编程珠玑那道题基本上是一个套路定义状态:left[i]:i矩形的左边界right[i]:i举行原创 2016-10-20 21:05:49 · 535 阅读 · 0 评论 -
POJ 2109 - double
1.Question:本题的正解是高精度+二分法但是题目的bug导致我们直接一行用double也可作二分+高精度我之后会补上这里的blog相当于是插了个flag吧2.Code:#include"iostream"#include"cstring"#include"cstdio"#include"cmath"using namespace std;原创 2016-10-27 23:12:21 · 252 阅读 · 0 评论 -
POJ 3083 - 变向DFS + BFS
1.Question:本题是一道非常好的搜索题,号不是好在本题混合了深搜和广搜,而是好在了本题的新的思路首先,题意:有一个迷宫,我们现在要求出在各种限制下的从S走到E的步数首先题目限制了一定有解存在1.我们现在定义初始方向,题目中明确说明了(我没有看到,半天没有理解题意),我们定义S的状态只有这么几种情况S不会出现在地图的中间,S不会出现在地图的四个角落,S只会在地原创 2016-11-08 13:46:23 · 437 阅读 · 0 评论 -
HDU 1711 KMP Water~
1.Question:没什么可说的,数字版本的KMP2.Code:#include"iostream"#include"cstdio"#include"cstring"#include"cstdlib"#define N 10005using namespace std;int data[N*100];int pattern[N];int nextp[N];int原创 2016-10-03 18:06:54 · 245 阅读 · 0 评论 -
NYOJ - 138 节约内存 哈希
1.Question:在某一国度里流行着一种游戏。游戏规则为:现有一堆球中,每个球上都有一个整数编号i(0<=i<=100000000),编号可重复,还有一个空箱子,现在有两种动作:一种是"ADD",表示向空箱子里放m(0<m<=100)个球,另一种是"QUERY”,表示说出M(0<M<=100)个随机整数ki(0<=ki<=100000100),分别判断编号为ki 的球是否在这个空箱子中原创 2016-11-04 12:46:29 · 491 阅读 · 0 评论 -
POJ 1840 - Hash
1.Question:题意:本题中有一个五元三次方程,现在让我们求解出系数都在-50-50,未知元的范围是-50-50的所有的解的个数,不计含0的解PS:首先,我们首先要知道,为了简化我们的操作,题目已经限定了系数和解得的取值范围,并且解是 整数 2.Solution:首先,对于我们的朴素的算法的话,我们需要对所有的情况都进行枚举,中国需要我们枚举50^5,很显然,这种算法的思原创 2016-11-04 17:07:33 · 490 阅读 · 0 评论 -
快速幂取模算法详解
1.大数模幂运算的缺陷:快速幂取模算法的引入是从大数的小数取模的朴素算法的局限性所提出的,在朴素的方法中我们计算一个数比如5^1003%31是非常消耗我们的计算资源的,在整个计算过程中最麻烦的就是我们的5^1003这个过程缺点1:在我们在之后计算指数的过程中,计算的数字不都拿得增大,非常的占用我们的计算资源(主要是时间,还有空间)缺点2:我们计算的中间过程数字大的恐怖,我们现有的计算机原创 2016-11-05 10:40:41 · 44318 阅读 · 14 评论 -
POJ 2965 - 状态压缩 + BFS
1.Question:和上次的1753是一个思路题意:有一个4*4的表格,+代表关,-代表开,请输出让整个图都是开的状态所需要的最小操作次数定义操作:我们每次可以翻转一个按钮,同时同一行和同一列的元素都会执行相同的反转操作和1753一样,我们同样用位运算压缩状态2.Solution:状态压缩+BFS总共只有2^16个状态需要枚举,所以说本题还是可以做到很原创 2016-10-25 08:58:18 · 301 阅读 · 0 评论 -
POJ 3126 - 筛素数+BFS
1.Question:输入:1.n代表测试用例的个数2.之后的n行,每行有两个数字,都是四位素数,现在让我输出最少的操作次数是的从第一个素数变换成第二个素数操作定义:我们每次允许改变四位数的的一个位的数字,不能不改变,并且改变数字后的新的四位数也必须是素数,这里的前卫上的数字不允许改变成02.Solution:标准的BFS枚举思路,但是这里我们对于素数的判定,可原创 2016-11-07 08:38:49 · 439 阅读 · 0 评论 -
POJ 1328 && NYOJ 891 - 贪心 区间选点问题
1.Question:题意:题目中抽象了一个俯视图,以x轴为海岸线,y的负半轴一下是陆地,y的正半轴是海洋,在海洋上有很多岛屿我们有一中雷达,雷达的侦测半径是d,现在要我们输出可以将所有的岛屿全部都侦测到的最少的雷达的个数我们定义输入:n,d分别代表岛屿的个数和我们的雷达的半径之后的n行两个数据代表了岛屿的坐标(小心坐标的值可以使负数,也可以d大)本题有多组输入,当遇到原创 2016-10-26 22:25:40 · 437 阅读 · 0 评论 -
字典树 Trie
1.什么是字典树字典树,又称单词查找树或者键树,或者前缀树,是哈希树的一种变种,典型的应用就是保存大量的字符串的信息,统计和排序大规模字符串,因为采用了前缀的概念,压缩存储了部分的字符串,所以说,查询和查找效率都非常的高,接近于哈希主要思想就是,利用了空间换时间的思路,将多个字符串的最大公共前缀压缩存储示例图:2.字典树的ADT描述如下:1.根节点不含有键值2.原创 2016-10-03 12:52:06 · 875 阅读 · 0 评论 -
HDU-1686 KMP
1.Question:t个测试用例先输入模板串后输入母串求母串中有多少个子串2.Solution:标准的KMP算法模板我们只需要进行小一点的改动就可以了首先,我们现在来复习一下next数组的作用next数组作为一个跳转表,在我们适配的时候,next数组直接可以将模式串的位置重新定位但是在本题中有一点小小的改动在于eg:azaazazazazaza原创 2016-10-03 17:55:46 · 395 阅读 · 0 评论 -
POJ 2503 - 字典树再解
1.Question:题意:有不超过10w个字典序列,每个字典序列中都是两个字符串,第一个字符串是英文,第二个字符串是对应的一门不知道什么语言现在要求我们尽可能快速的建立映射,是的我们根据输入的外语可以快速的查找到对应的英语每个单词的长度不超过10,全部都是小写(简化了问题)输入样例和解释:dog ogdaycat atcaypig igpayfroot原创 2016-10-31 12:07:39 · 472 阅读 · 0 评论 -
POJ 2240 - SPFA - 正权环(最大路)
1.Question:输入n代表有n个国家之后的n行代表n个国家的名称输入m代表有向边的个数之后的代表我们国家货币之间的汇率现在求,是否存在一条回路是的我们的交换货币之后原本的货币量增多2.Solution:本题是标准的判断回路的问题,我们需要将最短路的标准思路转变一下,首先,本题我们需要找到的是正权回路不是负权回路,我们只需要改变一下松弛策略就好,我们只要将松原创 2016-11-29 09:22:01 · 972 阅读 · 0 评论 -
POJ 2503 - 二分+快排
1.Question:前文有2.Solution:本文采用二分+快排的模式我们都知道字符串在字典序下是有严格的递增的序列的,所以我们利用字符串的字典序作为待查序列,利用二分法来查找PS:二分法的时间复杂度是O(n*logn),但是字典树是接近O(n),但是在测试中,二分比字典树还要快一点,我有些不得其解,可能库函数对排序而做了非常好的的优化我也不知道,也有可能是数据的问原创 2016-11-01 09:33:18 · 490 阅读 · 0 评论 -
POJ 1502 - Shortest Path - SPFA+Dijstra
1.Question:题意:MPI微处理器求解1号MPI到其他的所有的MPI的最短的路径中的最长的一条Shortest Path版题2.Solution:本题我用了两种思路去求解SPFA+Dijstra在同为邻接表的情况下,运行的时间效率相当但是,我通过左本题发现,我对SPFA的算法的本质理解存在有很大的漏洞3.Code:SPFA/*Problem:原创 2016-11-21 10:47:02 · 564 阅读 · 0 评论 -
POJ 3295 - 位运算 + 模拟 +递归
1.Question:本题是用枚举的思路来判断一个规定的逻辑表达式是不是永真式首先题目意思是最多不会有超过5个逻辑变量,有五种运算Definitions of K, A, N, C, and E w x Kwx Awx Nw Cwx Ewx 1 1 1 1原创 2016-12-04 16:47:49 · 994 阅读 · 1 评论 -
POJ 2253 - 最短路变形 SPFA+Dijstra
1.Question:题意:题意:给出青蛙A,B和若干石头的坐标,现青蛙A想到青蛙B那,A可通过任意石头到达B, 问从A到B多条路径中的 最长边 中的 最短距离2.Solution:分析:这题是最短路的变形,以前求的是路径总长的最小值,而此题是通路中最长边的最小值,每条边的权值可以通过坐标算出,因为是单源起点,直接用SPFA算法或dijkstra算法就原创 2016-11-22 19:50:11 · 522 阅读 · 0 评论 -
POJ 3268 - Shortest Path Dijstra+ SPFA
1.Question:题意:输入第一行n,m,t三个数代表的含义分别是图中的n个点,m条有向边,t为初始定点之后的m行代表我们图中的m条有向边在题目要求从t初始点到所有的点点额单源最短路径和将所有的有向边反向之后,我们再求一次单源最短路径求两次的最短路径之和的最大值2.Solution:单元最短路径问题本题因为牵扯到有向边的反向问题,所以我们最好选用矩阵的数据结构来原创 2016-11-23 19:54:04 · 418 阅读 · 0 评论 -
NYOJ - 42 - 并查集+半欧拉图
1.Question:描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。规定,所有的边都只能画一次,不能重复画。 输入第一行只有一个正整数N(N每组测试数据的第一行有两个正整数P,Q(P随后的Q行,每行有两个正整数A,B(0输出如果存在符合条件的连线,则输出"Yes",如果不存在符合条件的连线,输原创 2016-11-23 23:15:51 · 414 阅读 · 0 评论 -
POJ 1847 - Shortest Path Dijstra>SPFA
1.Question:又一个火车网络系统输入第一行:n,a,b分别代表网络中 节点的个数,初始节点,终止节点接下来n行分别代表第i个节点的有向边的终点每一行第一个代表的是有向边的个数,之后的第一个有向边的权值是0,之后的权值都是1现在请给出从a到b的最短的路径权值和2.Solution:本题是标准的最短路径的问题并且数据量比较水,所以说,我们的很多的最短路径原创 2016-11-24 14:42:00 · 517 阅读 · 0 评论 -
POJ 3259 - SPFA负权回路 < Floyed
1.Question:POJ 3259农夫约翰在探索他的许多农场,发现了一些惊人的虫洞。虫洞是很奇特的,因为它是一个单向通道,可让你进入虫洞的前达到目的地!他的N(1≤N≤500)个农场被编号为1..N,之间有M(1≤M≤2500)条路径,W(1≤W≤200)个虫洞。FJ作为一个狂热的时间旅行的爱好者,他要做到以下几点:开始在一个区域,通过一些路径和虫洞旅行,他要回到最开时出发原创 2016-11-26 11:54:15 · 632 阅读 · 0 评论 -
NYOJ 99 - 欧拉图 单词拼接
1.Question:描述给你一些单词,请你判断能否把它们首尾串起来串成一串。前一个单词的结尾应该与下一个单词的道字母相同。如alohadogarachnidgophertigerrat 可以拼接成:aloha.arachnid.dog.gopher.rat.tiger原创 2016-11-26 16:35:51 · 666 阅读 · 0 评论 -
NYOJ 118 次小生成树
1.Question:描述南将军率领着许多部队,它们分别驻扎在N个不同的城市里,这些城市分别编号1~N,由于交通不太便利,南将军准备修路。现在已经知道哪些城市之间可以修路,如果修路,花费是多少。现在,军师小工已经找到了一种修路的方案,能够使各个城市都联通起来,而且花费最少。但是,南将军说,这个修路方案所拼成的图案很不吉利,想让小工计算一下是否存在另外一种方案原创 2016-12-03 14:38:23 · 840 阅读 · 0 评论 -
Euler Graph - 欧拉图 详解
1.从哥尼斯堡七桥问题到欧拉图哥尼斯堡七桥问题:18世纪中叶在欧洲普鲁士的哥尼斯堡城内有一条贯穿全市的和河中有两个小岛,现在四块陆地有七座桥连接,引入问题,如何规划线路才能保证我们可以走过所有的边但是却保证不会重复呢这就是著名的哥尼斯堡七桥问题,现在通过图论证明哥尼斯堡问题是不存在解的,第一个发表论文证明了这个事实的人就是欧拉,该论文也是目前为止发现的最早的关于图论的论文,当然,这种问原创 2016-11-19 19:18:34 · 19708 阅读 · 2 评论 -
POJ 1251 MST Krustral
1.Question:题意:题目中说明了是边数不会超过75,可见是稀疏图,我们直接Krustral 0MS水过来测模板了2.Solution:本题唯一的难点在于理解题意,和图的构建没什么难的3.Code:#include"iostream"#include"cstdio"#include"cstring"#include"algorithm"using n原创 2016-11-15 08:46:10 · 466 阅读 · 0 评论 -
POJ 1861 - MST - Krustral
1.Question:输入:第一行两个数字,第一个n代表是点数,第二个m代表边数之后的m行代表有m个边,前两个代表两个点,第三个数字代表权重输出:MST中最大的边边的个数(n-1)将边集列出来2.Solution:标准的套模板,1861的题目的标准样例有一些问题,但是不应向我们做题,毕竟是Special Judge3.Code:#include"iost原创 2016-11-12 21:41:33 · 426 阅读 · 0 评论 -
POJ 2349 MST Prim
1.Question:抽象概括题意:现在给你一个些点的坐标,每个坐标都是正整数,现在每个点之间都有一个连边(稠密图)现在求最小生成树MST的第n-s/n-1条边的长度,具体选哪个,我们根据s代销来判断,在程序中我已经写明了2.Solution:标准的稠密图,我们最好用Prim,如果用Krustral的话,最坏的情况500*500的边,很容易超时3.Code:#inclu原创 2016-11-16 20:00:25 · 481 阅读 · 2 评论 -
POJ 1860 - SPFA - 正权回路
1.Question:我们的城市有几个货币兑换点。让我们假设每一个点都只能兑换专门的两种货币。可以有几个点,专门从事相同货币兑换。每个点都有自己的汇率,外汇汇率的A到B是B的数量你1A。同时各交换点有一些佣金,你要为你的交换操作的总和。在来源货币中总是收取佣金。例如,如果你想换100美元到俄罗斯卢布兑换点,那里的汇率是29.75,而佣金是0.39,你会得到(100 - 0.39原创 2016-11-29 17:58:26 · 773 阅读 · 0 评论 -
POJ 3349 - 数值哈希(这辈子只服数据量)
1.Question:题意描述:输入:n代表有多少片雪花之后的n行,每行6个数字代表雪花的6个枝杈的长度(正序逆序都可以)输出:如果以上的雪花中出现了同构的情况,那么我们认为出现了相同的雪花最后如果我们认为有两种相同的雪花,输出Twin snowflakes found.否则输出No two snowflakes are alike.2.Soluti原创 2016-11-01 21:13:00 · 1309 阅读 · 0 评论 -
POJ 3625 - MST
1.Question:题意:输入:n,mn代表已经点个数,m表示有多少条边已经连接成功本题是一个稠密图,每两个点之间都有边相连之后的输入的代表两个点之间有连边输出:最小的需求,本题是一个稠密图2.Solution:因为是稠密图,本题的Krustral没有Prim快本题是一个Prim的版题,但是不知道为什么,可能是精度的问题,导致的已知在WA之后莫原创 2016-11-14 11:18:34 · 313 阅读 · 0 评论 -
POJ 3329 - 数学 + 哈希
1.Question:题意:平面上有一些二维点,现在我们要求输入的这些二维点最多可以构成多少个正方形,注意选择的点次序不同得到的正方形视作相同的正方向输入:有多组测试用例,首先每一组测试用例的第一行n表示有n个点之后的n行中两个数字分别表示二维点的横纵坐标输出:可以组成的正方形的个数2.Solution:首先我们来描述一下为什么朴素的枚举人以四个点地做法是不行的原创 2016-11-02 16:15:51 · 543 阅读 · 2 评论