自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 Educational Codeforces Round 93 (Rated for Div. 2)

Educational Codeforces Round 93 (Rated for Div. 2)A. Bad Triangle题解:其实这个题很水的…之前做过一个给出你四个数让你组三角形,这一次就是要求不一样。我们已知a序列是一个非递减序列,那么如果a种存在题目所说的BT的话,那么一定包括a[1]和a[2],因为不管i,j取何值,相加后的结果一定是:a[i] + a[j] <= a[1] + a[2],所以用a[1]和a[2]凑出这个BT三角就完了。AC代码:#include<i

2020-08-28 23:16:09 107

原创 AcWing 110 防晒

题解:emmm这个题目是一个贪心的问题,但是一开始理的不是很清楚…首先这个题目提供两种方法,一种是一般贪心,还有一种就是使用了一下优先队列,其实原理都是一样的。法一:我们把奶牛的minSPF从大到小排序,然后再对防晒霜按照SPF降序排序,这样我们对于每个奶牛都去选择SPF最大的那个防晒霜。可以证明的是:对于前面的奶牛,如果这个防晒霜的SPF大于minSPF,那么之后的奶牛一定也满足这个条件。也就是说,当前奶牛可用的任意两瓶防晒霜x,y,如果SPF(x) > SPF(y),那么对后面的奶牛就一定

2020-08-28 15:22:52 200 1

原创 AcWing 109 天才ACM

题解:这个题目应该说是一道综合性很强的题。首先,如果要求这个集合的校验值最大,那么肯定是排序以后最大的和最小的匹配,次大的和次小的匹配,其次还要考虑,如果二分区间,那么很有可能出现校验值T的值本身比较小,但是二分是在整个区间上开始的,所以可能出现第一次二分就查询了(N - L)/2这么长的一段但是最后右端点只拓展了一点点的情况,这样会导致时间冗余。所以我们要考虑用倍增解决,这样倍增算法的复杂度为O(logN),加上之前排序的复杂的,整个算法的复杂度大概在O(N∗log2N) O(N * log^2N)

2020-08-28 11:44:18 121

原创 AcWing 108 奇数码问题

题解:我们把给定序列按照次序排成一列,我们可以发现,当空格左右移动时,整个序列的逆序对数不受影响,但是当空格上下移动时,我们可以发现其实就是被交换的数和他前后的n - 1个数调换了次序,我们已知n是一个奇数,那么n - 1必然是一个偶数,相应的逆序对的变化也会是一个偶数,所以我们判断的依据就是:两个序列的逆序对数是否奇偶性相同。AC代码:#include<iostream>#include<cstdio>#include<cmath>#include<a

2020-08-25 19:29:46 114

原创 AcWing 107 超快速排序

题解:其实题目就是说了一个冒泡排序,但是肯定不能直接就用冒泡了…如果要求求解一共需要交换多少次次序,那就可以使用归并算法,直接计算逆序对就可以。AC代码:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#define ll long longusing namespace std;const int

2020-08-25 17:27:01 107

原创 AcWing 105 七夕祭

题解:这个题目是一个综合性很强的题目,可以类比为环形分纸牌的问题。我们注意到对于每一行上的相邻元素,交换次序后只会影响到每一列的结果,同样的交换每一列上的相邻元素影响的也只是每一行的结果。所以我们可以把行和列分隔开分别讨论。但是不管对于行还是对于列,我们都需要满足 K % N(M) = 0不然肯定无法均分到每一行每一列上。我们可以先在原数组中处理一下,对于每一行每一列的摊点数目,我们都先预处理为A[i] = A[i] - k/m(n),这样就相当于要把所有的A[i]都变成零,我们知道对于一般均分纸牌的

2020-08-25 13:08:46 119

原创 Codeforces Round #655 Div2题解

A.Omkar and Completion题目描述要求你找出一个序列a,满足序列a对于任意的x,y,z都满足:ax+ay≠aza_x + a_y ≠ a_zax​+ay​​=az​并且满足ai <= 1000题解:一开始我还想打个奇数表啥的…但是看见元素值要求小于1000就放弃了,因为第1000大的奇数早就爆了…其实这个题很简单,都是1不就好了QAQAC代码#include<iostream>#include<cstdio>#include&lt

2020-08-23 23:01:57 218

原创 Codeforces Round #665 Div2题解

A.Omkar and Completion题目描述要求你找出一个序列a,满足序列a对于任意的x,y,z都满足:ax+ay≠aza_x + a_y ≠ a_zax​+ay​​=az​并且满足ai <= 1000题解:一开始我还想打个奇数表啥的…但是看见元素值要求小于1000就放弃了,因为第1000大的奇数早就爆了…其实这个题很简单,都是1不就好了QAQAC代码#include<iostream>#include<cstdio>#include&lt

2020-08-23 22:59:57 89

原创 Codeforces Round #665 (Div. 2) 题解

Codeforces Round #665 (Div. 2)A. Distance and Axis题目描述:现在在一个数轴上给出一个A点,并要求你找出一个满足的点B,使得OB和AB满足:∣OA−AB∣=k|OA - AB| = k∣OA−AB∣=kn是给出A的坐标,k是上述距离。如果没有办法找到,允许改变A的坐标,即对A的坐标值+1或者-1。问要找到这个B点需要进行多少次操作。题解:这个题目分为这样几种情况考虑:n = 0,这时ans = k(因为A点和原点重合,所以说我们就需要

2020-08-23 22:59:02 105

原创 Codeforces #665 Div2 题解

A.Omkar and Completion题目描述要求你找出一个序列a,满足序列a对于任意的x,y,z都满足:ax+ay≠aza_x + a_y ≠ a_zax​+ay​​=az​并且满足ai <= 1000题解:一开始我还想打个奇数表啥的…但是看见元素值要求小于1000就放弃了,因为第1000大的奇数早就爆了…其实这个题很简单,都是1不就好了QAQAC代码#include<iostream>#include<cstdio>#include&lt

2020-08-22 16:31:51 116

原创 Luogu P1591 阶乘数码

题目描述:在n!的数位中存在多少个正整数m?题解:首先n的取值范围是1000肯定爆炸…必须上高精度看一看就是高精度 * 单精度的操作了。AC代码#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>using namespace std;const int maxn = 1e6 + 13;int a[max

2020-08-14 12:23:08 149

原创 Luogu P1372 又是毕业季

题目描述:给出你1~n这n个数,找出k个数使他们的gcd最大。并输出这个gcd。题解:如果这k个数的最大公因数是x,那么就需要满足:x∗1,x∗2,x∗3.....x∗k∈nx * 1,x*2,x*3.....x*k ∈ nx∗1,x∗2,x∗3.....x∗k∈n那么我们希望x * k无限靠近n,所以就有了答案n / kAC代码:#include<iostream>#include<cstdio>#include<cstring>#include&l

2020-08-13 14:54:03 73

原创 Luogu P1143 进制转换

题目描述:给出一个n进制数,要求你将其转换成m进制数。题解:裸的板子题,进制转换套个板子就行,我是用的十进制作为中间值转换的。AC代码#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<cmath>#define ll long longusing namespace std;char a[50];int main()

2020-08-13 12:04:16 110

原创 Luogu P1595 信封问题

题目描述:有n封信和n个信封,现在这n封信全部放错了,请问一共有多少种放置方法?题解:典型的错排问题。我们用dp的思维去解答:我们假设dp[i]表示i封信错排的方法:1.我们先放第n封信,这样就有(n - 1)种放法。2.我们假设第n封信放在了第k个信封里,那么我们继续放第k封信。3.如果第k封信放在第n个信封里,那么对于剩下的n - 2封信就是有dp[n - 2]种方法。4.如果没有放在第n个信封里,就是dp[n - 1]种方法了。所以最后的式子就是:dp[n]=(n−1)∗(dp[n

2020-08-13 11:34:15 264

原创 Luogu P1044 栈

题目描述:给出一个输入序列一个中间操作栈,以及一个输出序列,现在需要你求出给定的1 ~ n的输入序列通过栈出栈入栈操作后可以得到多少种不同的输出序列。题解:这个题需要一个数论知识储备:卡特兰数什么意思呢,我们定义:h(0) = 1;h(1) = 1,那么满足:h(n)=h(0)∗h(n−1)+h(1)∗h(n−2)+......h(n−1)∗h(0) h(n) = h(0) * h(n - 1) + h(1) * h(n -2) + ......h(n - 1)*h(0)h(n)=h(0)∗h(n

2020-08-12 21:57:41 109

原创 Luogu P1029 最大公约数和最小公倍数

题目描述:现在给你两个整数:x和y,现在需要你找出这样的一对数据P,Q满足:gcd(P,Q)=x gcd(P,Q) = xgcd(P,Q)=x lcm(P,Q)=y lcm(P,Q) = ylcm(P,Q)=y现在问你最多可以找出多少对。题解:这个题需要一点数论知识:gcd(x,y)∗lcm(x,y)=x∗y gcd(x,y) * lcm(x,y) = x*ygcd(x,y)∗lcm(x,y)=x∗y所以接下来我们需要的就是枚举P * Q的所有约数,然后判断是否满足gcd(P,Q) = x即可

2020-08-12 18:53:53 165

原创 2020牛客暑假多校训练第十场题解

2020牛客暑假多校训练第十场题解A Permutation题目描述:给出一个素数p,要求你找出一个1~p - 1的排列满足对于任意一个i:xi+1≡2xi(modp)x或者xi+1≡3xi(modp)x_{i+1}\equiv2x_i\pmod p x 或者 x_{i+1}≡3x_{i}(modp)xi+1​≡2xi​(modp)x或者xi+1​≡3xi​(modp)题解:其实就是,先找2的序列然后如果不合适换3,如果都不合适那就退出AC代码#include<iostream&g

2020-08-12 17:55:48 191

原创 2020牛客暑假多校集训第九场题解

2020牛客暑假多校集训第九场题解A Groundhog and 2-Power Representation题目描述:其实就是给出一个计算式的emmmm括号表达方法?比如137=27+23+20137 = 2^7 + 2^3 + 2^0137=27+23+20那么用给定的表达式描述就是 :137=2(2(2)+2+2(0))+2(2+2(0))+2(0)137=2(2(2)+2+2(0))+2(2+2(0))+2(0)137=2(2(2)+2+2(0))+2(2+2(0))+2(0

2020-08-12 17:54:46 184

原创 Codeforces Beta Round #1B Spreadsheets

题目描述:大家都见过的excel列表或者说二维数组,对于行和列的描述我们给出以下两种方式:1.RxCy型,R代表row,C代表column,x和y分别表示两个整数。2.Mx型,M表示一个由大写字母表示的字符串,A规定为1,Z规定为26,而AA规定为27,AZ规定为52,依次类推,代表column。x表示一个整数,代表row现在需要你实现这两种表达方式的转换。题解:其实就是一个26进制的转换问题,不过如果不用sscanf可能会很麻烦…QAQAC代码:#include<iostream&g

2020-08-07 16:23:43 103

原创 AcWing 201 可见的点

题目描述:在一个平面直角坐标系的第一象限内,如果一个点(x,y)与原点(0,0)的连线中没有通过其他任何点,则称该点在原点处是可见的。比如下面的图示:这个里面(1,0),(1,1),(0,1)就是可见的,而(2,2),(1,2)就是不可见的。编写一个程序,计算给定整数N的情况下,满足0≤x,y≤N的可见点(x,y)的数量(可见点不包括原点)。1≤N≤1000题解:首先对于任意的x,y,都会存在三个点满足:(1,1),(1,0)和(0,1)。其次,观察到所有满足题目条件的点都关于x = y对称

2020-08-06 20:19:26 143

原创 Codeforces Round #661 Div3

A.Remove Smallest题目描述:给出了你一个序列a,现在给定一种操作:任意选择序列a中的两个数ai和aj,如果满足:|ai - aj| <= 1那么就可以删除ai和aj中最小的那一个数,如果二者相等,那就可以任意删除一个。现在询问你对于一个序列a,经过有限次上述操作后,有没有可能使a中的元素只有一个。题解:分析可知,满足条件的a序列必须满足:当a从小到大排序后,对于每两个相邻的元素,其大小关系必须满足|ai - bi| <= 1。所以代码就出来了AC代码:#include

2020-08-06 14:01:18 130

原创 2020暑假牛客多校训练第七场题解

数论分块目录 数论分块整数分块另外的不会的东西整数分块[2020牛客暑期多校训练营(第七场)]https://ac.nowcoder.com/acm/contest/5672/H题解:这个题其实难点在于如何看出来是一个整数分块的板子,因为我个人认为若不是看了大家的题解很难把这个题和整数分块相联系,首先做这个题我觉得要很熟悉整数分块的知识,还有处理题目的技巧。先看题目的条件,总结一下:推出第一条结论:只有在满足n=1,n是k的倍数,或者n-1是k的倍数时,(n,k

2020-08-05 20:01:04 222

原创 AcWing 200 Hankson的趣味题

题目描述:已知正整数a0,a1,b0,b1,设某未知正整数x满足:1、 x和a0的最大公约数是a1;2、 x和b0的最小公倍数是b1。Hankson的“逆问题”就是求出满足条件的正整数x的个数。题解:首先这里感谢xyw师哥的现场指导!(没有师哥csdn就不@了)关于这个题目其实就是一个推导转换的过程:gcd(x,a0) = a1 ---> gcd(x/a1,a0/a1) = 1lcm(x,b0) = b1 ---> gcd(b1/x,b0/b1) = 1我们同时发现x/a1是

2020-08-05 19:56:24 250

原创 AcWing 199余数之和

题目描述:给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值。例如j(5, 3)=3 mod 1 + 3 mod 2 + 3 mod 3 + 3 mod 4 + 3 mod 5=0+1+0+3+3=7。题解:这个题目关键在于看出需要用整除分块的知识做。首先对于k mod i我们可以写成:k = (k/i) * p + r所以现在的问题就转换成了如何求(k/i)我们也注意到,比如对于(5,5),我们可以展开写:5/

2020-08-04 23:05:53 215

原创 AcWing.198 反素数

题目描述:对于任何正整数x,其约数的个数记作g(x),例如g(1)=1、g(6)=4。如果某个正整数x满足:对于任意的小于x的正整数 i,都有g(x)>g(i) ,则称x为反素数。例如,整数1,2,4,6等都是反素数。现在给定一个数N,请求出不超过N的最大的反素数题解:首先这这个题需要用到这么几个推论:1.1 ~ N中的最大反质数其实就是1 ~ N中约束最多的数中最小的那一个。2.1 ~ N中的不同质因子数不会超过10,且所有质因子的指数总和不超过30.3.对于一个1 ~ N中的数x

2020-08-04 17:50:55 142

原创 AcWing 197阶乘分解

题目描述:给定整数 N ,试把阶乘 N! 分解质因数,按照算术基本定理的形式输出分解结果中的 pi 和 ci 即可。题解:首先这个题目肯定需要做一个筛子,但是N!的值实在太大,所以直接计算阶乘后打表肯定不现实。但是我们注意道,对于N!,一个质因子p的个数取决于1~N这N个数中有多少个质因子p,最后对于p的答案只需要相加即可那么问题就变成了:如何求1~N中的p的个数?我们知道,在1~N中,p的倍数有,N/p个,但是我们注意到,这N个数中可能有p的平方的倍数、p的三次方的倍数…所以我们需要在此基础上

2020-08-04 12:54:21 255

原创 2020暑假牛客多校第六场总结

2020暑假牛客多校训练赛第六场总结关于比赛:这次题解写的时间有点晚了…还是之前说过的,目前的情况,队伍基本就只能去做几道思维题,算法题还没有开过(主要是思维题做完也就没时间了)。说一下比赛的一些小问题,首先个人感觉队伍默契度在不断提高,但是有时候会集体断思路,导致一个题三个人卡死。其次,队伍普遍的算法功底还不是很理想,比如说碰到一个数位dp三个人就都不知道咋做了…还需要课下好好打磨。然后这次比赛两道思维题的难度还是可以的,没有严格意义上的水题。整体的题目质量还是很好的。题解:Easy Con

2020-08-03 10:37:37 158

原创 AcWing196——质数距离

题目描述:给定两个整数L和U,你需要在闭区间[L,U]内找到距离最接近的两个相邻质数C1和C2(即C2-C1是最小的),如果存在相同距离的其他相邻质数对,则输出第一对。同时,你还需要找到距离最远的两个相邻质数D1和D2(即D1-D2是最大的),如果存在相同距离的其他相邻质数对,则输出第一对。其中L和U的差值不会超过1000000。1≤L<U≤2^31−1题解:这个题目很容易可以想到需要质数筛子,但是可以看到,我们的L,R的值都已经达到了1e10的级别,而我们在判断质数的时候需要用数组对每一个

2020-08-03 10:36:41 212

原创 Luogu P1497题解

题目描述:有一个n * n的方形区域,同时你有k个木牛流马,同时这k个木牛流马有h种颜色,现在规定两个木牛流马不能同时存在于一行或者一列里面,现在问有几种放置方法?题解组合数学问题,这个题目整体的思想还是分步骤进行1.先认为是一种颜色,找出有几种选择位置的方法。2.再对这些木牛流马涂色。如果我们先选择列,那就是有C(n,k)种方法,如果选择列的基础上再去选择就有A(n,k)种方法,然后我们再去选择...

2020-08-02 18:13:03 133

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除