自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 D - The Number of Pairs(数论)

题意给你三个正数c,d,x,让你求出有多少对(a,b)满足c∗lcm(a,b)−d∗gcd(a,b)=xc*lcm(a,b)-d*gcd(a,b)=xc∗lcm(a,b)−d∗gcd(a,b)=x1<=c,d,x<=1e7.思路c∗lcm(a,b)−d∗gcd(a,b)=xc*lcm(a,b)-d*gcd(a,b)=xc∗lcm(a,b)−d∗gcd(a,b)=x看到这个式子,我们可能感觉无从下手.我们应该很容易想到lcm(a,b)gcd(a,b)=k\frac{lcm(a,b)}{

2021-03-30 20:03:17 249

原创 C. Planar Reflections(DP)

题意思路昨天晚上没有写出来,当时一直以为是要推公式,我昨天晚上居然看到n=1000的数据没有一点DP的敏感度,主要是自己从来没有怎么好好写过dp。我们可以设dp[i][j]为某个粒子前面还有i个平面,当前的衰变年龄为j.转移方程式也非常的好想。某个粒子向前移动一个平面,会产生一个衰变年龄减一,但是方向相反的粒子,还会产生一个平面减一,衰变年龄不变的粒子。所以状态转移方程 dp[i][j]=dp[i-1][j]+dp[n-i][j-1].代码#include <bits/stdc++.h

2021-03-30 09:51:17 517 2

原创 G - Maximize the Remaining String (思维,贪心)

题意给你一个字符串,要求你把每个字母出现次数多于1的字母删除到只剩一次,问最后留下的字符串字典序最大是什么。思路我们看到这个题可以先思考一下,我们如果想让最后得到的字符串字典序最大,那肯定要按字母从大到小的枚举,就比如字符串bzbz,如果要想字符串最大,那肯定要让大的字母尽量在前面,所以我们应该先删除第一个z前面的b。我们可以算出我们最后得到的字符串的长度,我们刚开始找一个空字符串,然后就根据原字符串来给这个字符串添字母,最后得到的字符串就是原字符串删完以后剩下的最大字符串。我们进行模拟的思路就是

2021-03-29 21:25:22 295

原创 atcoder D Opposite

题意有一个正n边形,n为偶数,给我们n边形的两个点(x0x_0x0​,y0y_0y0​),(xn/2,yn/2x_{n/2},y_{n/2}xn/2​,yn/2​)。思路看了大佬的图,让我对这个题更容易的理解。根据这两个点我们可以求出这个正n边形的外接圆,因为n为偶数,而且我们还能求出圆心的坐标。xmx_mxm​=(x0+xn/2x_0+x_{n/2}x0​+xn/2​)/2ymy_mym​=(y0y_0y0​+yn/2y_{n/2}yn/2​)/2因为我们知道n是多少,我们也可以求出ααα

2021-03-29 09:04:40 157

原创 B.刀工对决(牛客训练赛)

题意给你n组数,每组数一个a一个b。我们可以对a或b进行两种操作,使他们最后相等。第一种操作:a=a/3a=a/3a=a/3第二种操作:a=a∗35a=a*\frac{3}{5}a=a∗53​如果最终没法使两个数相等的话,就输出负-1,如果可以使两个数相等的话输出使用操作的最少次数。思路我们可以把a,b都转换成这种形式a=x∗3m∗5na=x*3^m*5^na=x∗3m∗5nb=y∗3p∗5qb=y*3^p*5^qb=y∗3p∗5q根据这两个公式我们可以发现,如果要想a和b相等,就必

2021-03-28 00:04:45 105

原创 Codeforces Round #710 (Div. 3)

A - Strange Table思路这个就是根据第一个矩阵来求出这个点的横坐标和纵坐标。我当时推的就是l=xl=x%nl=xr=(x−l)/n+1r=(x-l)/n+1r=(x−l)/n+1这个点x的坐标就是(l,r)。然后根据第二个矩阵的性质求出最终结果。代码#include <bits/stdc++.h>#define ll long long#define fi first#define se second#define pb push_back#define

2021-03-26 23:25:10 240

原创 RMQ算法

RMQRMQ是一种可以查询一个区间内最值或者和之类性质的一种算法。我们可能会有疑问,线段树和树状数组不是都可以完成这些操作吗?但是对于RMQ来说,有以下几种优点。优点RMQ算法可以ooo(111)的时间去查询一个区间的情况,而且代码比起来线段树会简单许多。缺点RMQ算法是根据动态规划来预处理出所有的情况,然后才可以实现ooo(111)时间的查询,但是它的缺点也就是它只能静态的,没有修改操作,这一点跟线段树比起来就会显出它的缺点。RMQ模板预处理n=N,m=log(n);int n,m;

2021-03-25 19:41:48 93

原创 滑动窗口(单调队列)

题意给你一个有N个数的序列,让你求出每个连续k个数中的最大值和最小值。K<=N<=1e6.思路我们首先肯定很容易想到的就是用第一层循环去枚举每一个区间,然后第二层循环去找这个区间中的最大值和最小值,但是这样的复杂度是o(n2n^2n2)的,对于这个数据来说,肯定不行的。我们有一种数据结构,叫做单调队列,它可以维护一个固定区间里面的最大值和最小值,在这里我们就可以使用单调队列了。#include <bits/stdc++.h>#define ll long long#

2021-03-25 15:22:59 96

原创 tokitsukaze(牛客每日一题)贪心+优先队列

[题意](https://ac.nowcoder.com/acm/problem/50439)思路我本来自己想的是对s从小到大的排序,然后再进行枚举,每一个点i只能选取比自己s大的值,因为比自己小的值选起来只会让自己变的更苛刻,有可能s比你小的值里面有比你大的v,但是我们不用管,因为我们已经再这之前枚举过它了,它已经形成了自己的最优。每一个点要选的就是s比自己大的,选s-1个v最大的值就行,但是我不知道用什么数据结构来处理,能logn的时间内找到n个数中的最大的s-1个值,看到有大佬用权值线段树,但是我

2021-03-24 20:37:34 186

原创 数学考试(牛客每日一题)变形一

题意给一个长度为n的区间,找两个不相交的区间,区间的长度不确定。思路这个题和数学考试那一题唯一不同的是区间的长度不确定了。在数学考试那个题中,我们是记录了一个maxn[i]来表示i~n中的区间为k的最大值,现在区间不确定了。maxn[i]=max(maxn[i+1],sum[j]-sum[i-1]) j>i.原来j-i的区间是固定的,现在j不确定,但是我们如果想让sum[j]-sum[i-1]的值最大,我们肯定要尽量要让sum[j]最大,所以我们可以在维护一个maxsum[i]表示i~

2021-03-24 14:31:45 119

原创 数学考试(牛客每日一题)

题意给你一个数组,让你求两个不相交的区间,区间的长度是K,求两个区间的和的最大值。思路首先我们很容易的想到用前缀和来优化,然后两层循环来枚举分别找两个最大值,时间复杂度是o(n^2),因为n的数据是2e5,肯定是会超时的,所以我们还需要进一步优化。我们可以用一个maxx[i],来表示i~n中的每个区间长度是K的最大值。maxx[i]=max(maxx[i+1],sum[i+k-1]-sum[i-1]);这样我们就可以一层循环,从前往后枚举每一个K的区间,然后再用maxx[i]求出后面区间的最大

2021-03-24 10:32:15 160

原创 小A与小B(双向BFS)

题意给你一个迷宫,小A和小B在不同的点,小A可以有八个方向走一次(上下左右和斜着),小B可以四个方向走两次。刚开始一直题意没理解对,以为小B每次必须走两次,而且以为必须在同一时间到达同一点才算。思路今天学习了一下双向BFS,这就是一个模板题,用两个队列分别存下他们走的情况,然后再用两个数组存存下来是否他们经过同一个点,如果经过同一个点就输出当前的时间,这就是他们相遇的最短时间。代码#include <bits/stdc++.h>#define ll long long#defin

2021-03-23 21:03:24 205

原创 C - Basic Diplomacy

C - Basic Diplomacy题意思路首先我们可以肯定如果每一天只有一个人的时候就必须选这个人,如果只有一个人的里面,已经有超过m/2上取整的,那就肯定是NO了,如果只有一个人的里面没有超过的,那就一定不会是NO。为什么会是这样呢?我们可以找一个极端情况想一下,假设有8天,只有两个人1和2,如果1已经单独的出现三天了,剩下的天数都是1和2,那我们可以有一个选1,其余的都选2,也不会出现NO的情况。这里说明白以后,我们就从每一天里面判断,那一个人被选的次数最少,我们就选这个人就可以写出这个

2021-03-22 21:25:26 488

原创 B - Restore Modulo

B - Restore Modulo题意思路昨天晚上这个题被一些小细节卡了,一直没过去,今天早上才发现原来恒定的递减也是可以的就比如5 4 3 2 1,m可以是无穷大的。题不难。如果这个数组是以恒定值递增或者递减的话m是可以无穷大的。如果这个数组有递增有递减,我们可以从递增的点找到c,必须保证每一个递增的点都是恒定的c,我们从递减的点找到m,也必须每一个递减的点都是恒定的m,然后我们还需要判断这个m和这个数组最大值的比较,如果数组最大值大于m,那就输出-1,如果小于m,那就输出m和c。#inc

2021-03-22 17:28:36 614 2

原创 51nod 3045 Lcm与Gcd构造

题意给出2个数a,b的 Gcd(最大公约数n) 和 Lcm(最小公倍数m) ,求所有符合条件的a,b中,a + b的最小值。思路代码#include <bits/stdc++.h>#define ll long long#define fi first#define se second#define pb push_back#define me memsetconst int N = 1e6 + 10;const int mod = 1e9 + 7;const int

2021-03-16 20:44:39 298

原创 51nod 1003 阶乘后面0的数量

题意给你一个n,让你求n的阶乘中后面有多少0.n的范围1<=n<=1e9.思路刚开始拿到这个题没有思路,然后看了题解,我们肯定不能直接求,因为n的阶乘后面太大了,我们知道每一个数都可以写成分解质因数的形式,而能产生0的只有2和5这两项,就比如1200=2^4 * 3 * 5^2,有四个2,两个5,0的个数也就是min(2的个数,5的个数)。n的阶乘中,5的幂次一定小于2的幂次,所以问题转换为求n!中5的幂次是多少。小于n的所有5的倍数,都包含1个因子5.但这还不够,因为除了考虑5的倍

2021-03-16 19:58:18 75

原创 Codeforces Round #705 (Div. 2)

A - Anti-knapsack题意让你在1~n中找到尽量多的数,使得其任意几个数的和不等于k。思路取大于等于k/2上取整的数,但是记得要把等于k的数去掉,这样取到的数任意两个加起来都会大于K,当时读题读了半天,真的是吐了,一直没看懂题意。代码#include <bits/stdc++.h>#define ll long long#define fi first#define se second#define pb push_back#define me memsetc

2021-03-14 15:28:35 276

原创 C. Diamond Miner

C. Diamond Miner题意给你n个横坐标上的点,给你n个纵坐标上的点,让横坐标上的点和纵坐标上的点连在一起,每一个点只能连接一次。思路这一题挺简单的,当时就是盲猜就是先排序然后再大的和大的连接在一起,小的跟小的连接一起,但是样例都没有过去,我当时根本就没有想还需要把负数先映射到正数以后再排序,挺可惜的,这么简单题当时都没有写出来。#include <bits/stdc++.h>#define ll long long#define fi first#define se

2021-03-12 14:54:30 186

原创 洛谷 青蛙的约会

青蛙的约会##题意两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面。我们把这两只青蛙分别叫

2021-03-04 21:45:10 97 1

原创 B. Berland Crossword(思维+枚举)

B. Berland Crossword题意给你一个全白的网格,然后要你把最上面一行,最下面一行,最左边一列和最右边一列涂上给定数量的黑色,问是否可以有满足条件的涂法。思路如果最上面的一行涂的数量大于等于n-1的时候它是会影响到左边和右边的情况的,这一题影响我们的顶点只有四个,而这四个顶点最多的情况也只有很少的情况,因此我们可以枚举每一个顶点的颜色情况(黑色或者白色),然后我们还需要判断什么时候可以满足情况。以最上面的一行u为例。u的值必须是大于等于上面左右顶点的黑色的情况的。u也必须小于 n

2021-03-04 16:04:00 492 1

空空如也

空空如也

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

TA关注的人

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