比赛链接
A 字典序最大的子序列
题意就是题目意思,这里贪心的先把最大的字符选为第一个,接着是次大的。
然后这样会有个问题,子序列虽然不要求连续,但是要求按顺序,
所以可以设一个数组a[],a[i]表示i~n间最大的字符,这样就保证贪心不会出问题
#include
#include
#include
#include
#include
B 漂亮的树
给出一些树的高度,问最少修改多少颗树能使这n颗树形成屋顶状(等腰三角形,差值为1)
笔者读的时候脑子抽了想到去算需要修最少的长度了
要尽量少修的话,显然就是找出去掉阶梯性质之后的最多有多少颗树是等高的,也就是把这个形状拍扁。
因为数值有点多所以map哈希吧
#include
#include
#include
#include
#include
C 任意点
对于一些点,如果他们能通过规则连在一起,把他们归到一个点集,
对于两个不能连在一起的点集,根据规则显然只需要再加一个点就能把这两个点集连起来
所以先把所有点归并集合然后算集合数-1就是答案
这里用并查集吧
#include
#include
#include
#include
#include
D k进制数
待补
E 求值
把或的结果丢到set里不断算就行了,因为set内的元素不重复所以实际运算量不会很大
#include
#include
#include
#include
#include
F 选值
题目意思得 a[j]-a[i]<=d,转化过来就是a[i]>=a[j]-d
这样的话只要用二分查找到a[i],然后在i~j-1中选两个数就是符合题目的组合.
#include
#include
#include
#include
#include