A.按照题意模拟即可
#include
#include
#include
#include
#include
#include
#include
#include
B.字典序最小,从小到大找,如果小的数满足条件就输出肯定能保证字典序最小且答案唯一
要保证输出的时候x-i后面的数存在
#include
#include
#include
#include
#include
#include
#include
#include
C.每种颜色只用走一次
#include
#include
#include
#include
#include
#include
#include
#include
D.
找每个正整数贡献,找最大的m个就行了
且这m个正整数按照从后往前的顺序减能保证不影响前面的数
ps:某个憨憨每次找最大的正整数肯定是错的这种贪心
例子 5 4 3 2 1
#include
#include
#include
#include
#include
#include
#include
#include
E.首先每棵树独立
cnt要-1,因为最后一天到中午就输出长度,晚上才增长高度,所以最后一天是不增长的
我是直接先统一变成b,删去变成b所需要的次数
然后找从b到k+1需要多少次增长
设y=从b到k+1需要多少次增长
进行y次后又变成b,所以最后找y的余数即可
#include
#include
#include
#include
#include
#include
#include
#include
F.
最大最小化->二分
判断某些集合是否联通->并查集
所以二分答案,判断的时候把所有合法的边都连起来
最后看集合是否符合条件要求即可
#include
#include
#include
#include
#include
#include
#include
#include
G.
预处理每个不相交的区间
使用单调栈,
但是比如 3 1 2 4 8 6 1
因为从左到右进行单调栈会忽略掉6 1所以最后要从右到左再进行一次单调栈
找出h[x]
这两个端点的区间=当前点右边第一个比他大的数
所以单调栈√
然后直接找这些区间里面的m个最大值即可
#include
#include
#include
#include
#include
#include
#include
#include