8-1900E - Transitive Graph
摘要:
题意: 思路:tarjan缩点后,对新图DAG进行拓扑dp。 代码: 点击查看代码 #include<bits/stdc++.h> #define int long long using namespace std; const int N=1e6+7; const int inf=1e9+7; t
7-1896C - Matching Arrays
摘要:
题意: 两个数组,对任意排序, 使得,要求输出能满足的数列。 思路: 一个任意排序,相当于两个任意排序,都升序,发现规律, ,满足条件则输出,否则一定不满足。 代码: 点击查看代码 #include<
6-1891D-Suspicious logarithms
摘要:
题意: 思路: 分块 , 先对f(x) 相同的分块, 在对g(x)相同的分块,注意爆long lnog 代码: 点击查看代码 #include <bits/stdc++.h> #define int long long using namespace std; typedef pair<int,in
5-1889B - Doremy's Connecting Plan
摘要:
题意: 思路: 代码: 点击查看代码 #define int long long using namespace
4-1898E - Sofia and Strings
摘要:
题意: 题解:对于有排序操作且不限次数,最好考虑每次只对两个排序,如果t中的字母在s中的j位置,则s[0,j]之间小于t中字母的字母都要消去,用队列存s中字母的位置,扫描t,每次用s中剩余位置最小的,在消去不可用的即可。 代码: 点击查看代码 #include <bits/stdc++.h> #de
3-1899G
摘要:
题意:多次查询,每次给你数组的一个区间,和树上的一个点,问数组这个区间有没有的子节点。 题解: 树上每个点子节点的dfs序一定大于它,并且,可以处理出每个节点,子节点dfs序的区间。 问题转化成,所查询区间有没有值在区间【xl,xr】的,可持久化树状数组,可以实现,但是会很麻烦,
2-1791F
摘要:
题意: 思路:首先发现对于每一个数,最多被只会被操作3次,就会变成1。可以用线段树,维护区间和,如果区间和等于区间长度,则无需操作,时间复杂度为3nlog(n); 考虑到线段树的代码太多, 也可以,现予处理出每个数的前三次操作,用树状数组,记录每个点的操作次数。 代码: 点击查看代码 #includ
1-1875D - Jellyfish and Mex
摘要:
题意: 有一个长度为的数组,每次删除一个数直到删完,求每次删除后数组的mex的和的最小值。() 思路: 排序后,只有从0开始连续的数在会有贡献,对于连续的数,如果要消去他的对答案的贡献,只有全部去掉才行,考虑n的范围小于
c++入门基础
摘要:
c++打算法竞赛的优点是,输入输出比较方便,里面封装的stl库可以直接用,例如sort排序,直接一行代码就行了,时间复杂度也很友好。 整数: 输入: 输出: 小数: 输入: 输出: 数组: 输入: 输出: 字符串: 输入: 输出: 结构体: 输入输出: 模板: 点击查看代码 #include <bi