摘要: A题: 贪心水题,注意1,1这组数据,坑了不少人 B题: 首先给数组排序,然后问题就可以抽象成找到一个有序数组的上升子序列的最大个数,实现方法有点笨拙(我宁愿称之为巧妙:)) C题: 将二者的计算公式稍作推导就可以发现任意两点要符合要求,只要xy两个坐标只要满足(x||y)的复合命题为真即可。然后至 阅读全文
posted @ 2016-03-13 18:45 Miller_S 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 看完题后能否形成一个清晰思路的关键就在于能否根据题意的描述构建出一个恰当的模型,适合这道题目本身同时又能联系自己之前头脑库中的模型。而对于01背包这类模型来说,形成的关键思维就在想最后一个n,即用一种抽象的语言把最终的结果给描述出来。 01背包的例子就不举了,这里先给出一个简单的01背包变形的例子: 阅读全文
posted @ 2016-03-03 17:40 Miller_S 阅读(1385) 评论(0) 推荐(0) 编辑
摘要: 思路: 这题被坑的不轻。 首先花了一段时间想明白了思路是要找出现次数最多数字,以为这题就这样解决了,结果发现每个数字的最大长度是30,long long都装不下,因此就要用字符串来保存处理。然后在insert的时候进行一下计数就可以了 最关键的地方是struct内的构造函数中,在初始化next数组的 阅读全文
posted @ 2016-02-20 11:23 Miller_S 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 思路: AC了很爽。一开始看题的时候把要求的东西给搞反了,是用字母去找相应的数字出现次数。 只要用数字构建个Trie树,然后将每次输入进来的字母字符串给转换成数字,然后search一下就可以。 其中要注意end和id的灵活运用   AC代码:   阅读全文
posted @ 2016-02-19 11:22 Miller_S 阅读(283) 评论(0) 推荐(0) 编辑
摘要: 思路: 好题,必须记一笔。 这题有两个之前没有接触过的字典树新变形。 第一个是insert的方式,不再只是单单的将一整个单词都插进去,而是从单词的第一个字母开始往后遍历,依次插入第i个字母到末尾的单词,这样做就可以满足题目中“substring”的要求,即将“substring”的问题转换为我们熟悉 阅读全文
posted @ 2016-02-19 10:03 Miller_S 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 思路: Trie树模板的小变形,在模板中有一个思维拓展的点要值得我们注意,就是每一个节点的e值,在本题中他们不再用来标记单词的结尾,而是用来计数,因为对于Trie树的某一个确定的位置,一个给定的单词只能走过一遍,因此这样记录可以确定一个位置被多少个单词给“经过”,然后找前缀的时候只要遍历到的最后一个 阅读全文
posted @ 2016-02-18 09:19 Miller_S 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 思路: 字典树模板题   阅读全文
posted @ 2016-02-17 19:54 Miller_S 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 思路: 二分图判断+最大匹配模板 二分图判断的方法很好想,没有离散的基础凭空给你个图让你判断也很容易想到染色法,简单的介绍下就是用queue来做,标记一个点为x则他所有的邻点都为x',然后递归的执行下去。 接下来会面临一个比较有趣的问题,我们确定现在的图是二分图,然后我们要求它的最大匹配——这里涉及 阅读全文
posted @ 2016-02-15 19:46 Miller_S 阅读(535) 评论(0) 推荐(0) 编辑
摘要: 思路: 首先如果想到了Kruskal算法,那么下一步我们可能马上会想:那我们就从头开始写这个算法吧。然后一写就很容易发现一个问题——如果按照正常的Kruskal算法来做,那么start到end的舒适度中的那个“最小边”就只能是所有边中最小的那个,而这是明显不符合逻辑的事情,所以我们就会接着想,如果不 阅读全文
posted @ 2016-02-15 09:54 Miller_S 阅读(356) 评论(0) 推荐(0) 编辑
摘要: Description Input Output Sample Input Sample Output     阅读全文
posted @ 2016-02-13 14:38 Miller_S 阅读(416) 评论(0) 推荐(0) 编辑