自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 牛客暑期多校训练营I—The Crime-solving Plan of Groundhog

题目大意:给定t组数据,每组n个数字,数据总和不超过1000000,将这些数据分成两组,数据构造中不能有前导零,最后使它们的乘积最小题目思路:要让两个数据的乘积最小,则一个是一位数,另一个数为n-1位,先对所有的数字进行从小到大的排列,因为不能有前导零,所以其中一位数字的数据由除零外最小的数字构成,另一个数据由第二小的数据构成首位,然后补上所有的零,再依次递增填上剩下的数字,看到一种很巧妙的方法构造数据,就是在从小到大排列之后,将第一个零和排列之后的第一个非零数交换位置,第二个零和排列之后的...

2020-08-11 23:44:03 171

原创 牛客暑期多校训练营B—Mask Allocation

题目大意:给定n*m个口罩,需要将这些口罩封装成盒, 有n个a类医院,m个b类医院,从这些盒子中可以找到n组口罩,这n组盒子中口罩数量一样多,也可以找到m组口罩,这m组口罩数量一样多,要求分组尽量少,并且字典序尽量大。题目思路:gcd递归构造最优解#include<iostream>using namespace std;long long num,t,n,m,ans[100005];void gcd(int a,int b){ if(b==0) ret...

2020-08-06 22:19:10 182

原创 牛客暑期多校训练营H—Dividing

题目大意:定义(1,k)是传奇元组如果(n,k)是传奇元组的话,(n+k,k)也是传奇元组如果(n,k)是传奇元组的话,(n*k,k)也是传奇元组给定n和k的范围,然后计算有多少个传奇元组(mod 1e9+7)题目思路:设n=xk,x和k中总有一个数字不超过10^6,所以枚举x和k中较小的一个,另一个的个数通过计算获取对于n=xk+1的情况相同,对于n=1的情况,直接进行统计思路为官方题解#include <iostream>using namespace std...

2020-08-04 23:45:11 204

原创 暑期牛客多校训练营

题目大意:给定一个n行m列的矩阵,求一个子矩阵,使子矩阵所有数的和除以子矩阵最后一行的和最大,输出这个比值。#include <iostream>using namespace std;int a[2005][2005],n,m;int t;int main(){ scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); double ans=0; ...

2020-07-30 23:35:51 182

原创 暑期牛客多校训练营I—Hard Math Problem

题目大意:给出一个行为n列为m的矩阵,每个格子都可放置H、E、G,但要求每个H的上下左右至少要有一个E和一个G,求当n、m都趋向无穷大时,能放置的H占总矩阵格数的多少题目思路:GHHEHHGHHEHHGHHEHHGHHEHHGHHEHHGHHEHHGHHEG和E交错排列,然后每个G,E旁边都有一个H,并且G,E不相邻#include<iostream>#include<cstdio>using namespace std;int main(){ pr..

2020-07-30 00:12:59 96

原创 牛客暑期多校训练营E—Easy Construction

题目大意:输入两个整数n和k,要求一个p数组由数字1-n组成,并且存在一个长度为i的连续数组,i属于1-n,这个数组的和对n取模为k,如果不能,输出-1题目思路:首先判断1-n的和mod n是否等于k,如果不等于,说明无法构造,输出-1否则:1.n为奇数,那么k=0,可以构造成 n n-1 1 n-2 22.n为偶数,那么数组总和为n*(n+1)/21+(n-1)=n,2+(n-2)=n……所以有解k=n/2,n k n-1 1 n-2 2…#include<iost...

2020-07-29 00:23:15 108

原创 牛客暑期多校训练营 A Clam and Fish

题目大意:题目思路:贪心,在类型2和3时都选择鱼,因为在类型3种,选择蛤,后期会不会出现没鱼的情况不确定,可能会浪费一次机会,所以直接选择鱼,然后遇到类型0在有可能的情况下就减少鱼饵,遇到类型1时,先将鱼饵加一,最后计算时如果鱼饵还剩两个及以上就除以二加入总鱼量其实就遍历字符串就行,当初以为会超时,后来才知道,是总的字符串长度不超过2*10^6#include<iostream>#include<cstdio>using namespace std;char...

2020-07-24 23:18:43 140

原创 牛客暑期多校训练营

题目大意:给出AC,AD,BC,BD之间的距离a,b,c,d,然后判断是AB\CD还是AB\DC题目思路:比赛的时候想的太复杂了,其实利用三角形的性质,两边之和大于第三边就可以判断了,所以我们只要比较AC+BD和AD+BC的大小就可以了#include<iostream>using namespace std;int t,a,b,c,d;int main(){ cin>>t; while(t--) { cin>...

2020-07-24 00:28:49 105

原创 牛客暑期多校训练营C Operation Love

题目大意:给出20个坐标(顺逆时针都可能),确定是爱丽丝的左手掌还是右手掌题目思路:先找到具有代表性的长度为9的手掌向量,然后计算与其相连的两条向量的叉乘,若属于大拇指的向量与长度为9的向量的叉乘小于0,且属于小拇指的向量与长度为9的向量的叉乘大于零,则这是右手掌,若反之前者叉乘大于0,后者叉乘小于0,则是左手掌#include<bits/stdc++.h>using namespace std;struct zb { double x,y;} a[30];...

2020-07-23 00:12:43 96

原创 牛客暑期多校训练营B Basic Gcd Problem

题目大意:给定 t 组数据,每组数据由一个n(下文中的x),一个c构成,计算分段函数比赛的时候不认真看题,导致会错意了。。比赛结束看了题解才明白观察公式,fc(x) 其实是c 的若干次方,且指数要尽量大。最好的情况下,每次只消掉一个质因子。所以fc(x)=c^x的质因子个数题目代码:#include<iostream>#include<cstdio>#include<cmath>#include<string>using names..

2020-07-21 22:41:12 120

原创 牛客暑期多校训练营B Classical String Problem

题目大意:给定一个字符串,有q组询问,每次询问有一个字符c,一个数字x,如果碰到字符A则输出当前字符串中第x个字符(从下标1开始)如果碰到字符M,若x>0则把字符串最左边x个字符放到最右边,若x<0则把字符串最右边x个字符放到最左边题目思路:刚开始准备用string的加法和分割来做,结果这种方法会超时比赛结束看了队友的代码才知道其实只用记录字符串的初始位置就可以可以把字符串看成一个环,每次变形我们只需要改动这个字符串的初始位置,然后当遇到字符A的时候,只需要从这个字符串初...

2020-07-19 23:24:18 112

原创 牛客暑期多校训练营J Easy Integration

题目思路:计算过程来自题解讨论区q^-1是求出q的逆元,可以用费马小定理做逆元详解我在这里看的 链接:https://www.cnblogs.com/kongbursi-2292702937/p/10582258.html代码:#include<iostream>using namespace std; int const mod=998244353;int f[2000005],n; int qpow(int a,int b){ int ans=1...

2020-07-17 23:05:20 128 1

原创 牛客暑期多校训练营B-Boundary

题目大意:给定n个点,然后确定一个过原点的圆,要使这n个点尽可能多的存在与圆上,最后输出最多的存在于圆上的点的个数题目思路:三点确定一个圆,我们已知这个圆必定经过原点,所以再依次利用三点求圆心的公式枚举每两个点与原点(三点不共线)确定的圆心,最后选择确定次数最多的圆心构成的圆#include<iostream>#include<map>#include<algorithm>#include<cmath>#define ll long ...

2020-07-16 22:37:59 135

原创 牛客暑期多校训练营F Infinite String Comparision

啊这个题比赛的时候大家都过了,但是我超时超内存WA三连秀,还是补一下题目大意:给定多组数据,每次比较两个字符串(无限循环)的字典序大小题目思路:当两个字符串长度相等时,可以直接判断字符串的字典序大小,但当两个字符串不等时,就需要将两个字符串通过一系列奇妙的手法在不超空间不超内存的情况下进行比较本来有想到用将两个字符串延长到它们最小公倍数进行比较,但是超空间了,然后看到题解讨论中有一种神奇的做法比较a+b和b+a证明:首先这样的处理方法使得两个字符串长度相等了假设第一个字符串长len1

2020-07-15 23:33:14 106

原创 牛客暑期多校训练营F Fake Maxpooling

第二场F题题目大意:为有一个由A(i,j)=lcm(i,j),组成的矩阵,需要找出所有该矩阵中每个k×k大小的子矩阵中最大值的和样例:题目思路:使用单调队列处理每行连续k个数的最大值得到一个新的二维数组,得到答案后再使用单调队列处理新数组中每列连续k个数,最终得到含有每个k*k矩阵最大值的数组,相加求和单调队列中存的是这连续k个数字的下标,这样既方便滑动也不影响记录最大值单调队列是干什么的?单调队列可以保证,对于任何一个数而言,只会在队列中出现一次,一旦这个数对于最后答案没有贡献了,就会

2020-07-15 00:37:58 102

原创 素数筛(埃氏筛,区间筛,欧拉筛)

先了解一下素数筛是什么素数筛是一个可以快速生成素数表的算法,比起来一个数字一个数字的判断,欧拉筛和埃式筛可以大大减少时间复杂度,这两种方法也是最常用的两种方法埃式筛:素数的倍数是合数将所有的合数标记了,那剩下没有标记的便是素数...

2020-03-10 22:00:19 278

原创 详解扩展gcd

什么是扩展gcdax+by=gcd(a,b),a,b不全为0,且x,y都为整数解,求解来了解一下什么是贝祖定理因为gcd(a,b)=d,那么对于任意的ax+by都等于d的倍数,则一定有解使得ax+by=d所以可以得出若ax+by=d,则d%gcd(a,b)=0举个栗子理解一下比如36和24得最大公约数为12那么gcd(36,24)=12,则它的整数解有1*36+(-1)*24...

2020-03-05 17:14:40 327

原创 约瑟夫环

已知有n个人(以编号1,2,3…n表示)围坐在一张圆桌上。从编号为1的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,圆桌上只剩一个人。#include<stdio.h>int flag[450000]={0},sum=0;int fun(int a,int b){ int i,num; num=0; for(i=...

2019-12-16 20:08:38 85

原创 第二周(归并排序详解)

归并排序运用分治的方法,先把数组不断拆分,之后再边排序边合并#include<stdio.h>int i,j,a[10000],n;void merge(int left,int middle,int right){ int b[10000],k; i=left;//分治之后从小到大依次比较排序后返回到原数组中 j=middle+1;//定义右边的起始点 k=...

2019-12-09 21:39:27 124

原创 第二周(快速排序)

快速排序的大致思路通过找出一个基准数,然后从左向右,从右向左依次找出比这个基准数大(小)的数字,然后交换它俩,最后将基准数与每轮判断的结尾处交换,这样每轮结束后,在基准数左边的数字都比基准数小,在基准数右边的数字都比基准数大,然后不断分下去,最后整体排序完成好像貌似说的有点抽象时间复杂度快速排序的最差时间复杂度是O(n2)它的平均时间复杂度为O(nlogn)下面来段正确代码#inc...

2019-12-04 20:42:07 115

原创 第一周任务总结(scanf的正则表达式)

这里只介绍了scanf的三种基本正则表达式输入(%[] , ^ , *)以后如果有需要再添加吧我们先来简短介绍一下scanf(以输入字符串为例)scanf("%s",s);这里表示的输入一个字符串s,%表示选择,s是条件,只要是字符,便会被读入,但是碰到空格,回车等都会停止输入此时scanf的正则表达式就出现啦,它的作用就是通过改变引号内的形式("%s")来成功将普通的什么都输入进去变成...

2019-12-02 10:43:29 499 1

原创 第一周任务总结(位运算)

**位运算**位运算的基本知识c语言可以按二进制位进行计算,它只适用于整型或字符型数据位运算用补码进行运算,正数的补码就是原码,负数的补码为原码取反加1;计算得出的结果如果是正数,就直接等于补码,若是负数则需减1取反,取反时符号位不变。位运算的运算符位运算的运算符有以下6种:1 - 按位与(&):位与运算符“&”是双目运算符与运算的规则是:只有当对应的两个二...

2019-12-01 11:33:54 596

原创 新生赛(巧克力豆-关于异或的使用)

不打算把所有的新生赛题目都写成博客上的,感觉这道写了挺久,所以记一下,哈哈哈首先,题目如下:Chocolate (10分)C时间限制:1000 毫秒 | C内存限制:3000 Kb题目内容:还是小W,他挑选完给小H的完美巧克力之后自己吃完了剩下的巧克力,他发现:巧克力是世界上最好吃的东西!所以他火速下单又购买了一批巧克力。这次的巧克力中有黑白两种巧克力豆,小W仔细观察,认真分析...

2019-11-30 16:09:43 165

原创 第一周任务总结(纸质题目)

月考核纸质题目总结首先了解一下c语言中运算符的优先级(图片源自百度百科)第一题已知int x = 5,y = 5,z = 5;执行语句x%=y+z后,x的值是__5__题解:因为%=的优先级低于+,所有先执行y+z的指令,值为10,然后计算x%=10,%=的意思为先取模之后将值赋给左边变量,x%=10相同与x=x%10,先计算%(取余)x=5%10,x=5。第二题以下程序的输出...

2019-11-28 09:20:51 331

原创 第一周任务总结(快速幂)

**快速幂算法总结快速幂算法的概念快速幂就是做到让程序快速求幂,减少时间复杂度,使程序更快运行快速幂的时间复杂度若题目为求a^n的值,那此时程序的时间复杂度为O(n),但如果使用快速幂,便可以将时间复杂度减少到O(log(n))快速幂算法的代码include <stdio.h>int main(){ int a,b,ans; scanf("%d%d",&a...

2019-11-25 20:44:24 225 5

原创 第一周任务总结(gcd算法)

gcd算法总结gcd算法概念欧几里得算法,又称辗转相除法,用于求两个自然数的最大公约数gcd算法代码#include <stdio.h>typedef long long ll;ll getgcd(ll a, ll b){ if(b==0) return a; else return getgcd(b, a%b);}1.输入两个数据2.如果b(...

2019-11-25 20:44:17 873 1

空空如也

空空如也

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

TA关注的人

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