思维
蔡于飛
SUSTech
ACMer
展开
-
Gym 102452D Defining Labels 数位数字提取
D - Defining Labels这一题是一个典型的进制转换题,但是如果不知如何转换,则可能做不出来。首先,我们来看一组对应:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 00, 01, 02, 03, ……, 99, 000, 001, 002, ……1, 2, 3, 4, 5, 6, 7, 8, 9,10,11, 12, 13, 14, ……,110,111, 1...原创 2020-02-07 17:17:03 · 596 阅读 · 0 评论 -
CodeForces 922D Robot Vacuum Cleaner 排序
Robot Vacuum Cleaner这一题需要抓住产生“sh”字符串的本质思考,否则茫然无所措。我们首先想到统计每个字符串内分别有多少‘s’和‘h’(分别存在s_num和h_num数组中),为下面的贪心做准备。每个字符串自身含有的“sh”数目是固定的,与它们的顺序无关,我们考虑字符串排列顺序时不予考虑。考虑任意两个字符串a和b:我们知道如果a在b前,那么会产生s_num[a]*h_...原创 2020-02-07 15:50:18 · 126 阅读 · 0 评论 -
CodeForces 933A A Twisty Movement 前缀和
A Twisty Movement这一题最后十秒过题,很惊险刺激,但是它留给我的思考却是没有停止的。看数据范围,必须在O(n²)之内的时间完成,否则超时。很容易想到枚举一个区间的左右端点[L, R],然后将此区间反转,可是翻转之后如何统计答案又是一个O(n)问题。为什么统计答案是O(n)问题呢?因为只有1和2两种状态,我们只要预处理出一个序列的1数量的前缀和与2数量的后缀和,然后从头到...原创 2020-02-07 14:37:15 · 138 阅读 · 0 评论 -
HDU 5935 Car 倒序增数组
Car这一题我做了很长时间,考虑了很多情况。思维题的难度应该属于比既定算法和数据结构还要捉摸不定。我们需要让车子的速度不断递增,又需要总时间最小。首先,容易想到差分,预处理出每一段的距离:diff[0]=a[0], diff[i]=a[i]-a[i-1]这样一来我们就得到每一段的距离,贪心思想希望每一段时间越少越好,最极端的情况就是1。但是若第一段为1,则后面不可以有小于第一段长度的段...原创 2020-02-06 19:23:03 · 156 阅读 · 0 评论 -
HDU 6709 Fishing Master 容斥+贪心
H - Fishing Master这道题当年打网络赛的时候是想了一个策略的,但是训练时忘了,所以重新从更加数学的角度思考了一下。思路:我们总共需要n段钓鱼的时间和n段煮鱼的时间,其总和为nk+∑ti。然而我们有重合的部分需要减去,所以实际需要的时间为——nk+∑ti-重合部分。所以问题变成如何求出最大的重合部分,我们知道显然可以完全利用的时间只有煮鱼时间ti中k的整数倍,即ti%k的那一...原创 2020-02-06 17:08:49 · 212 阅读 · 0 评论