自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

XD

为了将来,拼了!~

  • 博客(24)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 斐波那契数列——矩阵的幂求解

题目:斐波那契数列的递推公式如下:F(0) = 0;F(1) = 1;F(n + 2) = F(n + 1) + F(n);求数列的第N项的值对10000取余的结果。( 0求解斐波那契数列,如果N比较小的情况下,可以直接打表求解,但是对于N很大的情况下,并不适用。所以,有些人会想到高精度计算,但是,N达到10^5以上时,时间复杂度难以想象,每计算一个数,需要进行

2015-07-30 19:35:22 1418

原创 杭电ACM1074——Doing Homework~~状态压缩DP

题目的意思:N门课程有作业,一个时间是最迟交的时间,一个是需要耗费多少时间来完成,到了期限,迟交多少,就扣多少分,求扣最少分的做作业的顺序。N小于等于15,可以枚举所以的情况,数的二进制来表示各种情况。对于集合编码成整数,可以看我的另一篇博客:点击打开链接

2015-07-28 20:23:42 1197

原创 北大ACM2686——Traveling by Stagecoach~~状态压缩DP

最近才看书,看到状态压缩。对于状态压缩,其实就是集合上的DP。这需要我们了解一些位运算:集合{0,1,2,3,....,n-1}的子集可以用下面的方法编码成整数像这样,一些集合运算就可以用如下的方法来操作:1.空集....................02.只含有第i个元素的集合{i}................1 3.含有全部n个元素的集合{0,1,2,3,..

2015-07-28 19:20:21 738

原创 杭电ACM1284——钱币兑换问题

一开始,以为是一个简单的高精度加法的问题。推出的递推公式是:F(n) = F(n - 1) + F(n - 2) + F(n - 3)。但是,事实上,这个递推公式是错的,存在重复的情况。正确的递推公式是:F(n) = F(n - 3) + n / 2 + 1。  F(n - 3) 是加上一个3分的情况,n / 2是兑换的钱中有2 的情况,1是兑换的全是1的情况。对于这个递推公式,将

2015-07-27 20:03:25 1215

原创 杭电ACM1282——回文数猜想

如题,题目很简单,水题一个。输入一个数,判断是否是回文数,是就退出,中间的值用数组记录。将数倒序,判断与原来的数是否相等,相等就是回文数。由于数不超过int型,所以可以用下面的来来判断。int cheak(int n){ int temp = n; int ans = 0; while(temp) //不断的取temp的最后一个数加到ans上,就将n转置过来

2015-07-27 19:45:44 779

原创 杭电ACM2665——Kth number~~划分树

题目的意思:给点区间[a, b],查找第K大的数,和POJ2104题一样,只是HDU上的时间限制5000MS,用我在POJ上的方法,过不了,会超时。而这一题的代码,改一下main函数的输入,就可以直接AC了POJ上的2104.这题,用分桶法,WR,纠结了一晚上,最后还是放弃了,实在不知道错在哪里。于是改用了划分树的方法,学习了划分树的建立和查找。划分树:主要运用于求解序列中区间[a,

2015-07-25 14:16:39 773

原创 北大ACM2105——IP Address

这题,水题一个,题目的意思是将输入的32位二进制数,每八位转换成十进制,以IP地址的形式输出。下面的是AC的代码:#include #include using namespace std;int num[8] = {128, 64, 32, 16, 8, 4, 2, 1};int main(){// freopen("data.txt", "r", stdin); in

2015-07-25 10:14:01 607

原创 北大ACM2104——K-th Number

题目的意思是:给你一个N个数的数组,有M条询问,每一次输入3个数,i, j ,k  意思是数组中从第 i 个到第 j 个中的数从小到大排序,第k个数是哪个?输出来。题目时间限制是20000MS,相对比较宽松,但是如果你用普通的方法来做,还是超时,没询问一次,你就要排一次序,消耗很多时间。我们可以想另外一种方法,也就是只用排一次序的。我们可以用这样的方法:每一个数,输入的时候,记录它原本的位

2015-07-25 10:01:51 586

原创 杭电ACM2094——产生冠军~~拓扑排序

题目的意思,如题。很容易明白。解决的方法就是拓扑排序,就可以很容易的解决了。每输入一对选手,判断两个选手是否出现过,没有出现过,新建一个头结点,加入到邻接表中,更新结点的入度。最后判断是否存在一个结点的入度为0,有,则Yes,否则No。我用的是STL中的list容器来创建的邻接表。下面的是 AC的代码:#include #include #include using

2015-07-23 23:26:25 1321

原创 杭电ACM1277——全文检索~~AC自动机算法

题目的意思:给你一篇文章,再给你T个字符串,判断这T个字符串有哪些在文章中出现过。由于文章很大,普通的方法必定超时,所以需要用 AC自动机算法。AC自动机算法是多模匹配算法之一,主要是用于在一篇文章中,找出给定的N个单词在这篇文章中出现的个数。AC自动机算法,我也是刚刚学习,主要是在建立字典树的基础上,增加了失败指针,提高了匹配的效率。而且最难的是失败指针的建立。它的优点是:最大限

2015-07-22 22:42:39 742

原创 杭电ACM1570——A C~~水题

无聊,刷刷水题。题目很简单,求排列或组合,n和m最大10.直接普通的办法0MS过了。下面的是 AC的代码:#include using namespace std;int f(int n){ int ans = 1; for(int i = 2; i <= n; i++) ans *= i; return ans;}int main(){ int n, m,

2015-07-22 19:27:03 679

原创 杭电ACM2086——A1=?

题目的意思很容易明白:有如下方程:Ai = (Ai-1 + Ai+1)/2 - Ci       (i = 1, 2, 3, .... n).若给出A0, An+1, 和 C1, C2, .....Cn.请编程计算A1 = ?根据方程:Ai = (Ai-1 + Ai+1)/2 - Ci 可以写出:A1 = 1/2 * A0 + 1/2 * A2 - C1;.........

2015-07-22 19:01:51 2577 1

原创 杭电ACM1238——Substrings

题目的意思是,找到各个串的最长子串,输出长度。我们找到最短的串,枚举这个串的所有子串,需要注意的是,这些子串的逆序也是可以的。知道了这些,就可以写出代码了。下面是AC的代码:#include #include using namespace std;char str[105][105];int main(){ char s1[105], s2[105]; int

2015-07-20 22:43:19 1039

原创 北大ACM3468——A Simple Problem with Integers~~线段树的应用

题目的意思很明确,有两种操作,一种是计算一个数列的第 a 到 第b的和,另一种是第 a 到 第 b 之间的数加上 c。由于这些操作的数目很大,用普通的办法无法办到,会超时。对于这类问题,用线段树可以很好解决。对于线段树还只是学习阶段,还不是很熟,需要多加练习与理解。#include #include #include using namespace std;typedef __i

2015-07-19 15:53:41 697

原创 杭电ACM1124——Factorial

题目的意思是:求N!的尾部有多少个零。刚开始讲的全是废话,在问题描述的最后一段才看懂了题目要干嘛。求N!的尾部有多少个零,先算出N!,再来一个一个数,是不可能的,而且N最大达到了100000000。而我们需要从数学的角度来分析一下,0是怎么产生的?通过写出前面几个数的阶乘,可以知道,想要产生0,就必须要有5以及一个偶数来跟它相乘。而我们可以知道的是,一个数的阶乘中,5的个数远远小于偶数

2015-07-19 13:22:30 872

原创 杭电ACM1218——Blurred Vision

题目有点长,而且比较难懂。看了很久,也看的不是很懂,只知道输入输出的格式。直到看了最后的一句话,也就是output那里的最后一句话,题目的意思就很明确了,就是输出的每一个点的像素是原始的四个像素点的平均值。根据样例,测试了一个,果真是如此,也就是输出的点的像素值是原始点的加上右边,下边,右下边的值的平均值。知道了题目的解法,就可以很容易的写出代码了。(或许我上面讲的不是很清楚,看代码就可以很容

2015-07-19 12:40:49 859

原创 杭电ACM1031——Design T-Shirt

题目的意思是:给你N个人的对M个元素的满意度,需要添加K个元素到T-shirt上,使得满意度最大。很水的题目。我的思路是,将各个元素的满意度加起来,排序,得到前K个满意度最大的。再将元素的编号进行排序,然后输出。下面的是AC的代码:#include #include #include using namespace std;class data{public: doub

2015-07-19 10:30:10 1923

原创 杭电ACM1072——Nightmare~~广度优先搜索

题目的意思是:给你一个迷宫,0代表墙,1代表路,2代表起始位置,3代表终点,4代表爆破装置。一开始,你在2的位置,求到3的最少步数。起初,你只有6秒钟的时间,时间减到0,你没到3的位置,代表不能出去,输出-1.想要增加时间,可以引爆爆破装置,引爆之后,时间重置为6,可以引爆多个。到引爆装置的时候,时间必须大于0,不然没有时间可以引爆。迷宫最大是8 * 8。用广度优先搜索可以简单的解决问题。

2015-07-19 09:38:44 1570

原创 杭电ACM1069——Monkey and Banana~~动态规划

题目的意思是:给你N个长方体的长a宽b高c,每一个型号的长方体可以用无限多个。用这些长方体来堆一个高度最高的塔,每一个长方体的长宽大于上面一个长方体的长宽。一开始是这么想的,一个长方体有3个不同的面,算出3个不同的面的面积,将面积排序,依次取高度相加,不过这样有一个问题就是不能知道长方体的长宽是否大于上面一个长方体的长宽。然后就在结构体中加了两个变量,分别是长宽。再加上长宽的判断,勉强接近了正

2015-07-17 23:25:11 1811

原创 杭电ACM1045——Fire Net~~深度优先搜索

题目的意思是:给你一个n * n 的地图,“X” 表示墙,“.” 表示空地。然后需要在这个地图上面放置碉堡,不能放在同一行或者同一列,除非有墙挡着。我们可以用递归来实现深搜,因为 n 最大为4。对于每一个可以放置碉堡的地方,我们有两种选择,一种就是放上去,标记一下,另一种就是不放,进行下一个位置的放置。如何判断是否可以放置碉堡呢?这个只需要向该位置的四个方向进行搜索,先向下搜,直到遇到

2015-07-17 14:36:33 2032

原创 杭电ACM1015——Safecracker

题目的意思是,给你一个数target和一串字符串,字符串全部都为大写字母。A = 1,B = 2 .......Z = 26.要求从那个字符串中的字母找出一个组合vxyz,使得v - w^2 + x^3 - y^4 + z^5 = target题目还要求这个组合的字典数最大。字符串最大长度为12,所以可以很简单的用暴力通过。而要使得字典数最大,则将字符串排序一下,找的最后一个组合就是最

2015-07-17 13:20:17 2275

原创 杭电ACM1222——Wolf and Rabbit~~最大公约数

题目的意思是:兔子随便躲在一个洞里,狼从 0 号洞开始找,每次找下一个是往后数 m个,全部洞组成环状的。输入的m和n,洞是 0 号 到 n - 1 号。m和n的最大公约数是1,则狼每个洞都可以找到。否则,则有些洞就会被忽略,而那些洞是安全的。下面的是AC的代码:#include using namespace std;int GCD(int a, int b){ int

2015-07-08 14:00:05 1118

原创 北大ACM2739——Sum of Consecutive Prime Numbers

题目的意思是:给你一个数N,求由连续的m个素数之和等于N的组数。这题很简单,一开始没看到题目是连续的素数,所以一开始想用深搜来做,可是不行,后来再看了题目,才知道是连续的素数,是连续的素数就简单很多了。下面的是 AC的代码:#include using namespace std;int prime[10005];int main(){ int i, j, k; for

2015-07-08 13:31:23 946

原创 排序算法!~

排序算法很多,这里主要列出几个比较经典的排序算法。最开始我们最先接触到的排序算法是冒泡排序,冒泡排序是一种比较简单的排序算法,重复的扫描排序过的数组,直到没有数字交换的情况。时间复杂度O(n^2)。冒泡排序:void Bullesort(int a[], int n){ int i, j, temp; for(i = 0; i < n; i++) { for(j = 0;

2015-07-08 09:45:30 845

SkinH_VC。rar

VC换肤库,可以让你的界面焕然一新。支持各种环境,各种开发工具

2015-04-26

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

TA关注的人

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