摘要: 原题链接 考察:贪心 思路: 任何跨度>1的交易都能变成长度 = 1的交易.设价格 a,b,c. 假设a买入c卖出为最优解. 那么最大收益 = c- a = c-b+b-a.如果b<a,那么b买入更优,与假设不符.所以b一定>=a. 1 #include <iostream> 2 #include 阅读全文
posted @ 2021-02-25 23:16 acmloser 阅读(67) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:图论 思路: 一道和这极像的题目 212. 计数交换 但是计数交换比本题难多了.这道题关键在于发现将序列变成升序的次数就是环的长度-1.用a[i]数组记录第i个位置是什么数,可以发现i与a[i]之间能连成环.用dfs找环长度即可. 或者可以用贪心法,只要不在应该在的位置上就交换. 1 阅读全文
posted @ 2021-02-25 16:10 acmloser 阅读(79) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:双指针 思路: 很明显的双指针裸题,当i往前一步的时候,j要保持在与i在D的距离外. 1 #include <iostream> 2 #include <algorithm> 3 #include <cstring> 4 #include <set> 5 using namespac 阅读全文
posted @ 2021-02-25 15:51 acmloser 阅读(68) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:模拟 错误思路: 完全按题目意思走,暴力模拟.时间复杂度O(1010) ,TLE 正确思路: 压缩处理,记录商店上次处理的时间,用本次的时间-上次处理的时间-1,就是到本次时间该商店应该-1的次数,因为每次都是减去相同的数,所以可以压缩到一起.同理,在某一时刻可能会有多份相同的订单, 阅读全文
posted @ 2021-02-25 12:13 acmloser 阅读(91) 评论(1) 推荐(1) 编辑
摘要: 原题链接 考察:模拟 这道题如果我自己写会写得超繁琐.... 思路: 飞行时间 = 到达时间-出发时间+时差(时差由东向西为减,由西向东为加).可以发现将两次飞行的时间相加再/2就能得到飞行时间. 这题注意记录sscanf的用法,在某些地方非常好用. 注意getline使用前一定要检查是否前面有换行 阅读全文
posted @ 2021-02-25 03:50 acmloser 阅读(64) 评论(0) 推荐(0) 编辑