- 博客(8)
- 收藏
- 关注
原创 高精度加法 压位
高精度加法 压位 #include <iostream> #include <vector> using namespace std; const int base = 1000000000; vector<int> add(vector<int> &A, vector<int> &B) { if (A.size() < B.size()) return add(B, A); vector<int
2021-07-31 10:34:28 189
原创 2021牛客暑期多校训练营1第一场 A
2021牛客暑期多校训练营1第一场 A题 题目大意 两人博弈,每次一个人从一堆中拿 k 个,同时从另一堆拿 k * s(s >= 0) 个,问谁先不能拿。 10000 组数据,N <= 5000 考察内容 博弈,sg 函数优化 解题思路: 假如当前的状态是(x,y) 如果取走石子后形成(x1,y1)为必败态 那么(x,y)必然不是必败态我们根据这个性质可以得到,得到一个关键点判断是否由(x,y)可以得到(x1,y1),是否有 (x,y)=(x1+k,y1+sk) ,如果得到那么这个点就是必胜点。
2021-07-18 11:23:32 243
原创 并查集+路径压缩
并查集 1.将两个集合合并 2.询问两个元素是否在一个集合当中 基本原理:每个集合用一个树来表示,树根的编号就是整个集合的编号。每个节点存储它的父节点,p[x]表示x的父节点. 问题1:如何判断树根:if(p[x]==x) 问题2:如何求x的集合编号 while(p[x]!=x) x=p[x]; 问题3:如何合并两个集合 px是x的集合编号,py是y的集合编号 。p[x]=y; 优化:路径压缩,按照秩合并(较少用: 优化效果不明显) 题目: 一共有 n 个数,编号是 1∼n,最开始每个数各自在一个集合中。
2021-07-15 16:18:32 201
原创 lc 997.有序数组的平方
lc 997.有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 示例 1: 输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组变为 [16,1,0,9,100] 排序后,数组变为 [0,1,9,16,100] 示例 2: 输入:nums = [-7,-3,2,3,11] 输出:[4,9,9,49,121] 提示: 1 <= nums.length <= 104
2021-07-14 16:30:34 136
原创 acwing 3764.三元数异或
acwing 3764.三元数异或 题目链接 解题思路:题目要求max(a,b)最小,对于一个数如何分配可以达到这个目的,因为a+b的和为定值,为了使max(a,b)值最小能均分时就均分 1.当c[i]=0 必有a=b=0 2.当c[i]=1 可以使(a,b)=(1,0) 但是这样会导致两个数不等,由于我们需要max(a,b)尽可能的小,当我们第一次不均匀分配之后因为是从高位开始分配的此时 max(a,b)=a,为了使a的值不在变大,将剩下的值都分给b 3.当c[i]=2 能均分就均分,如果a>b已知
2021-07-13 20:13:20 205
原创 acwing 3763数字矩阵
acwing 3763.数字矩阵 解题思路: 对于任意位置的变换都是成对变换相邻元素,变换过程中有传递性(改变一个位置的符号就会改变相邻位置的符号)对应矩阵的各个位置的符号都是可以通过这个特性改变,对于存在奇数个负数进行变化之后,只会剩下一个负数,当只有一个负数要使矩阵和max,对应的就是让矩阵中绝对值最小的数为负 2.实现代码 #include<iostream> #include<cstring> #include<algorithm> using namespac
2021-07-12 21:09:48 113
原创 acwing 3762.二进制矩阵
acwing 3762.二进制矩阵 时间:7月9日 题目链接 解题思路: 对于任意位置的1可以采取3次达到变换的目的,故对于nm的矩阵最多需要3nm次 对于矩阵的中任意选取2*2矩阵都可以采取3次变换任意一个为1的地方,如图所示左上角的变法 对于最后一列和最后一行变法如图所示 为了思路的清晰定义了L的四个方向,以中心点位(i,j)变换的 #include<iostream> #include<cstring> #include<algorithm> using name
2021-07-12 20:41:34 302
原创 acwing 3761.唯一最小数
acwing 3761.唯一最小数 时间:7月8日 题目链接 解题思路:用哈希表统计出现的次数为1的数从中找到最小的数,在出现为1次的数里面遍历就找到唯一最小数 #include<iostream> #include<cstring> #include<algorithm> using namespace std; const int N=200010; int n; int w[N],cnt[N];//w数组用来保存值 cnt用来保存次数 int main() {
2021-07-12 14:06:50 101
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人