摘要:原文http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里...
阅读全文
摘要:用c或者C++处理大数比较麻烦,于是决心学习一下JAVA中大数运算。先下载一个eclipse,具体的用法去问度娘吧JAVA中有两个类BigInteger和BigDecimal分别表示大整数类和大浮点数类这两个类都在java.math.*包中,因此每次必须在开头处引用该包(import java.ma...
阅读全文
摘要:题目大意:给出a和b串,a是b串的子串,如果b串有连续的a串,那么就将b串的a串删除,问删除多少次;题目分析:打比赛的时候没敲出来,后来想到用栈的思想去模拟就行,网上还有用KMP+栈去做的,没有KMP,也能AC,一会去学习一下KMP算法 1 #include 2 #include 3 #includ...
阅读全文
摘要:题目大意:有n条路,选每条路的概率相等,初始能力值为f,每条路通过的难度值为ci,当能力值大于某条路A的难度值b时,能够成功逃离,花费时间ti,小于等于时,不能逃离,天数加一天,但能力值增加b.给定初始的能力值,求成功逃离的期望。分析:概率dp做的少,感觉不是很简单。设dp[j]表示能力值为j时,逃...
阅读全文
摘要:题目大意有n个从1..n标号的座位,按时间顺序给出每个客人来的时候是坐在第几个空座位,最后给若干个询问问第i号客人坐在哪里分析线段树+二分 1 // Fast Sequence Operations II 2 // Rujia Liu 3 // 输入格式: 4 // n m 数组范围...
阅读全文
摘要:A题题目大意:给你一个字符串,奇数的时候是钥匙,偶数的时候是门,一把钥匙只能开对应的门,然后问你最少额外需要多少把钥匙。分析:用的数组记录一下就行,(注意的是先开门,再拿钥匙!开始错在这里了,决心好好学英语)#include#include#include#include#include#inclu...
阅读全文
摘要:在网上找了好久的模板,感觉刘大神的模板比较好用 http://blog.csdn.net/zhulei19931019/article/details/38706259点修改Update(x,v): 把Ax修改为vQuery(L,R): 计算区间[qL,qR] 最小值。(也可以求最大值) 1 // ...
阅读全文
摘要:题目大意:给出一个真分数,把它分解成最少的埃及分数的和。同时给出了k个数,不能作为分母出现,要求解的最小的分数的分母尽量大。分析:迭代加深搜索,求埃及分数的基础上,加上禁用限制就可以了。具体可以参考一下紫书。 1 #include 2 #include 3 #include 4 #include 5...
阅读全文
摘要:题目大意:给出两串n(1 ≤ n ≤ 200 000)个字母的字符串, 求出最多交换一对数, 使得不相同对数变少,求出不相同的对数以及交换的数的位置,若不需交换则输出-1,-1.分析:用矩阵记录两个串相同位置不同的字母,有三种情况,一种是交换后正好两个位置都对应相同,一种是交换后只有一个位置相同,还...
阅读全文
摘要:题目大意ATM取款机有n种不同的钱币kind[i],每次取款允许吐出不超过k张钱币,且钱币的种类数不能超过2(一开始没理解2的意思),现在有q次取款,钱数为ques,问ATM能否凑出这样的钱,若能的话吐出的钱币数最少是多少。n #include#include#include#include#inc...
阅读全文
摘要:~ 逐位求反u 后辍为 定义unsigned类型>>右移如在32系统中,连起来就是 将32位的0取反后 右移一位。也就是 int 的最大值 2147482347
阅读全文
摘要:题目大意:有n个矩形在地上排成一列,不可重叠,已知他们的宽度w和高度h,现在使至多[n / 2]个矩形旋转90度,问最后可以用多小的矩形恰好覆盖这n个矩形,求满足条件的最小矩形面积。n, w, h #include#include#include#include#include#include#de...
阅读全文
摘要:语法: const char *c_str();c_str()函数返回一个指向正规C字符串的指针常量, 内容与本string串相同. 这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。看看下面的例子,...
阅读全文
摘要:题目大意人推箱子从起点到终点,要求推箱子的次数最少,并打印出来人移动的路径。题目分析对于箱子进行宽搜的同时,要兼顾人是否能够把箱子推到相应的位置每一次对箱子bfs 然后对人再bfs#include#include#include#include#include#include#includeusin...
阅读全文
摘要:来自大牛 http://blog.csdn.net/returnzero__/article/details/7934909一些好题目POJ1190–生日蛋糕(基础,好题)http://acm.pku.edu.cn/JudgeOnline/problem?id=1190题意:略解法:dfs,题偏简单...
阅读全文
摘要:问题描述看完电影后,乐乐回家玩起了积木。他已经搭好了n堆积木,他想通过调整积木,使得其中有连续W堆积木具有相同的高度,同时他希望高度恰好为H。乐乐的积木都这了,也就是说不能添加新的积木,只能移动现有的积木。他可以把一个积木从一堆移动到另一堆或者新的一堆,但是不能移动到两堆之间。比如,一次移动之后,"...
阅读全文
摘要:负数求余数运算是一个数学问题:任何一个整数n都可以表示成 n=k*q+r 其中0<=|r|<|q| 这里的r就是n除以q的余数,即 r==n%q 例如: -9=(-2)*4+(-1) 则-9除以4的余数为-1 另外:求余:取整除后的余数。 求模:基本意义和求余相同,不过要求a%b中的b不是负数。
阅读全文
摘要:Problem Description有一段时间Eric对逆序数充满了兴趣,于是他开始求解许多数列的逆序数(对于由1...n构成的一种排列数组a,逆序数即为满足iaj的数字对数),但是某天他发现自己遗失了原来的数列,只留下之前计算过程中留下的各个数字对应的逆序数,现在请你帮他还原出原序列。Input...
阅读全文
摘要:中文题题目分析搜索题,非常好的剪枝由于深度一定(m),所以使用深度优先搜索,自上而下的设定蛋糕序号,最顶层的为第1层,……,最底层的蛋糕为第m层,很明显满足题目条件的前i层的(从顶层(也就是编号为1的层)开始计数)最小面积mins[i]和体积minv[i]是在该层的半径以及高度都为i时取得,如果采用...
阅读全文
摘要:题目分析如果n=1,答案是1,否则答案是2n−2。证明:ai肯定是最小的或者最大的。考虑另外的数,如果它们的位置定了的话,那么整个序列是唯一的。那么ai是最小或者最大分别有2n−1种情况,而整个序列单调增或者单调减的情况被算了2次,所以要减2。要注意的一点是因为p>231,所以要用快速乘法。用法与快...
阅读全文
摘要:题目题意: 有n个不同的数,你可以询问a,b哪个大,会得到答案,然后问最少要几次保证能挑选出最大和第二大的数。 分析: n个数,先以打擂台的方式,两两比较出最大的,n - 1次,然后在由被最大PK下去的数字中,比较出最大的,有log(n)个数,需要进行log(n) - 1次,注意是向上取整。#in...
阅读全文
摘要:题意大意:一个{1..n}的集合,求一个子集合,使得元素个数最多,并且不存在有两个元素x * k = y,求出最多的元素个数是多少.分析:先要删除k倍的,删除为{k, 2k, 3k, 4k, 5k, 6k...},会删掉多余的k^2,因此在加回k^2倍的数然后现在集合中会出现情况的只有k^2的倍数,...
阅读全文
摘要:题目大意美丽的村庄里有一条河,N个石头被放置在一条直线上,从左岸到右岸编号依次为1,2,...N。两个相邻的石头之间恰好是一米,左岸到第一个石头的距离也是一米,第N个石头到右岸同样是一米。礼物被放置在第M个石头上,Frank从左岸开始跳跃,对于第i步,必须跳2*i-1米,每次可以向左方向跳,也可以向...
阅读全文
摘要:题目大意:给出n个数,从中选取k个,使得乘积最大,并且尽量使和最大分析:首先按照数的绝对值大小排序。然后就要分三大类情况讨论:(1)前k个中选到0:如果选到0的话,乘积一定是0,所以尽量选大的数,让和变大。(2)前k个中选到负数的个数为偶数:这样的话直接输出答案(一定为最优解)(3)前k个中选到的负...
阅读全文
摘要:题目大意给定两个数n和m,如果长度为m的数满足对于每个i(n#include#include#includeusing namespace std;int str[50];int n,m,flag;int judge(int cur){ int sum=0; for(int i=0; i...
阅读全文
摘要:题目大意在一个晚上有N个人过河,他们有一个手电筒,需要有手电筒才能过河,每次最多两个人同时过河,每次过河时间等于速度最慢的那个人的过河时间,让所有人全部过河,花费的时间最少是多少?分析如果只有一个人过河,那么过河的总时间就是这个人过河的时间。如果是两个人过河,那么总时间为过河速度较慢的那个人的过河时...
阅读全文
摘要:题目大意:给出一个数列,每次交换相邻数字,求排成递增序的最少交换次数。分析:求逆序数,合并排序#include#include#include#define maxn 5000010using namespace std;int a[maxn],tem[maxn],n;long long Sort(...
阅读全文
摘要:题目大意:n张唱片,每张都有长度和频率,要求题目中公式值最小。求一个排序,输出该排序下第m张CD的id。思路:贪心,长度越长放越后面,频率越低放越后面,所以按len/p去排序即可。#include#include#include#includeusing namespace std;struct C...
阅读全文
摘要:题目大意:n个绝对值各不相同的非0整数,选出尽量多的数,排成一个序列,使得正负号交替且绝对值递增。分析:按照绝对值大小排一次序,然后扫描一次,顺便做个标记即可。#include#include#includeusing namespace std;int cmp(int a,int b){ r...
阅读全文
摘要:题目大意:一个答题赢奖金的问题,玩家初始的金额为1,给出n,表示有n道题目,t表示说答对一道题目的概率在t到1之间,每次面对一道题,可以选择结束游戏,获得当前奖金;回答下一道问题,答对的概率p在t到1之间,答对的话奖金翻倍,答错的话结束游戏,没有奖金,求玩家赢的奖金的期望值的最大值。分析:假设玩家已...
阅读全文
摘要:题目大意:给出n,表示说有n个大小不同的盘子,然后再给出每个盘子的初始位置和目标位置,要求计算出最少的步数使得每个盘子都移动到它的目标位置。分析: 首先找最大不在目标柱子上的盘子K,因为如果最大的盘子在目标柱子上它不需要移动,也不碍事。因此问题就成了把K移动到目标柱子,把1到(k-1)移动到中转柱子...
阅读全文
摘要:题意:有一个周长为10000的圆上等距分布着n个雕塑,现在又加入m个雕塑,位置随意,希望n+m个雕塑仍然均匀分布。这就要移动其中一些雕像,求移动的最小距离。这个题的方法很巧妙,首先将整个圆分成(m+n)份,这样移动后的点都是在整数值上;所以只要计算在这样的分法下原来的坐标就行了;#include#i...
阅读全文
摘要:【题目翻译】:题目分析:因为任务是可以并行的执行,所以直觉上是花费时间长的任务优先去部署。但是这到题目还给你交待任务的时间,所以容易让人想多了。不管有没有交待任务的时间,对于任务x和y,只可能有两种情况。x在y之前结束,和x在y之后结束。这里讨论x在y之前完成。未交换x和y的位置时,完成时间为:B[...
阅读全文