摘要: 题意: 思路: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 阅读全文
posted @ 2023-11-29 20:24 xxj112 阅读(22) 评论(0) 推荐(0)
摘要: 题意: 两个数组\(a和b\),对\(b\)任意排序, 使得\(a[i]>b[i]的个数为x\),要求输出能满足的数列。 思路: 一个任意排序,相当于两个任意排序,都升序,发现规律,\(让排序后的b数组,循环右移x位置\) ,满足条件则输出,否则一定不满足。 代码: 点击查看代码 #include< 阅读全文
posted @ 2023-11-26 21:25 xxj112 阅读(33) 评论(0) 推荐(0)
摘要: 题意: 思路: 分块 , 先对f(x) 相同的分块, 在对g(x)相同的分块,注意爆long lnog 代码: 点击查看代码 #include <bits/stdc++.h> #define int long long using namespace std; typedef pair<int,in 阅读全文
posted @ 2023-11-22 19:28 xxj112 阅读(37) 评论(0) 推荐(0)
摘要: 题意: 思路: \(i*j*c 越小越有利, 可以让i为1 ,即都与节点1建边, 1节点集合拥有的人越多越有利于于别的集合相连, 对别的点按照,最小要求人数-现有人数=需要人数排序,按顺序连接即可。\) 代码: 点击查看代码 #define int long long using namespace 阅读全文
posted @ 2023-11-21 16:39 xxj112 阅读(20) 评论(0) 推荐(0)
摘要: 题意: 题解:对于有排序操作且不限次数,最好考虑每次只对两个排序,如果t中的字母在s中的j位置,则s[0,j]之间小于t中字母的字母都要消去,用队列存s中字母的位置,扫描t,每次用s中剩余位置最小的,在消去不可用的即可。 代码: 点击查看代码 #include <bits/stdc++.h> #de 阅读全文
posted @ 2023-11-20 20:10 xxj112 阅读(23) 评论(0) 推荐(0)
摘要: 题意:多次查询,每次给你数组的一个区间,和树上的一个点\(x\),问数组这个区间有没有\(x\)的子节点。 题解: 树上每个点子节点的dfs序一定大于它,并且,可以处理出每个节点,子节点dfs序的区间。 问题转化成,所查询区间有没有值在区间【xl,xr】的,可持久化树状数组,可以实现,但是会很麻烦, 阅读全文
posted @ 2023-11-19 16:48 xxj112 阅读(20) 评论(0) 推荐(0)
摘要: 题意: 思路:首先发现对于每一个数,最多被只会被操作3次,就会变成1。可以用线段树,维护区间和,如果区间和等于区间长度,则无需操作,时间复杂度为3nlog(n); 考虑到线段树的代码太多, 也可以,现予处理出每个数的前三次操作,用树状数组,记录每个点的操作次数。 代码: 点击查看代码 #includ 阅读全文
posted @ 2023-11-17 18:31 xxj112 阅读(26) 评论(0) 推荐(0)
摘要: 题意: 有一个长度为\(n\)的数组,每次删除一个数直到删完,求每次删除后数组的mex的和的最小值。(\(\sum n \leq 5000 , a_i\leq 10^9\)) 思路: 排序后,只有从0开始连续的数在会有贡献,对于连续的数,如果要消去他的对答案的贡献,只有全部去掉才行,考虑n的范围小于 阅读全文
posted @ 2023-11-16 15:20 xxj112 阅读(41) 评论(0) 推荐(0)
摘要: c++打算法竞赛的优点是,输入输出比较方便,里面封装的stl库可以直接用,例如sort排序,直接一行代码就行了,时间复杂度也很友好。 整数: 输入: 输出: 小数: 输入: 输出: 数组: 输入: 输出: 字符串: 输入: 输出: 结构体: 输入输出: 模板: 点击查看代码 #include <bi 阅读全文
posted @ 2023-11-03 22:18 xxj112 阅读(84) 评论(0) 推荐(0)
摘要: string 类只能通过 + or += 运算 ,不能对当前范围外的位置赋值 阅读全文
posted @ 2023-10-29 09:38 xxj112 阅读(58) 评论(0) 推荐(0)