文章列表

更好的阅读体验 题单链接 JC0501. Subsequences Summing to Sevens S题目大意给定 $n$ 个数,求最长的一个区间使得区间和能被 7 整除,输出区间长度,若没有符合要求的区间,输出 0 思路先求出这个数组的前缀和,然后对 7 取模,我们发现对于一个合法区间 $[l,r]$,$qzh[l]$ 和 $qzh[r]$ 的值一定相同,因为区间和对 7 取模为 0,问题就转化成了找出 $qzh$ 数组中两个相同的 0~6 出现的最远距离 代码#include<bits/stdc++.h> #define int long...

CF1899F Alex’s whims题目链接 题目大意要求你构造一课 $n$ 个点的树,并且给出 $q$ 次询问使得 每次询问前可以对这棵树断开一个边并于其他一个点相连使得操作后图的仍为树(条件1) 树中存在一条简单路径长度等于每次询问给出的数 $x$(条件2) 若某次询问可以不进行断边重连操作,则输出 -1 -1 -1,否则输出 $u,v_1,v_2$,其中 $u和v_1$ 是原先相连的点,$u和v_2$ 是操作后相连的点 思路由题意可知,构造出的这个树必定满足条件2,假设给出的 $x$ 等于 $n$,那么这个树一定为一条链,我们可以基于这条链来构造 我们首先构造出长度为...

CF1898D Absolute Beauty题目链接 题目大意给定两个长度相等的数组 $a,b$,你可以最多交换一次 $bi,b_j(1 \leq i < j \leq n)$ 的值,使得 $\sum\limits{i=1}^{n}|a_i -b_i|$ 的值最大 思路$|ai - b_i|$ 可以具体为在数轴上的一条左端点为 $a_i$,右端点为 $b_i$ 的一条线段($a_i > b_i$ 的情况下),易知 $\sum\limits{i=1}^{n}|a_i -b_i|$...

CF1898C Colorful Grid题目链接 题目大意给定一个有 $n$ 条水平线和 $m$ 条垂直线组成的网格,水平线从上到下用 $1-n$ 编号,垂直线从左到右用 $1-m$ 编号,$(x,y)$ 表示第 $x$ 个水平线和第 $y$ 个垂直线的交点,当且仅当 $|x_1-x_2| + |y_1-y_2| = 1$时,两点 $(x_1,y_1)$ 和 $(x_2,y_2)$ 相邻 你可以将这个网格上的每条线段染上红色或蓝色,使得存在一个移动次数为 $k$ 的方案使得 起始点为 $(1,1)$,终点为 $(n,m)$ 这个移动方案经过的第 $i$ 条线段的颜色与第 $i-1$ 和...

Codeforces Round 913 (Div. 3)A~F比赛链接 A. Rook题目大意给出国际棋盘中车的位置,求该车一步能走到的位置(车可以横向或纵向移动任意步数) 思路模拟 代码#include<bits/stdc++.h> #define int long long #define in inline #define ri register #define _123hh2 0 using namespace std; in int read() { int x=0,f=1;char...

更好的阅读体验 题单链接 JC0201. 活动安排题目大意有 $n(1 \leq n \leq 1000)$ 个活动,每个活动有开始时间和结束时间,进行一个活动的前提是该活动的开始时间和结束时间的左闭右开区间内没有其他活动,问最多可以进行几个活动 思路经典贪心题目,按照每个活动的结束时间升序排序,能安排上的活动尽量安排上,边安排边统计答案即可 代码#include<bits/stdc++.h> #define int long long #define in inline #define ri register #define _123hh2...

CF1891C Smilo and Monsters题目链接 题目大意给出一个长度为 $n(1 \leq n \leq 2*10^5)$ 的数组 $a_i(1 \leq a_i \leq 10^9)$ ,你可以进行以下两个操作 将其中任意一个数的值减少 $1$ ,并使你的计数器 $cnt++$ , 将其中任意一个数的值减少 $cnt$ ,并使你的计数器 $cnt$ 归零 求使一个数组所有元素归零的最小操作数 思路不难发现,我们可以先把数组中较小的数用第一个操作归零,然后把数组中较大的数用第二个操作归零,这样做最大化利用 $cnt$...

CF1898B Milena and Admirer题目链接 题目大意给出一个长度为 $n(1 \leq n \leq 2*10^5)$ 的数组 $a_i(1 \leq a_i \leq 10^9)$ ,你可以将数组中任意一个数 $a_i$ 分成两个数 $x,a_i-x$ ,求使该数组非严格递增的最小操作数 思路容易发现,无论如何操作,数组中的数都会小于等于数组中最后一个数并大于等于第一个数 所以可以贪心的从后往前遍历数组,碰到 $a{i-1} > a_i$ 的情况就分裂 $a{i-1}$...

CF1899E Queue Sort题目链接) 题目大意弗拉德找到了一个由 $n$ 个整数组成的数组 $a$ ,并决定按不递减的顺序排序 为此,弗拉德可以多次执行下面的操作: 提取数组的第一个元素,并将其插入末尾; 将之前的元素与前一个元素对调,直到它成为第一个元素或严格大于前一个元素 对于一个操作,必须应用这两个操作 例如,如果对数组$ [ 4, 3, 1, 2, 6, 4 ]$执行操作,它将发生如下变化: $[ \color{red}{4}, 3, 1, 2, 6, 4 ];$ $[ 3, 1, 2, 6, 4, \color{red}{4} ];$ $[ 3, 1,...

题单链接 JC0101. Suffix Three题目大意给出 $n$ 个字符串,根据字符串结尾输出每个字符串对应的语言 思路纯模拟 代码#include<bits/stdc++.h> #define int long long #define in inline #define ri register #define _123hh2 0 using namespace std; in int read() { int x=0,f=1;char...