自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(94)
  • 资源 (2)
  • 收藏
  • 关注

原创 DP求最小花费 - 九度OJ 1086

DP求最小花费,可以用最短路的思想来做。不过最短路是二维矩阵,这里我们做的是一维。题目1086:最小花费题意:给你n个点,标号从1 - n,再给出n-1条边,代表从1到2...n之间的距离。三种车票,长度为L1,L2,L3,价格为C1,C2,C3,问你从坐标a到b最少的花费(在坐标点换乘,超出的距离也只能在到达的最近点换乘)。数据范围:0这就相当于最短路,用f[ ]数组记录,一

2017-08-06 23:06:39 833

原创 背包与贪心

背包问题最经典的就是01背包。n个物品,有体积 w 和价值 v 两种属性,选择一部分填充容量为 m 的背包(可以不填满),求能获得的最大价值。其实分析下来,动态转移方程就是 f[i][v]=max{f[i-1][v], f[i-1][v-c[i]]+w[i]} ,优化后就是 f[v]=max{f[v], f[v-c[i]]+w[i]}  (第二重for循环从m -> v[i],为了不更新i

2017-08-06 23:00:45 463

原创 01背包查找路径

做01背包,我们能知道最后的结果,若果求路径,我们可以根据状态转移方程逆推。看一个百度之星2017年的题度度熊的午饭时光Problem Description度度熊最期待每天的午饭时光,因为早饭菜品清淡,晚饭减肥不敢吃太多(胖纸的忧伤T.T)。百度食堂的午餐超级丰富,祖国各大菜系应有尽有,度度熊在每个窗口都有爱吃的菜品,而且他还为喜爱的菜品打了分,吃货的情怀呀(>.

2017-08-06 23:00:08 474

原创 完全背包+最值问题

在解决完全背包问题时,通常会遇到两种问题,一种是恰好将背包装满,一种是不要求恰好装满。是否恰好装满只是初始化的会有区别。恰好装满 如果要求恰好装满背包,那么在初始化时除了f[0]为0,其它f[1..V]均设为-∞(求最小值设为∞),这样就可以保证最终得到的f[N]是一种恰好装满背包的最优解。不一定恰好装满 如果并没有要求必须把背包装满,而是只希望价格尽量大,初始化时应该将f[0..

2017-08-06 10:12:59 932

原创 处理技巧+DFS | 计算字符串种类

336. Equivalent Passwords 题目大意:给你n个仅由0~9组成的字符串作为密码(1 ≤ N ≤ 100,000),每个字符串长度<=5,两个字符串A,B如果长度相同且对于每个位置i ,|A[i] - B[i]|(注意绝对值)都相同,那么这两个字符串就是等价的,问你至多多少次 能找到正确密码。简单说就是n个字符串有多少种? 分析:如果暴力匹配,最坏的情况是...

2017-07-30 17:39:16 529

转载 数学+矩阵快速幂 | 打表找规律+数学归纳

 Funny FunctionTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)   题意:通过给定的函数计算 F(m,1),结果模上 1e9+7     题解:(转自RedPolya)F1,1=F1,2=1F1,i=F1,i−...

2017-07-28 17:32:44 398

原创 贪心 - 端点变化的连续区间求最值

 Maximum Sequence Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)    题意:给两个长度为n的序列a, b,现要求max(sum(a[n + 1] + … + a[2n])),其中a[i] = max(a[b[k]] … a[i ...

2017-07-28 16:03:03 645

转载 康托展开

康托展开  康托展开的公式是 X=an*(n-1)!+an-1*(n-2)!+...+ai*(i-1)!+...+a2*1!+a1*0! 其中,ai为当前未出现的元素中是排在第几个(从0开始)。  这个公式可能看着让人头大,最好举个例子来说明一下。例如,有一个数组 s = ["A", "B", "C", "D"],它的一个排列 s1 = ["D", "B", "A", "C"],现在要

2017-07-11 21:00:29 263

原创 codeforce #420

C. Okabe and Boxestime limit per test3 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputOkabe and Super Hacker Daru are stacking and remov

2017-06-26 02:04:29 687

原创 容斥定理 | 初步

容斥定理:http://www.cppblog.com/vici/archive/2011/09/05/155103.html玲珑杯 1138 - 震惊,99%+的中国人都会算错的问题DESCRIPTION众所周知zhu是一个大厨,zhu一直有自己独特的咸鱼制作技巧.tang是一个咸鱼供应商,他告诉zhu在他那里面有N条咸鱼(标号从1到N)可以被用来

2017-06-24 21:50:51 424

原创 玲珑杯 1137 - Sin your life

1137 - Sin your life给一个正整数n,求下列表达式的最大值:(sin(x)+sin(y)+sin(z))[x+y+z=n][x≥1][y≥1][z≥1],这里的x,y,z皆为整数已知 x+y=m,则sinx+siny=sin(m-y)+sinymax=sqrt( sin(m) * sin(m) + (1-cos(m) * (1-cos(m) )

2017-06-24 16:28:09 390

转载 异或 问题

问题定义:有2n+1个数,只有一个单着,别的都是成对的,找出这个单着的数。比如:2 1 3 2 1。3是答案。思路一:暴力搜索——每个数都和其他数比较,找不到相同的,就得到了结果。时间复杂度为o(n2)思路二:排序搜索——先给序列排个序,之后从前往后一对一对的找,直到不是成对的为止。时间复杂度,怎么也得o(nlgn)思路三:异或计算,一趟搞定。时间复杂度o(n)直接看思路三:原

2017-06-23 22:22:42 1822

原创 约瑟夫环问题

约瑟夫环问题:一圈共有N个人,开始报数,报到M的人自杀,然后重新开始报数,问最后自杀的人是谁?如图:内环表示人排列的环,外环表示自杀顺序;上面N=41,M=3。 (图转自KangRoger的博客)问题链接:CDOJ 525最容易想到的思路是模拟,时间复杂度为(n*m);#include #include #include using namespace

2017-06-18 11:17:23 717

转载 一个大牛的工作体验

转自前CSDN第一名:首先想谈一谈自己工作时的几点感触:  1)认真规划自己的职业方向,选择一个行业时,是否真正对其有兴趣,与你的理想是否合拍?请慎重安排自己的职业道路,而选中了一条路,就要认真做下去,只有对一个行业有了深入地了解,你才有资格得到你希望的薪水。  2)求职时的简历以简单明晰为好,招聘官其实最不喜欢看到的就是厚厚一摞,夹着大堆证书和像片的简历了,能简单明了的用一至两页

2017-06-12 18:32:33 391

原创 矩阵快速幂

题目描述存在如下递推式:F(n+1)=A1*F(n)+A2*F(n-1)+...+An*F(1)求第K项的值对1000000007取模的结果输入单组测试数据第一行输入两个整数 n , k (1第二行输入 n 个整数 F(1)   F(2)   ...   F(n)第三行输入 n 个整数A1   A2   ...   An 输出输出一个

2017-06-12 16:34:51 326

转载 RMQ求区间最值

RMQ算法,是一个快速求区间最值的离线算法,预处理时间复杂度O(n*log(n)),查询O(1),所以是一个很快速的算法,当然这个问题用线段树同样能够解决。问题:给出n个数ai,让你快速查询某个区间的的最值。(一)首先是预处理,用动态规划(DP)解决。设A[i]是要求区间最值的数列,F[i, j]表示从第i个数起连续2^j个数中的最大值。(DP的状态)

2017-06-04 21:42:24 342

原创 AC自动机入门 - HDU3065 病毒侵袭持续中

AC自动机的模板题。HDU3065 病毒侵袭持续中题意:给定n个字符串和一段文本,统计每个字符串在文本中分别出现的次数。注意点:这里输入单词的时候给每个单词分布一个id,然后在统计次数的时候根据id增加数组的次数就可以了。(这里用kuangbin大神的模板)code:#include #include #include #include using namespa

2017-06-01 22:24:12 366

转载 AC自动机

首先简要介绍一下AC自动机:Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。一个常见的例子就是给出n个单词,再给出一段包含m个字符的文章,让你找出有多少个单词在文章里出现过。要搞懂AC自动机,先得有模式树(字典树)Trie和KMP模式匹配算法的基础知识。AC自动机算法分为3步:构造一棵Trie树,构造失败指针和模式匹配过程。    

2017-06-01 19:34:11 216

原创 Normal - 51Nod 平均数

1711 平均数 基准时间限制:4 秒 空间限制:131072 KB LYK有一个长度为n的序列a。他最近在研究平均数。他甚至想知道所有区间的平均数,但是区间数目实在太多了。为了方便起见,你只要告诉他所有区间(n*(n+1)/2个区间)中第k大的平均数就行了。Input第一行两个数n,k(1<=n<=100000,1<=k<=n*(n+...

2017-05-25 13:34:49 470

原创 入门题 - HDU1556 Color the ball

 Color the ball Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 19952    Accepted Submission(s): 9946  Problem DescriptionN个气球排成一...

2017-05-24 12:21:44 217

原创 CSU 1933-购买饮料

 1933: 购买饮料 Time Limit: 1 Sec Description 小明家门口有一个卖饮料的自动售货机,小明经常在那里买饮料。每种饮料有一个流行度,表示它在市场上流行的程度,为了显示自己的与众不同,小明从来不买流行度大于t的饮料。售货机上有三种操作:1 在货架上添加一种流行度为x的饮料,并以j作为该饮料的编号,j表示该饮料是第j个被添加的饮料(j从1开始计...

2017-05-24 09:40:08 583

原创 基础DP - 循环数组最大子段和

1050 循环数组最大子段和N个整数组成的循环序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的连续的子段和的最大值(循环序列是指n个数围成一个圈,因此需要考虑a[n-1],a[n],a[1],a[2]这样的序列)。当所给的整数均为负数时和为0。例如:-2,11,-4,13,-5,-2,和最大的子段为:11,-4,13。和为20。I

2017-05-22 12:08:37 327

原创 数位DP - 数字1的数量

1009 数字1的数量基准时间限制:1 秒 空间限制:131072 KB 分值: 5难度:1级算法题给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的个数。例如:n = 12,包含了5个1。1,10,12共包含3个1,11包含2个1,总共5个1。Input输入N(1 Output输出包含1的个数Input

2017-05-20 12:03:21 1332

原创 基础DP - 编辑距离

1183 编辑距离基准时间限制:1 秒 空间限制:131072 KB 分值: 0难度:基础题编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。例如将kitten一字转成sitting:si

2017-05-19 18:33:10 314

原创 基础DP - 正整数分组问题

1007 正整数分组基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题将一堆正整数分为2组,要求2组的和相差最小。例如:1 2 3 4 5,将1 2 4分为1组,3 5分为1组,两组和相差1,是所有方案中相差最少的。Input第1行:一个数N,N为正整数的数量。第2 - N+1行,N个正整数。(N

2017-05-19 12:59:55 394

原创 入门 - 最长公共子序列 Lcs

1006 最长公共子序列Lcs基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的)。比如两个串为:abcicbaabdkscabab是两个串的子序列,abc也是,abca也是,其中abca是这两个字符串最长的子序列。Inp

2017-05-17 13:06:18 225

原创 KMP经典习题

KMP 算法经典题目:pku2406 Power Stringshttp://162.105.81.212/JudgeOnline/problem?id=2406pku1961 Periodhttp://162.105.81.212/JudgeOnline/problem?id=1961 这个题目是1961的升级版,考察队next数组的应用,附上代码:#incl

2017-05-05 10:59:31 2195

转载 Trie树详解及其应用

一、知识简介       字典树(Trie)可以保存一些字符串->值的对应关系。基本上,它跟 Java 的 HashMap 功能相同,都是 key-value 映射,只不过 Trie 的 key 只能是字符串。  Trie 的强大之处就在于它的时间复杂度。它的插入和查询时间复杂度都为 O(k) ,其中 k 为 key 的长度,与 Trie 中保存了多少个元素无关。Hash 表号称是 O

2017-04-21 13:25:17 367

原创 随笔 2017/3/27

最大的差距是 当你在努力的时候,我还未沉下心;当我奋起直追的时候,你却在想要不要放弃。

2017-03-27 20:09:42 317

原创 51nod 1091 线段的重叠

1091 线段的重叠 X轴上有N条线段,每条线段包括1个起点和终点。线段的重叠是这样来算的,[10 20]和[12 25]的重叠部分为[12 20]。给出N条线段的起点和终点,从中选出2条线段,这两条线段的重叠部分是最长的。输出这个最长的距离。如果没有重叠,输出0。Input第1行:线段的数量N(2 <= N <= 50000)。第2 - N + 1行:每行2个...

2016-12-22 11:24:09 406

原创 51nod 1305 Pairwise Sum and Divide

有这样一段程序,fun会对整数数组A进行求值,其中Floor表示向下取整: fun(A)    sum = 0    for i = 1 to A.length        for j = i+1 to A.length            sum = sum + Floor((A[i]+A[j])/(A[i]*A[j]))     return sum 给...

2016-12-21 19:54:50 241

原创 51nod 1009 数字1的数量

1009 数字1的数量 给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的个数。例如:n = 12,包含了5个1。1,10,12共包含3个1,11包含2个1,总共5个1。Input输入N(1 <= N <= 10^9)Output输出包含1的个数Input示例12Output示例5   思路...

2016-12-20 17:15:49 284

转载 51nod 1003 阶乘后面0的数量

 题意n的阶乘后面有多少个0?6的阶乘 = 1*2*3*4*5*6 = 720,720后面有1个0。Input一个数N(1 <= N <= 10^9)Output输出0的数量Input示例5Output示例1 编程之美有讲:一个数 n 的阶乘末尾有多少个 0 取决于从 1 到 n 的各个数的因子中 2 和 5 的个数, ...

2016-12-18 14:39:10 412

原创 51node 1001 数组中和等于K的数对

题意:给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对。例如K = 8,数组A:{-1,6,5,3,4,2,9,0,8},所有和等于8的数对包括(-1,9),(0,8),(2,6),(3,5)。Input第1行:用空格隔开的2个数,K N,N为A数组的长度。(2 <= N <= 50000,-10^9 <= K &lt...

2016-12-18 13:31:47 597

原创 最小内积 北航第十二届程序设计竞赛网络预赛

题目描述给定两个 n维向量 A⃗ =(x1,x2,⋯,xn) 和 B⃗ =(y1,y2,⋯,yn) ,定义它们的点积为A⃗ ⋅B⃗ =∑1≤i≤nxi⋅yi对于每个向量,它的每个分量互不相同,而且任意两个分量均可交换位置。求一种交换策略使得 A⃗ 与 B⃗ 的内积最小,如果有多种满足条件的交换策略,那么还要使得交换总次数最少。请你给出最少

2016-12-12 22:01:53 746

原创 STL的vector和pair

pair的类型:    pair 是 一种模版类型。每个pair 可以存储两个值。这两种值无限制。也可以将自己写的struct的对象放进去。。    pair<string,int> p;    pair<int ,int > p;   pair<double,int> p; 应用:如果一个函数有两个返回值 的话,如果是相同类型,就可以用...

2016-12-12 15:53:28 877

原创 判断两条线段是否相交 计算几何

对于线段A,B,如果 线段A与直线B相交 ,线段B与直线A相交 ,那么就可以认为线段A 和线段B相交。关键问题是:如何判断直线AB是否与线段CD相交呢?设直线AB的方程为:f(x,y) = 0,直线方程可以通过两点式求得。当C和D点不在直线的同侧时,直线AB必然与线段CD相交,也就是说直线AB与线段CD相交的条件为:f(C) * f(D) <= 0。代码如下: t...

2016-12-08 21:31:14 10758

原创 C++ map的基本操作和使用

map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。 map能自动建立Key - value的对应。key 和 value可以是任意你需要的类型。map中的元素是自动按key升序排序,所以不用对map进行排序,也无法排序(如果要按降序输出,可以用map.sizeof( ) 获得...

2016-12-07 21:56:17 432

转载 大组合数取模 Lucas定理 HD3037

题目:求n个数的和不超过m的方案数。如果和恰好等于m,那么就等价于方程x1+x2+...+xn = m的解的个数,利用插板法可以得到方案数为:(m+1)*(m+2)...(m+n-1)  = C(m+n-1,n-1) = C(m+n-1,m)现在就需要求不大于m的,相当于对i = 0,1...,m对C(n+i-1,i)求和,根据公式C(n,k) = C(n-1,k)+C(n-1,k-1

2016-12-07 21:53:17 374

转载 斐波那契数列 矩阵求法 优化

在做编程题目的时候经常会遇到“斐波那契数列”相关的题目,尤其在做OJ中。下面说一些方法:  (一)递归  递归是最慢的会发生重复计算,时间复杂度成指数级。long long fac(int n){  if(n==1)   return 1;  else if(n==2)  return 2;  else  return fac(n-1)+fac(n-2);}

2016-12-06 20:48:41 586

fibonacci构造矩阵-总结.doc

(一)Fibonacci数列f[n]=f[n-1]+f[n-2],f[1]=f[2]=1的第n项的快速求法(不考虑高精度). 解法: 考虑1×2的矩阵【f[n-2],f[n-1]】。根据fibonacci数列的递推关系,我们希望通过乘以一个2×2的矩阵,得到矩阵【f[n-1],f[n]】=【f[n-1],f[n-1]+f[n-2]】

2017-09-05

ACM数学论文

整理了近几年的ACM数学资源,有HDU一些题的代码,论文

2016-11-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除