VP A 题分析的太慢了 B 题数据范围很小,却一直xjb乱想其他的东西,直接暴力就过了,想太多了 C 题太脑残了,已经推出来公式,看了半天想不通为什么错,原来是 f[k] = f[k - 2] + (k - 1ULL) * 4 * (k / 2) 加法的时候爆ULL了 D 题写了个DFS,顺序没写 ...
分类:
其他好文 时间:
2020-07-23 01:45:36
阅读次数:
63
题解:用一位数代替标记数组节省空间 class Solution { List<List<Integer>> res = new ArrayList<>(); public List<List<Integer>> permute(int[] nums) { List<Integer> list = ...
分类:
其他好文 时间:
2020-07-22 21:02:31
阅读次数:
87
#A.s1mple 直接做不好做,考虑求出答案数组经过某种变换后的数组,再经过逆变换求出答案数组。考虑求出答案的超集数组。 那么实际上就是钦定一些位置必须选1,其他位置任意的方案数。 假如钦定了一些位置是1,那么可以发现方案数只和每一个极长1连续段有关,于是可以暴力枚举每个极长连续1段的长度,总状态 ...
分类:
其他好文 时间:
2020-07-22 20:39:25
阅读次数:
75
先看B,发现是李超树套线段树简单题。 然而空间比较卡,不敢写。 动态半平面交不会。 再看A,首先以为要字典序排序,但是后来发现是假的。 想了一会发现建出字典树就是简单题,然而由于怕爆空间不敢写。 看C,想到把k提到根,但是之后一点思路都没有。 回头看B发现只需要cdq分治+线段树分治就能把空间去掉一 ...
分类:
其他好文 时间:
2020-07-22 15:48:58
阅读次数:
49
题目链接 #解题思路 询问区间小于某个数个个数显然可以用二分来做,但是如果配合上区间加法就有些复杂了。即使对每个区间排序,用标记来代替修改,但是对于边缘的数据来说,需要暴力修改,而暴力修改后打破区间的有序性。那就暴力修改之后再重新排序~~(没错,就是这么狠(笑~~ #代码 const int max ...
分类:
其他好文 时间:
2020-07-22 11:22:40
阅读次数:
54
可以想到,数组中会出现“断层”,直接遍历一次即可。不存在【1,2,3,4,5】旋转成【5,4,3,2,1】的情况。 暴力法(我感觉还行啊,为什么被叫暴力): class Solution { public int minArray(int[] numbers) { int n = numbers.l ...
分类:
编程语言 时间:
2020-07-22 11:13:53
阅读次数:
50
传送门 题目:可以改变'?'为任意'a'~'z'的字符,可不可以让s有且仅有一个子串为"abacaba"。 思路:暴力就行,枚举每个位置开始7个字符能否组成"abacaba",可以的话在判断此时把这7个位置的字符变成"abacaba"时,s有几个"abacaba"子串。 1 #include <io ...
分类:
其他好文 时间:
2020-07-21 23:02:59
阅读次数:
96
题目链接 #解题思路 题面差不多已经用的算法写到脸上了,不过有个问题就是怎么判断枚举的区间符合条件,如果直接暴力的话复杂度就要乘上q,但是如果用一个变量来计数的话,就能让时间复杂度降下来。 #代码 const int maxn = 1e5+10; int n,m,a[maxn],cnt[maxn]; ...
分类:
其他好文 时间:
2020-07-21 13:37:33
阅读次数:
60
题面 英文题面 题意:有一棵$n$个点的树,每条边的边权是一个一次函数$a_i\times t +b_i$。求对于所有的$t\in [0,m-1]$的树的直径。 \(n \leq 10^5,m\leq 10^6,a_i\leq 10^5,b_i \leq 10^9\)。 题解:首先,最暴力的做法就是 ...
分类:
其他好文 时间:
2020-07-21 01:15:15
阅读次数:
57
解题思路:一开始不知道怎么下手,暴力遍历也没有合适的方法。参考了题解,了解到回溯算法,结合他人的代码,写了出来 借用题解的决策树图: 1 //参考了题解的回溯算法 2 public static List<List<Integer>> combinationSum(int[] candidates, ...
分类:
其他好文 时间:
2020-07-21 01:00:33
阅读次数:
67