算法练习
文章平均质量分 75
白开水或茶
喜欢宅在家里玩code,也喜欢陪家人出去玩,矛盾又快乐的生活着。
展开
-
zoj 1050 Start Up the Startup
循序渐进,刚开始做一些简单的题热身。这道题大意是有t个test case, 每个case第一个doc是search string, 包含一些term。然后后面有多个doc,计算结果是doc中每个term出现的次数和它在search string中出现次数乘积的方差。题目意思简单,容易处理,但是有三个地方需要注意:1. 删除term中的标点符号,标点符号不进行比较。2. 进行比较原创 2015-08-11 09:23:05 · 286 阅读 · 0 评论 -
西电ACM 1003 亮亮做加法
简单的看就是个加减法的问题,需要注意的是值范围,十进制18位以内需要用long long在存值。两种方法都试了一下,都AC过了。1)都转换成十进制,然后把和再转成b进制。#include #include unsigned long long cal10(int b, char *s){ unsigned long long rlt = 0; c原创 2016-11-25 20:52:08 · 356 阅读 · 0 评论 -
西电 ACM 1001 又是苹果
今天练习的第一道题,问题本身并不复杂,但是要注意时间限制,所以在做行/列交换是不能直接进行值交换,否则会TLE。这里使用辅助数据来做快速交换,只交换行号或列号,以空间换时间哈!这里使用一个小技巧,初始化时把辅助数组都置零。最后取号是如果值为零就返回下标。#include #include #define GET_ROW_ID(x) (r[(x)] == 0原创 2016-11-24 23:01:04 · 464 阅读 · 0 评论 -
西电1002——小W的塔防
下班回家练习一下, 这道题看上去就是个DP问题,状态迁移方程式是f(a,b,c) = max(f(a-1,b,,c) + (t+c*z)*(x+b*y), f(a,b-1,c) + (t +c*z)*(b-1)*y, f(a,b,c-1)+(t+(c-1)*z)*y*b)最后找到最大的值就ok了。算法如下:#include unsigned long long mat[10原创 2016-11-24 22:50:14 · 491 阅读 · 0 评论 -
zoj 1015 fishing net
刚看到的这题的是时候,想用暴力去算。 但是google一下后,发现有陈丹琦的关于弦图的ppt。http://wenku.baidu.com/view/6f9f2223dd36a32d73758126.html?from=rec&pos=0&weight=9&lastweight=2&count=5###最大势算法,先对图进行重新编号,然后求出完美消除序列。AC的代码如下。#incl原创 2015-09-18 17:01:58 · 319 阅读 · 0 评论 -
zoj 1042 W's Cipher
这道题内容比较简单,就是把原字符串分成三组,每组内做right-rotate。刚开始的时候忘记reset中间的数组,所以多次WA,最后加上memset zero后就AC了。因为考虑到ki的值可能比中间数组的长度大一倍以上,所以先做一次取模运算。 代码:#include #include #define MAXS 100int k1, k2, k3;char原创 2015-08-06 12:18:52 · 268 阅读 · 0 评论 -
zoj 1025 wooden sticks
最近在不忙的时候做做zoj上的题,感觉还是挺好玩的。下面是对1025这道题的分析。首先,这道题是一条比较简单的题,核心是求最长非递减子序列的值。这道题每个case的输入是n个stick的l和w,首先按照l和w进行降序排序(l优先级高于w)。然后对排序结果求最长非递减序列的长度,就是问题的结果,代码如下。#include #include #include usi原创 2015-08-06 09:35:39 · 278 阅读 · 0 评论 -
zoj 1102 Phylogenetic Trees Inherited
这题刚开始的时候没读懂题目,不知道怎么计算ancester。 后来在网上搜了别人的代码,用位操作与或和移位来实现的,没看太明白里面的移位的规律。后来自己又想了想,感觉应该是集合运算,如果有相同的char就求交集,否则就求并集。求并集的话肯定有一条边的cost要+1。记着每个序列按字符猪哥计算ancester,否则中间anc数组要设置为[2058][1010][20].一遍就AC了, 思原创 2015-08-18 10:53:05 · 421 阅读 · 0 评论 -
zoj 1101 Gamblers
这道题大意有n个unique的整数,找出其中最大等于另外三个整数之和的数。s = a + b + c, 最大的s。 刚开始因为没有考虑好负数和排除要比较值的情况,一直WA。最后AC的代码如下:开始的时候做循环拿x做上限,一直WA(因为可能存在负数,所以要到n);另外就是每个循环里要跳过x。#include #include #include using name转载 2015-08-13 17:58:48 · 269 阅读 · 0 评论 -
西电ACM 1005 xry111的音频传输
这道题就是求logn的问题,简单的用辅助数据来模拟过程。代码如下,#include int main(){ int i; unsigned long long m[64],n; m[0] = 1; for (i=1;i m[i] = m[i-1] while(EOF != scanf("%llu",&n原创 2016-11-25 20:54:33 · 441 阅读 · 0 评论