如题目>▽<
Ezzat and Two Subsequences(cf)
链接:
https://codeforces.com/contest/1557/problem/A
思路:
挑大头放前面,剩下的求平均值
1 | int main() |
Moamen and k-subarrays(cf)
链接:
https://codeforces.com/contest/1557/problem/B
思路:
先将原数组排好序,然后依次比较元素组和新数组&a_i&前的数字是否一样,一样的话证明连续递增,可以都划到一个子数组里,不能的话就结束该子数组的划分,总的子数组数目小于等于k就是yes
1 | int main() |
Reorder Cards(at)
链接:
https://atcoder.jp/contests/abc213/submissions/24883689
思路:
行和列解决思路一样,不妨先考虑列,我们需要移到左面每一列都有数字(右面不用管),不难看出,移动的距离为当前列-当前列之前列中有数字的列,所以结果为,当前列-(移动距离)。我们可以使用去重vector来储存每一位有数字的列,用队列进行按序输入
1 | int main() |
Reorder Cards(at)
链接:
https://atcoder.jp/contests/abc213/submissions/24883689
思路:
建图,搜索,使用二维数组进行邻接矩阵的建立,按照题意用dfs跑一遍即可
1 | bool vis[MAX];st |
营业额统计(lg)
链接:
https://www.luogu.com.cn/problem/P2234
思路:
我们需要一个能一边插入,一边求大于等于当前数和第一个小于当前数的数据结构,set完美地解决了我们的需求。一定要注意手动插入第一个数以及最大值最小值(防止查找时越界)
1 | int main() |
队列安排(lg)
链接:
https://www.luogu.com.cn/problem/P1160
思路:
既要插入,又要删除,我们便需要链表来进行存储,为了能快速地找到当前数字的对应位置,我们还需要一个迭代器数组存储位置,接下来就是正常的增删了
1 | using Iter = list<int>::iterator; |