摘要: 1:建图注意是有向图还是无向图,无向开两倍数组 2:看题注意是否为多组输入,多组输入注意初始化。 3:减法取模一定要注意 4:stl中.size()为unsigned如果要计算注意强制类型转换(int) 5:scanf(" %c")之前如果不要读入空格要加上空格符 6:子序列和字串一定要注意区别 7 阅读全文
posted @ 2020-09-11 09:55 hunxuewangzi 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 1 C++初识 1.1 第一个C++程序 编写一个C++程序总共分为4个步骤 创建项目 创建文件 编写代码 运行程序 1.1.1 创建项目 ​ Visual Studio是我们用来编写C++程序的主要工具,我们先将它打开 1.1.2 创建文件 右键源文件,选择添加->新建项 给C++文件起个名称,然 阅读全文
posted @ 2022-06-20 09:39 hunxuewangzi 阅读(142) 评论(1) 推荐(0) 编辑
摘要: 题目描述 题目思路 其实就是找到最大的数然后把他周围相同的点和他一起操作 每个点最多操作$6$次,那么时间复杂度为$nlogn$ 代码 #include<cstdio> #include<map> #include<set> #include<iostream> #include<algorithm 阅读全文
posted @ 2022-04-09 18:23 hunxuewangzi 阅读(57) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题目思路 看一眼数据范围和时间限制,很容易想到复杂度为$O(n\sqrt n)$ 有点不太会写,要采用按照公差大小分类讨论 假如公差小于$\sqrt {10^5}$ 那么直接暴力计算$a[i]=a[i]-(i-1)*d$ 判断哪个数出现的次数最多即可 假如公差大于$\sqrt{10^5}$ 阅读全文
posted @ 2022-03-21 10:34 hunxuewangzi 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题目描述 经过重重笔试面试的考验,小明成功进入 Macrohard 公司工作。 今天小明的任务是填满这么一张表: 表有 n 行 n 列,行和列的编号都从1算起。 其中第 i 行第 j 个元素的值是 gcd(i, j)的平方, gcd 表示最大公约数,以下是这个表的前四行的前四列: 1 1 阅读全文
posted @ 2022-03-08 23:37 hunxuewangzi 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题目思路 假如有$x,y$行出现了相同的元素那么他们的都可以表示为$x^a$ 那么只有类似下面这些行才有交集 \(2,4,8,16....\) \(3,9,27...\) \(5,25,125...\) \(6,36...\) 类似于分组,每组最多$20$行,对于每组求$ans$相加即可 阅读全文
posted @ 2022-03-08 00:05 hunxuewangzi 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 题目连接 题目思路 如果不要去证明这个算法的正确性的话,我认为这只能算是一个简单贪心的dfs 可能一直被它高深的名字骗了没有去深入学习 时间复杂度$O(nm)$ $n$代表点数,$m$代表边数 算法流程大概是如下 参考洛谷的题解 1.从任意一个没有被配对的点x开始,从点x的边中任意选一条边。如果此时 阅读全文
posted @ 2022-03-01 15:28 hunxuewangzi 阅读(34) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题目大意 【问题描述】 小蓝在玩一个叫质数行者的游戏。 游戏在一个 n×m×w 的立体方格图上进行,从北到南依次标号为第 1 行到 第 n 行,从西到东依次标号为第 1 列到第 m 列,从下到上依次标号为第 1 层到第 w 层。 小蓝要控制自己的角色从第 1 行第 1 列第 1 层移动到第 阅读全文
posted @ 2022-02-28 21:37 hunxuewangzi 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题目大意 给定一个长度为 \(n\) 的括号序列,要求支持两种操作: 将$[L,R]$ 区间内的括号全部翻转 求出以$L$为左端点时,最长的合法括号序列对应的$R$ \(1 ≤ n ≤ 10^6 , 1 ≤ m ≤ 2 × 10^5\) 题目思路 首先根据这个数据范围,要想到线段树 当$s 阅读全文
posted @ 2022-02-25 18:20 hunxuewangzi 阅读(383) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题目思路 如果所有元素出现都是偶数次,那么就有办法,否则就没有办法 这个题目感觉构造方法不是很难想 就是每次假设出现了 \(A B CA\) 那么每次消去两个$A$然后中间的字符翻转 如何写很巧妙,我是参考一位大佬的代码 采用从后往前遍历,因为如果从前往后很麻烦 具体实现看代码 代码 #i 阅读全文
posted @ 2022-02-25 11:23 hunxuewangzi 阅读(87) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题目思路 官方题解说的很好链接 本质上就是不管能不能相撞,只要有关联,那么他们的方向肯定相反 那么首先根据方向建图,然后判断是否满足二分图 那么第二步重新建图,跑拓扑排序即可,感觉有点意思 代码 #include<bits/stdc++.h> #define fi first #defin 阅读全文
posted @ 2022-02-21 16:37 hunxuewangzi 阅读(49) 评论(0) 推荐(0) 编辑