随笔分类 -  ACM

摘要:找组合 题目大意:给你N个自然数,请你求出若干个数的组合的和为N的整数倍的数 经典鸽巢原理题目,鸽巢原理的意思是,有N个物品,放在N-1个集合中,则一定存在一个集合有2个元素或以上。 这一题是说有找出和为N的整数倍的组合,则说明目标是找到sum[i]%N==0,而sum[i]%N恰好有N-1种非0的 阅读全文
posted @ 2016-03-10 23:50 PhiliAI 阅读(298) 评论(0) 推荐(0)
摘要:涂颜料 题目大意:在一个1000000*1000000的矩阵中放入几块木板,问你这些木板把矩阵划分成了几个区域?输入会给左下角和右上角的坐标,输入W==0且H==0结束。 这一题是书上的作业题,书上有一道差不多的例题,但是书上那道例题是用的直线的,而且他的坐标是点格,而这道题是坐标(这个很重要,我一 阅读全文
posted @ 2016-02-17 17:12 PhiliAI 阅读(479) 评论(0) 推荐(0)
摘要:基因修复 题目大意:给定一些坏串,再给你一个字符串,要你修复这个字符串(AGTC随便换),使之不含任何坏串,求修复所需要的最小步数。 这一题也是和之前的那个1625的思想是一样的,通过特殊的trie树找到所有的状态然后一个一个枚,具体状态转移的思想可以在1625那里看 当然了这一题不是像1625那样 阅读全文
posted @ 2016-02-15 22:06 PhiliAI 阅读(384) 评论(0) 推荐(0)
摘要:Censored! 题目大意:给定一些字符,将这些字符组成一个固定长度的字符串,但是字符串不能包含一些禁词,问你有多少种组合方式。 这是一道好题,既然出现了“一些”禁词,那么这题肯定和AC自动机有点关系了,对于这一题来说,因为我们需要的是求出在N^M种状态除去包含禁词的状态数,枚举肯定是不现实的了, 阅读全文
posted @ 2016-02-15 02:35 PhiliAI 阅读(397) 评论(0) 推荐(0)
摘要:多模匹配 题目大意:给定很多个字串A,B,C,D,E....,然后再给你目标串str字串,看目标串中出现多少个给定的字串。 经典AC自动机模板题,不多说。 1 #include <iostream> 2 #include <algorithm> 3 #include <functional> 4 # 阅读全文
posted @ 2016-02-09 23:34 PhiliAI 阅读(326) 评论(0) 推荐(0)
摘要:奶牛矩阵 题目大意:给定一个矩阵,要你找到一个最小的矩阵,这个矩阵的无限扩充的矩阵包含着原来的矩阵 思路:乍一看这一题确实很那做,因为我们不知道最小矩阵的位置,但是仔细一想,如果我们能把矩阵都放在左上角该多好,这样一来这一题好像又是循环数组那个样子了(二维的)。 而事实上我们确实可以把所有情况都放在 阅读全文
posted @ 2016-02-05 16:33 PhiliAI 阅读(957) 评论(0) 推荐(0)
摘要:串珠子 题目大意:给定一个字串,要你找到如果要使之成为循环串,在末尾需要的最小的字数(只能添加字符,不能删减字符) 首先联动一下之前做过的动态规划问题POJ 3280,当然了3280这一题是用的LD,因为他可以添加或者删除(加上修改也行,但是要改状态方程了) 而我们现在要讨论的这一题(HDU 374 阅读全文
posted @ 2016-02-05 16:05 PhiliAI 阅读(417) 评论(0) 推荐(0)
摘要:KMP算法是由Knuth,Morris,Pratt共同提出的算法,专门用来解决模式串的匹配,无论目标序列和模式串是什么样子的,都可以在线性时间内完成,而且也不会发生退化,是一个非常优秀的算法,时间复杂度的上界是O(n+m)。 那么我们现在就来研究一下KMP算法究竟是个什么东西,我这里就尽量说的简洁一 阅读全文
posted @ 2016-02-04 21:53 PhiliAI 阅读(999) 评论(0) 推荐(0)
摘要:DNA序列 题目大意:给你m串字符串,要你找最长的相同的连续字串 这题暴力kmp即可,注意要按字典序排序,同时,是len<3才输出no significant commonalities 1 #include <iostream> 2 #include <functional> 3 #include 阅读全文
posted @ 2016-02-04 21:50 PhiliAI 阅读(262) 评论(0) 推荐(0)
摘要:追名逐利 题目大意:给定一个字符串S,要你找到S的所有前缀后缀数组 还是Kmp的Next数组的简单应用,但是这一题有一个BUG,那就是必须输出字符串的长度(不输出就WA),然而事实上对于abcbab,这样输出会是2,6,很明显是错,但是答案还是会判对,吃惊 1 #include <iostream> 阅读全文
posted @ 2016-02-04 17:36 PhiliAI 阅读(362) 评论(0) 推荐(0)
摘要:字符串前缀的阶 题目大意:求前缀的阶 和POJ1961是一样的,KMP的Next数组的应用,不要用STL,不要一个一个读入字符(IO永远是最慢的) 1 #include <iostream> 2 #include <algorithm> 3 #include <functional> 4 #incl 阅读全文
posted @ 2016-02-04 14:47 PhiliAI 阅读(201) 评论(0) 推荐(0)
摘要:Oulipo 题目大意:给你一个字符串,要你找到字符串包含指定子串的个数 只要你知道了KMP,这一题简直不要太简单,注意STL的string是会超时的,还是乖乖用char吧 1 #include <iostream> 2 #include <algorithm> 3 #include <functi 阅读全文
posted @ 2016-02-04 02:08 PhiliAI 阅读(449) 评论(0) 推荐(0)
摘要:Period 题目大意:给定一个字符串,要你找到前缀重复了多少次 思路,就是kmp的next数组的简单应用,不要修正next的距离就好了,直接就可以跳转了 PS:喝了点酒用递归实现除法和取余了。。。结果tle不知道怎么回事。。。 1 #include <iostream> 2 #include <f 阅读全文
posted @ 2016-02-03 23:03 PhiliAI 阅读(397) 评论(0) 推荐(0)
摘要:物理实验 题目大意:有一个与地面垂直的管子,管口与地面相距H,管子里面有很多弹性球,从t=0时,第一个球从管口求开始下落,然后每1s就会又有球从球当前位置开始下落,球碰到地面原速返回,球与球之间相碰会发生完全弹性碰撞(各自方向改变,速率变为相碰时另一个球的速率)问最后所有球的位置? 这一题又是一道弹 阅读全文
posted @ 2016-02-01 17:40 PhiliAI 阅读(651) 评论(0) 推荐(0)
摘要:找四个数的和为0 题目大意:给定四个集合,要你每个集合选4个数字,组成和为0 这题是3977的简单版,只要和是0就可以了 1 #include <iostream> 2 #include <algorithm> 3 #include <functional> 4 #define MAX 4001 5 阅读全文
posted @ 2016-02-01 13:40 PhiliAI 阅读(238) 评论(0) 推荐(0)
摘要:数集 题目大意:给定一些数的集合,要你求出集合中满足a+b+c=d的最大的d(每个数只能用一次) 这题有两种解法, 第一种就是对分,把a+b的和先求出来,然后再枚举d-c,枚举的时候输入按照降序搜索就好,一旦d满足条件就是最大的了,另外判断不重复存一下位置就好,时间复杂度0(n^2*logn) 1 阅读全文
posted @ 2016-02-01 01:57 PhiliAI 阅读(344) 评论(0) 推荐(0)
摘要:子序列 题目大意:给定一串数字序列,要你从中挑一定个数的数字使这些数字和绝对值最小,求出最小组合数 题目的数字最多35个,一看就是要数字枚举了,但是如果直接枚举,复杂度就是O(2^35)了,显然行不通,所以我们把它的组合拆成两半(前n/2个数字和后n-n/2个数字),然后给前部分和或者后部分和的组合 阅读全文
posted @ 2016-01-31 21:57 PhiliAI 阅读(329) 评论(0) 推荐(0)
摘要:Showstopper 题目大意:数据挖掘是一项很困难的事情,现在要你在一大堆数据中找出某个数重复奇数次的数(有且仅有一个),而且要你找出重复的次数。 其实我一开始是没读懂题意的。。。主要是我理解错object的意思了- - 这一题原理要做出来不难,其实就是二分法,对数二分就好了,因为重复奇数次的数 阅读全文
posted @ 2016-01-30 22:45 PhiliAI 阅读(322) 评论(0) 推荐(0)
摘要:挂彩灯 题目大意:就是要布场的时候需要挂彩灯,彩灯挂的高度满足: H1 = A Hi = (Hi-1 + Hi+1)/2 - 1, for all 1 < i < N HN = B Hi >= 0, for all 1 <= i <= N 现在已知彩灯的个数和第一个彩灯挂的高度,要你求最后一个彩灯最 阅读全文
posted @ 2016-01-27 20:25 PhiliAI 阅读(270) 评论(0) 推荐(0)
摘要:Linear world 题目大意:一些人生活在线性世界中,到达线性世界两端就会消失,两个人的前进方向有两个,相遇会改变各自相遇方向,求最后一个人掉下的人的名字和时间。 其实这一题就是弹性碰撞的模型,所谓弹性碰撞的模型是两个物体相碰后会改变方向,但是可以看成是各自擦身而过,这个模型可以很快速求解与端 阅读全文
posted @ 2016-01-26 19:33 PhiliAI 阅读(364) 评论(0) 推荐(0)