
第七章
sigd
这个作者很懒,什么都没留下…
展开
-
18730 涂色问题 (快速幂的两种写法)
解题思路:组合计算的逆向思维法,发疯方案数F=总方案数S-不发疯方案数N。不发疯方案数计算:第一间牛舍有m选择,第二间有m-1选择,同样第三间有m-1选择 , 总方案数,因此 需要注意的是题目中的n很大,求一个数的n次幂,当n很大时用循环求取会超时,需采用快速幂算法。快速幂是一种典型的分治算法。当我们要求时,可以先求出,那么,同样的道理求取x时,可以先求,再做平方。特别注意,当n为奇数时,递归快速幂模板:long long ksm(ll n,ll m)/**< 求n的m次幂,注意..原创 2022-04-22 09:29:58 · 419 阅读 · 0 评论 -
18725 宇宙迁跃(二分算法)
二分算法是分治算法的一种,注意分治算法有很多子类,比如:折半查找、二分算法,三分算法、分形问题等,第八章的很多排序算法也属于分治算法。二分算法是把问题"解空间"一分为二的算法。它要求答案可以通过枚举的方式解决,同时解空间具有单调性,比如本题目飞船的跳跃能力,如果X能力可以成功,那么X+1、X+2......都可以成功,这就是单调性。解题方法是先设定解空间的范围,比如本题目飞船的能力区间可以设定为[0,a[n]],显然飞船如果具备一次跳到终点a[n]的能力,那么它一定能完成任务。算法模板:定义当..原创 2022-04-25 22:59:11 · 449 阅读 · 0 评论 -
18944 小美的仓库整理
解题思路:这是一个模拟题目。题目要求找到货物i所在的区间,将货物取出,同时区间一分为二。要求输出每次拿完货物之后货物和最大的区间。读者如果之间做过区间排序、区间查找、区间合并类题目对这类问题会有更好的思路。模拟一下,初始区间为(1,n),拿走第i元素后(1,i-1),(i+1,n),显然每次拿走一个货物,区间数量或者多一个,或者数量不变(拿走区间端点)。因此可以用结构体描述区间,按区间右端点进行排序。这样能快速找到i所在区间。找到后将其删除,再将结果(两个分割后区间)放入。涉及删除插...原创 2022-05-06 10:54:48 · 908 阅读 · 0 评论 -
18873 团队实力
解题思路:团队成员中必然有一个人限定值最小。因此枚举这个限定值最小的人。先将所有成员按限定值从大到小排队,然后依次枚举限定值i,枚举时用一个小根堆(优先队列)来存储1...i-1中能力的大值,当枚举到i成员时,根据i成员的限制,将堆中超出限定人数的成员移除出去。那么移除的元素是否后面还会用到呢?因为限定值从大到小,所以i之后的元素限定值会更小,这样就能确定移除不会再被用到。#include <bits/stdc++.h>typedef long long ll;using...原创 2022-05-06 09:36:21 · 400 阅读 · 0 评论 -
19008 哈希表
本题目有set和并查集两种做法。其实这个题目和18770非常相似,当计算出a[i]的哈希值y=H(a[i])时,如果y是空的,那么将a[i]存放在y位置,不然就向后进行线性探测。换句话说找到大于等于y的还没使用过的最小值。因为凡是使用过的位置都无法再次使用,可以理解为将其删除掉。解题思路:先将存储位置0,1,......n-1放入一个set集合,每次对哈希结果y进行查找,如果没有大于等于y的值,那么选择最小值。题目另一个要求输出不冲突的元素数量,如果在set中找到的位置等于y就是不冲突。...原创 2022-04-28 22:49:40 · 308 阅读 · 0 评论 -
18870 最佳搭配
本题目改编自CF 555Problem - E - Codeforceshttp://codeforces.com/contest/1157/problem/E对于set用法可参考(更重要的是要多使用多练习)c++ stl容器set成员函数介绍及set集合插入,遍历等用法举例_c/c++_编程语言_解题思路:经过阅读题目,发现是在数组B中选择合适的值与a[i]相加后对n求余,并使得结果尽可能小。那么最佳情况显然应该在B中选择值恰好为n-a[i],如果不存在n-a[i]这样的值,那么应该是大于..原创 2022-04-28 22:28:21 · 1313 阅读 · 0 评论 -
18907 雪花雪花雪花
一道历史悠久且经典的哈希法例题,哈希法的题目实在是比较少。暴力枚举的话复杂度显然是是,实际上,如果能提前计算出每个雪花的特性,那么属性不相同的雪花就无需进行比较。相当于我们将雪花分成若干个小组(想想世界杯为什么要分小组赛,而不是32个队都两两比一次),每个小组内部两两比较,这样的话复杂度就会降低。假设我们能把n个数组分成X组,每组数据估算为n/X个,组内两两比较。那么算法复杂度为,当X比较大时复杂度会有明显的降低。这样分组使用的方法(哈希函数)就很重要,既要保障X的值稍大一点,又要保证相同...原创 2022-04-26 22:31:17 · 1564 阅读 · 0 评论