05 2021 档案
摘要:题目链接:F. Unusual Matrix 思路:我们可以发现,如果不等于那么他们变化的次数一定是奇数次,否则一定是偶数次,而该元素变化的总次数是行变化次数+列变化次数,所以我们通过就能将1行和1列的情况枚举出来,进一步,因为我们知道其他元素的
阅读全文
摘要:题目链接:D. Cleaning the Phone 思路:考虑先将物品按价值排好,然后我们从高向低拿,一旦有拿大于等于m价值的东西,我们就停止。这时候发现如果我们的物品体积都是1的话,现在肯定是最优的答案,现在拿的物品体积一定是最优的。当我们考虑到有体积为2的物品存在时,我们现在肯定是选择某些体积
阅读全文
摘要:思路:发现2x-y实际就是y关于x的对称操作,然后因为我们只有这一种操作,将所有元素放在一个数轴上可以发现,整体平移任意单位对于整体来说并没有影响。又因为我们发现如果原数组中有0,那么我们就可以通过这个操作来求出任意倍数的,进一步的,我们可以求出所有$gcd(x_1,x_2,...,x_n
阅读全文
摘要:题目链接:D. Max Median 思路:二分答案,因为直接找的话肯定是不行的,因为区间共有$\sum_\theta(n2)\theta(n)\(的时间内求出该数组有一段区间中位数要大于等于该数,这个
阅读全文
摘要:题目链接:1516C - Baby Ehab Partitions Again 思路:背包判断是否能够组成,如果不可以,答案显然,否则进行缩放,因为我们处理该规模/GCD的数比我们直接处理该规模的数的好处体现在,将该规模数除以GCD之后,绝对不可能全是偶数的存在,因为如果全是偶数
阅读全文
摘要:题目链接:D. Cut 思路:首先进行双指针求nxt数组,该nxt数组定义是在该点最远能到达的点,求法是利用双指针,如果发现一个数的质因子在前面出现过,那就说明第一个指针已经得到了他的nxt数组答案。求完nxt数组后,本来我的想法是将每一个下标所对应的能到达的位置,就是一条链写入vector,然后利
阅读全文
摘要:水一发题解; 题目链接:902. 最短编辑距离 思路:表示第一个串只看前i个字符,第二个串只看前j个字符,将串1转化成串2的最小操作数,枚举最后一个字符的操作:如果最后一个字符的操作是删除,那么答案为,否则如果最后一个字符的操作是插入,那么答案为$f(i,j-
阅读全文
摘要:题目链接:D. Explorer Space 思路:记忆化搜索。。。。。。。因为他说k步以内并且回到原点,并且可以走回头路,所以一定是找出到在i,j,k/2步能够到达的位置的最小价值,然后原路返回就是最佳答案。 /* -*- encoding: utf-8 -*- ''' @Fi
阅读全文
摘要:题目链接:C. Nastia and a Hidden Permutation 思路:求出1的位置是关键,因为我们一旦求出来1的位置,我们就可以通过n-1次询问确定其他剩余的位置:设1的位置为x,则这样询问:【1 x i n-1】,这样询问首先求$min(1,n-1) = 1,min(a_i,n)
阅读全文
摘要:题目链接:D. GCD of an Array 思路:纯纯的数据结构题目,一看数据范围很显然是维护每一个质数的最小的个数,内的素数个数不超过,所以我们对于每一个素数用一个map来存对于的该素因子的个数,然后用另外一个map存反(其实可以用multiset代替)
阅读全文
摘要:题目链接:A - The game of Osho 思路:SG打表找规律,发现在b为奇数时,0、1均匀分布,b为偶数时且满足n%(b+1) = b时sg值为2,打表程序如下: #include<set> #include<iostream> #include<cstring>
阅读全文
摘要:题目链接:Georgia and Bob 思路:之前是想的是必败态是有偶数个相邻的棋子,因为后手可以通过模仿先手的行为达到平衡,然后就能推出来两个相邻奇数堆是先手必胜,因为先手可以通过移动第二个奇数堆造成必败态。但是后来推不下去了。。。正解应该是将相邻的两个棋子视为一堆石子,那么为什么不将一个石子和
阅读全文
摘要:题目链接:G. The Galactic Olympics 思路:第二类斯特林数,可以用预处理,也可以根据通项公式求解; 通项公式:\(= \sum_{i=0}^{k}\frac{{-1}^{k-i} i^n}{i!(k-i
阅读全文
摘要:题目链接:D. Digits 思路:的每次更新以k为结尾的最大值就好了(最开始的想法是正确的),有一点是因为是乘法,所以必须进行取log操作,让乘法变成加法,才不会爆。然后需要注意的是进行存放方案的操作有些许的麻烦。 #include<set> #in
阅读全文
摘要:题目链接:G.Guide 思路:想了好久。。贪心的想法是在一颗最长链上进行不回溯操作,我们需要一遍dfs标记出最长链,然后进行第二次dfs寻找答案,我们必须让dfs“死”在最长链上,方法是如果一个节点的子节点在最长链上,那么最后再进行dfs操作。然后在dfs中记录当前标记的非最长链上的点的数量,如果
阅读全文