算法题
文章平均质量分 87
8rfuz
这个作者很懒,什么都没留下…
展开
-
omp
int layer_for = 2;int each_task_size_for = 100000 / 20;int num_threads = omp_get_max_threads();// int num_threads_limit = omp_get_thread_limit();//编不过?printf("多线程:%d\t%d\n", num_threads);omp_set_num_threads(num_threads);#pragma omp parallel num_th..原创 2020-08-05 09:56:16 · 272 阅读 · 0 评论 -
1525 重组公司
51nod 1525 重组公司codeforces 562D 566D Restructuring Company两个并查集。一个并查集用于维护 部门合并另一个用于维护第二种操作的线段合并。 线段附加一个属性,为该线段最右端的位置。两个并查集均能采用 按秩优化 与路径压缩。从而复杂度为 接近线性。 O((n+q)原创 2016-10-26 15:37:04 · 647 阅读 · 0 评论 -
1526 分配笔名
51nod 1526 分配笔名此题关键点在于,如何找到最佳匹配方式。有个贪心策略就是: 一共n*n对名字匹配中,找到匹配质量最好的那个,定下来。然后再在余下的名字中继续匹配,不断进行,直至匹配结束。我对该策略正确的证明思路就是 反证法,不知道有其它好的证明方法么。证明思路:假设存在某种最佳策略,那么我总能对这个最佳策略进行修改,使之匹配原创 2016-10-28 15:43:50 · 579 阅读 · 0 评论 -
51nod 1489 蜥蜴和地下室
51nod 1489这一题这次秋招里好像有道也考到了相同的题。题解:dfs或是dp,思路都是相同的。 最坏情况下需要考虑遍历的状态是一样的,从而算法复杂度是一样的。f[i][j][k]表示对前i-1个敌人直接火球攻击所需的火球攻击数, j,k表示第i-1与i标号的敌人的生命剩余。然后进行状态转移。遍历i,j,k状态原创 2016-11-02 14:10:42 · 662 阅读 · 0 评论 -
51nod 1616 最小集合
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1616该题目的就是找到集合内的数的所有最大公约数。题解:1. 首先容易证明:x是集合内的数一定是当且仅当,x为初始给定的集合内的n个数中的某几个数的最大公约数。2.若令f(x)代表集合内能被x整除的数的个数。那么若某个数y,集合内有f原创 2016-11-02 16:23:19 · 762 阅读 · 0 评论 -
1531 树上的博弈
51nod 1531 树上的博弈树型dp1. 建树,复杂度O(n)2. 自下向上dp, 复杂度O(n)记录状态量: 当前该棵子树 分配m个数,答案是第k小数 。 进行状态转移由于有先后手,并且有 分配希望 最大与最小 两种前提。因此2*2=4种状态,不过最大最小是对称关系,因此可以只计算其中2种,另2种根据对称求解。转移方程草稿:原创 2016-11-21 15:43:00 · 683 阅读 · 0 评论 -
网易笔试题 混合颜料
你就是一个画家!你现在想绘制一幅画,但是你现在没有足够颜色的颜料。为了让问题简单,我们用正整数表示不同颜色的颜料。你知道这幅画需要的n种颜色的颜料,你现在可以去商店购买一些颜料,但是商店不能保证能供应所有颜色的颜料,所以你需要自己混合一些颜料。混合两种不一样的颜色A和颜色B颜料可以产生(A XOR B)这种颜色的颜料(新产生的颜料也可以用作继续混合产生新的颜色,XOR表示异或操作)。本着勤俭节约的原创 2016-09-18 11:19:55 · 1735 阅读 · 0 评论 -
51nod 异或凑数
此题是一道有关 异或的秩的题目,已经有解题报告了,不过感觉解题报告里没看到 严格的证明,所以记录下自己的思路。这道题要算给定区间内能否存在数异或成给定的数K。首先数目达到500000,所以要考虑线性算法,当然nlogn也是可以的,不过一般都是希望O(n)。一开始没什么思路,不过后来发现给定区间里的选择的数的数目不定,并且并不要求连续,还觉得比较困难。想到异或有性质就是 秩原创 2016-12-08 11:50:07 · 460 阅读 · 0 评论 -
51nod 1588 幸运树
51nod 1588 幸运树codeforces lucky tree这一题第一眼看去就认为是树形dp,然后推出公式,时间复杂度O(n)*check lucky的代价,最多9。并且可以对公式化简合并,得到简洁的形式。然后就没继续想下去了,直接套模板了。然后才发现解题报告里有另一种方法,考虑了一下,该方法才更接近问题的本质,将问题转化为遍历联通块了,即可得到最终答原创 2016-12-14 11:25:30 · 667 阅读 · 0 评论 -
51nod 1608 管道安装
51nod 链接 点击打开链接codeforces 115C 链接 点击打开链接本题求放置水管的方式的总数。管道就4个,而且管道的出口都是一边竖直一边水平。分析后可以发现,水平方向与竖直方向可以分离开来进行考虑。对于特定的一种放置管道的方式,可以按如下方式进行转化为0,1矩阵:只考虑竖直: 令向上开口为0,向下为1,则化为0,1的一个矩阵。 上下方向0,1原创 2016-12-30 14:29:35 · 393 阅读 · 0 评论 -
google bad horse
google bad horse此题大意就是: 给定m对不相容的 对象, 问是否存在某种分成2部份的方法,满足不相容的对象分别在两边。设字符串最大长度len思路:分成2部分,那么就设为类1,类2。不相容就让2顶点相连有条边。 然后初始让某点属于类1,从某点开始遍历图,然后看是否会有矛盾产生。因此很简单。遍历算法复杂度应该是 O(m)。但这道题原创 2016-11-05 23:54:09 · 519 阅读 · 0 评论 -
1434 区间LCM
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1434这道题做完后才被人发现难以证明方法的正确性。最后证明方法的正确性转化为 证明质数存在定理:“[3/4n,n]区间里是否一定存在一个质数”。只要这个命题对于充分大的n一定成立,那么,方法就是正确的。很可惜,我找不到相关的资料来帮助证明这个命题原创 2015-09-25 17:17:48 · 619 阅读 · 0 评论 -
1448 二染色问题
二染色问题想找到比较好的方法,最后还是没找到,所以最后用了最暴力直接的方法。逆向操作,不断找kXk的纯色正方形,作为最后一次覆盖的正方形,然后只要能恢复成最初的状态就行。(就是(N-k+1)(N-k+1)的正方形全部都是纯色)判断kXk的正方形是否纯色的方法,我直接用最简单暴力的方发,记录正方形里的W,B颜色数目,只要其中某种颜色数目变为0,说明纯色。原创 2015-11-23 16:47:13 · 407 阅读 · 0 评论 -
1317 相似字符串对
51nod:相似字符串根据题意要求所有满足题意的相似字符串对数,相似字符串对满足A+C=C+B,进一步分析能得到A,B字符串必须满足A=D+E,B=E+D。这时候只要构造满足要求的A,B。可以看出,A有K^N种情形,B只要根据A进行对应的变化就行(将A前后两部分对调位置),不过可能出现重复情形。这时候只要想办法剔除重复情形,分析出现重复的情况,即F=G+H,I=H+G,F=原创 2015-11-22 18:27:09 · 651 阅读 · 0 评论 -
codeforces 543C C. Remembering Strings
51nod:好记的字符串题意:给定n个长度为m的字符串。为了让每个字符串变为独特的(该字符串的某一个位置存在一个字符ch,其他串的这个位置都不存在这个字符ch),你可以改变某些字符串的某些字符。现在告诉你改变每个字符的代价,求让所有的串成为独特的串的最小代价。分析:定义dp[bitmask],bitmask的二进制中的1表示该位表示的字符串是独特,dp[bi原创 2015-11-20 16:28:20 · 590 阅读 · 0 评论 -
1441 士兵的数字游戏
看懂题目后就知道,其实这道题就是求区间[1,a]内的所有数的质因子个数之和。方法利用线性筛素数的方法,可以以O(n)的复杂度求出所有素数。同时对程序稍作变动,就可以在求素数的同时求质因子个数,并累加#include//using namespace std;const int MaxPrimNum = 183072, MaxSize = 5000001; //, M原创 2015-10-21 11:20:31 · 688 阅读 · 0 评论 -
1437 迈克步
51nod题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1437有n只熊。他们站成一排队伍,从左到右依次1到n编号。第i只熊的高度是ai。一组熊指的队伍中连续的一个子段。组的大小就是熊的数目。而组的力量就是这一组熊中最小的高度。迈克想知道对于所有的组大小为x(1 ≤ x ≤原创 2015-10-14 09:57:53 · 921 阅读 · 0 评论 -
1436 方程的解数
51nod网站http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1436这道题的方法很简单,关键在于这道题有很多角度都能切入思考,能不能快速想到合适的解法。方法步骤:将k化为二进制,则对应bit位置若为0,则a1,a2,...,an相应的bit位设为b1,b2,...,bn原创 2015-10-12 15:47:51 · 653 阅读 · 0 评论 -
犯人取豆问题
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作者:曾加链接:https://www.zhihu.com/question/19912025/answer/45715210来源:知乎五个囚犯先后从100颗绿豆中抓绿豆。抓得最多和最少的人将被处死,不能交流,可以摸出剩下绿豆的数量,谁的存活几率最大?提示:1、他们都是很聪明的人;2转载 2016-01-22 15:39:43 · 948 阅读 · 0 评论 -
The Egg-Drop Problem
直接从网上拿图片来了,简单方便只要枚举第一次扔的楼层号,然后取最好的情形即可。最后列出递推公式,本来想试着找通项公式的,暂时以失败告终。不过,在找资料过程中,发现了另一种角度思考这个问题。上面的思路是,n层楼m个蛋寻找最佳次数。而现在的思路是,m个蛋扔k次,最多能判断多少层楼。令f(m,k)为m个蛋扔k次最多能判断的楼层数目。f(原创 2016-01-23 21:47:19 · 1182 阅读 · 0 评论 -
树形dp 二叉树版本与多叉树版本
#includeusing namespace std;#define maxlen 100001#define maxlen1 101//int s[maxlen];int c[maxlen][5];int myarray[maxlen];//int father[maxlen];bool is_visited[maxlen];long long result[maxlen原创 2016-10-10 14:44:15 · 449 阅读 · 0 评论 -
1281 山峰和旗子
原题链接:1281 山峰和旗子由题意可得: k(k-1)+3由公式能准确得出k的范围。 比较粗的估计就是 k也就是说,k的量级为sqrt(n)量级首先是输入与预处理部分,复杂度O(n)然后,对于每一个范围里的k,都一个个试过去,可以二分,所以复杂度为log k次,每次为k所以该过程总复杂度为klogk ,即时间复杂原创 2016-01-21 20:29:37 · 460 阅读 · 0 评论