
算法
文章平均质量分 53
Dijason
这个作者很懒,什么都没留下…
展开
-
sicily 1317. Sudoku
题目链接sicily 1317这题咋一看以为不简单,因为第一感觉是时间复杂度很大,可想想写起来应该不难,于是飞快的写了个dfs。结果是证明了我的感觉,超时了。确实是写起来容易的代码来对付时间复杂度很大很大的是会超时的。只能做些优化了。看了别人的做法,也想到了之前马的周游一样的优化方法。从能够填写的数字个数最少的位置开始深搜。原因是产生的树上端都是小,然后搜到下面的位置的话,一旦不符合很快原创 2012-11-29 20:27:56 · 1260 阅读 · 0 评论 -
sicily 1022 Poor contestant Prob
我要吐槽下,被自己坑了两个多小时,也说明自己测试不仔细!仅仅在输出xxx is so poor少了一点,一点呀!一个点就等于我的两个小时T_T,都没天理了。言归正传,说说解题思路。1 经过本人的不懈努力,经验之谈,不要用c++的cout做输出,很容易超时!用c的printf2 这题数据量应该很大,用传统的排序方法是过不了滴,在这里要用堆,大根堆和小根堆小解:小根堆简单的说就是一个数组里面总是最小的原创 2012-11-08 18:41:51 · 1103 阅读 · 0 评论 -
sicily 1003 Hit or Miss
这道题做起来比较像在做阅读理解......表示英语不好的伤不起。读了M次,没怎么懂题意,最后在参考其他人的代码才明白过来。这里有一个讲解题意讲的比较清楚的,我就不累赘了。http://blog.youkuaiyun.com/chenhq1991/article/details/7795757#include #include #include using namespace std;原创 2012-11-05 19:42:08 · 2081 阅读 · 0 评论 -
sicily 1006 Team Rankings
在这题卡了很久,主要是没读懂题意,今天再去看题,突然就明白了。关键是 median ranking的定义,其实这个定义跟逆序数一个意思。接着是对于给出的voters的处理,这些是用来做一个源字符串的(词穷,不知道怎么叫更准确),用来确定给出的ranking有多少个逆序数。因为一共有5!=120个ranking,所以需要一个个的算了。这里有一个偷懒的函数,c++的algorithm库中的全排列原创 2012-11-05 00:23:29 · 2058 阅读 · 0 评论 -
sicily 1029 Rabbit
我就比较水,直接模拟整个过程,因为m值不大。每个模拟过程:k[m] = k[m-1]; //一个月过去了,孩子们长大一岁了!...k[1] = k[0];parent = parent + k[m]; //孩子都长大了,能生孩子了。这加法需要用高精度k[0] = parent; //新生的孩子们长大的过程一直循环就可以搞定了。#include #include原创 2012-11-04 22:56:59 · 912 阅读 · 0 评论 -
sicily 1153 马的周游问题
比1152的数据量大了,所以需要有一定的策略。在这里使用的是dfs+启发函数。这里的启发函数指当前位置下一步能到达未被访问的位置个数。策略就是先对下一步能到达未被访问位置的个数最少的进行dfs,这个可以理解成是选择代价最小的先搜索。因为下一步能到达的未被访问的位置个数越少,那么后继产生的结点越少,展开的树子结点就相对较少,因此对于搜索速度是有一定提高的。http://soj.me/11原创 2012-11-03 11:10:55 · 1027 阅读 · 0 评论 -
sicily 1762
题目:http://soj.me/1762这题其实只要想清楚就不难的了。就是按什么规则来选择哪两行或者哪两列直接是否该间隔。我的规则就是记录每两行或者两列有交谈的对数。当然按题意,会把这个记录在行号或者列号较小的地方。//===================#include #include using namespace std;struct原创 2012-11-02 19:51:27 · 497 阅读 · 0 评论 -
sicily 1464
水题,直接枚举,不多解释//================================#include using namespace std;int main(){ int i, j; int a, b, aa, bb; for (i = 100; i for (j = 100; j //j == i原创 2012-11-01 21:09:58 · 596 阅读 · 0 评论 -
sicily 1001 Alphacode
这题一开始没想到dp(动态规划),所以弄了好久好久。后来看别人的blog,知道是dp,就根据推导公式写,结果还是写错,后来发现原来是自己少处理当前某个位置的数为0的情况。思路:每次新加入一个数字处理时(1)不为0直接拼接的话,那么个数值时可能没变的,如21,原本是3,再加1,可能个数还是1,因为31大于26.此时再考虑另一种情况,那就是跟前一位结合,如果结合后小于27,那么就是cnt =原创 2012-12-10 20:02:00 · 1093 阅读 · 0 评论 -
sicily 1215 脱离地牢
这题有3个要注意的1 题目的output中给出的:注意相遇是指Paris与Helen最终到达同一个格子,或者二人在相邻两格移动后碰在了一起,而后者的步数算他们移动后的步数。我写的时候就忽略了后者,所以导致多次wa。2 在移动完两个的位置后,要先判断Helen的位置是否为#,是的话要先复位,然后再进一步做判断,不然会出错。因为不复位,那么判断是否访问过的位置时就会出错,因为判断的位置不是he原创 2012-12-30 15:19:56 · 2077 阅读 · 0 评论 -
MD5 算法描述
MD5 算法描述第一步,补位: 记录输入数据的原始长度(下面会用到),再对输入的数据进行补位,使得数据的长度(以byte为单位)对64求余的结果是56(即以bit为单位,对512求余结果是448)。即数据扩展至length=K*64+56个字节,K为整数。 补位方法:补一个1,然后补0至满足上述要求。相当于补一个0x80的字节,再补值 为0的字节。这一步里总共补充的字节数至少1个至原创 2012-11-04 09:01:49 · 953 阅读 · 0 评论 -
快速产生素数
//动态的产生素数的同时,利用新产生的素数来判断一个数是否合数#include #include using namespace std;vector prime;bool isPrime(int x){int i = 0;while (prime[i] * prime[i] if (x%p原创 2012-11-01 10:12:40 · 837 阅读 · 0 评论 -
sicily 1003 Go To School
题目链接 http://soj.me/show_problem.php?pid=1003&cid=892DescriptionLucy lives in city GZ. There are N (2 <= N && N <= 100) towns in GZ。There are M (1 <= M <= 1000) two-way roads connecting the towns原创 2013-01-15 09:59:10 · 1133 阅读 · 0 评论 -
sicily 1009 Maximum Module
这题是属于contest里10级算法设计与应用课程练习题2题目链接 http://soj.me/show_problem.php?pid=1009&cid=892 ,不知道还能否访问这个链接。DescriptionThere are N numbers. To form an equation, we could use operator ‘+’, ‘*’, ‘(‘, ‘)’ co原创 2013-01-14 23:23:18 · 868 阅读 · 0 评论 -
sicily 1691 Abundance
这题应该算是水题,不过需要注意一点,就是约数。像4的约数是1,2,4,可不是1,2,2,4。我做的时候忽略了后一种情况,WA了两次才发现。知道这一点后,剩下的就是把中文翻译成代码了.....#include #include using namespace std;int sigma(int n) { int sum = 0; int mid = sqrt((doub原创 2013-01-13 11:56:41 · 766 阅读 · 0 评论 -
sicily 1298 数制转换
这里其实想清楚是不难的。因为是规律题,所以可以列举一些数据,分正数和负数,然后找出规律,这题的规律还好找。如1 = 1, 2 = 1-, 3 = 10, 4 = 11,5 = 1--,6 = 1-0....-1 = -,-2=-1, -3 = -0,-4 = --,-5 = -11,-6 = -10...从上面已经可以看出正数和负数转换后的结果存在对称关系,即转换后的正数1对应负数原创 2013-01-08 23:40:54 · 793 阅读 · 0 评论 -
sicily 1190 Reduced ID Numbers
这题很水,不求解题时间的话,用STL的set来做是无比的简单,就是时间久一点,但还是能过的,毕竟给了2s。要快的话,我是建立一个hash映射,可以最快的找出是否已经存在相同的余数,是的话则m++,进行下一轮的选择。#include #include #include using namespace std;int main(){ int testcase;原创 2013-01-08 22:12:00 · 828 阅读 · 0 评论 -
sicily 1002Anti-prime Sequences
一开始看这题不敢做,因为怕超时,毕竟给的时间是3s。后来就试着做下,发现其实这题并不算难。反正我想到的就是深搜+回溯。结果ac~~~这个题有个地方要注意的就是题目中说all consecutive subsequences of length 2,3,...,d sum to a composite number,是2~d个连续的都要满足,不仅仅是d个。还有就是先生成素数表,因为这题频繁的检测原创 2013-01-04 11:30:26 · 1211 阅读 · 0 评论 -
sicily 1639
题目链接:http://soj.me/1639这是一道不算水题的水题!因为你粗心了就是就不算水题,细心了简直就是超级水题。这里值得注意的是Each string will contain between 0 and 50 characters ('0'-'9', 'A'-'Z'), inclusive.这句话表明可能有49个数字,最后来一个字符,这样的情况即使是long long都无法表示原创 2012-11-01 16:09:27 · 701 阅读 · 0 评论