摘要:
题面传送门 感觉这道题比$Ynoi$还卡常。 显然可以直接开$26$个线段树暴力做,复杂度$O(26nlogn)$ 但是这样拿不了几分。 但我们注意到这是权值树。而且所有的权值树的权值之和等于$n$,而我们开了$25n$的空间。所以势必有很大的空间与时间浪费。所以在当前点没有权值时就不必查找,当前点 阅读全文
摘要:
题面传送门 很好的一道构造题。 显然答案就是$0$或者$2$ 因为不存在两行或两列差值大于$1$的。 那么沿着对角线依次左移即可,用一个循环队列实现。 代码实现: #include<cstdio> #include<cstring> using namespace std; int n,m,k,x, 阅读全文
摘要:
题面传送门 把第一类客人转换一下,就是哪个多吃哪个。 第二类客人就是哪个少吃哪个。 很容易发现第二类客人最多能满足$min(a,b)$个,那么剩下的看第一类客人能否满足即可。 代码实现: #include<cstdio> #define max(a,b) ((a)>(b)?(a):(b)) #def 阅读全文
摘要:
题面传送门 又是一道分类讨论的题目。 如果$r>n$,那么其实$k=r$与$k>r$的任何值是一样的,所以可以忽略。而$k=r$又只有一个答案,那么答案就是$\frac{(n-1)n}{2}+1$ 反之,答案就是一个普通等差数列$\frac{(r-1)r}{2}$ 代码实现: #include<cs 阅读全文
摘要:
题面传送门 显然是可以分类讨论的。 如果$n$是奇数,那么我们可以让$1$与$n-1$,$2$与$n-2$组成一对,剩下$n$一对,这样可以组成$\frac{n+1}{2}$对。 如果n是偶数,那么我们可以让$1$与$n$,$2$与$n-1$组成一队。那么可以组成$\frac{2}$ 代码实现: # 阅读全文
摘要:
题面传送门 显然不可以最长路。 司机肯定喜欢走长的路径,所以先把最大生成树跑出来。 然后再最大生成树上跑倍增不就好了? 代码实现: #include<cstdio> #include<cstring> #include<algorithm> #define min(a,b) ((a)<(b)?(a) 阅读全文