posted @ 2015-04-15 17:54 tun~ 阅读(77) 评论(0) 推荐(0) 编辑
摘要:
又被题意坑了...输入的一串数字的含义是第i个数字是第a[i]个发生的。而不是编号为i的历史事件的实际发生顺序。所以第一步要做的是转换,将原始数据转换成编号为i的历史事件的实际发生顺序。然后按照实际的发生顺序在aaa数组中给予权值,这是为了方便之后判断学生的答案中两个数字的相对顺序。#include... 阅读全文
摘要:
#include#includeint bot[30005];//以每个集合最底下的那个立方体作为根节点,初始化为自己本身int sum[30005];//表示以该元素为父亲节点的元素的编号的增量int cisum[30005];//根节点所在集合的立方体总数int num[30005];//记录每... 阅读全文
posted @ 2015-04-11 09:20 tun~ 阅读(83) 评论(0) 推荐(0) 编辑
摘要:
种类并查集,基本思想是每次压缩路径都必须同时更新子节点和根节点的关系,这种关系是通过子节点和父亲节点的关系,以及父亲节点与根节点的关系运算出来。压缩路径的findme();参考了大神的代码,做的第二个种类并查集....#include#includeint cri[100005];//记录每一个元素... 阅读全文
posted @ 2015-04-11 09:05 tun~ 阅读(167) 评论(0) 推荐(0) 编辑
摘要:
菜鸟第一次做这种。想了好一会儿.==首先还是初始化记忆数组,使得每一个元素的初始根节点是自己。然后是对输入的数据进行并集。我们拿出每组元素的第一个作为根节点。每次检测是否已经存在根节点。如果存在根节点压缩该元素通往新的根节点的路径,同时将其原来的根节点接在新的根节点上。第一次WA是因为忽略了剩余元素... 阅读全文
posted @ 2015-04-08 18:02 tun~ 阅读(144) 评论(0) 推荐(0) 编辑
摘要:
并查集思想,初始化每个元素的根节点为本身。求解目标是求解存在几个集合。解决方案:查看有多少个根节点,表现在记忆数组上就是有多少个元素的根是它本身。#include#define M 50005int ji[M];int findme(int a){ while(ji[a]!=a) { ... 阅读全文
posted @ 2015-04-08 16:55 tun~ 阅读(109) 评论(0) 推荐(0) 编辑
摘要:
剩余定理在线性代数里边好像是非常常见的东西,但是学渣还没学过线代所以感觉这种线性叠加非常神奇。题目描述:已知一个数模3余a,模5余b,模7余c,求出这个数的最小值。解答:未知的数用x表示。将x拆分为x1+x2+x3其中x1满足:x1%3 == a && x1%5 == 0 && x1%7 == 0x... 阅读全文
posted @ 2015-02-13 10:49 tun~ 阅读(212) 评论(0) 推荐(0) 编辑