自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 牛客国庆day2-J-farm(二维树状数组)

题意有一个n*m的矩阵,每个格子都有它需要撒的药的编号,现在有t次从(x1,y1)-(x2,y2)的撒药k,然后如果撒的药的编号与它所需要的不一样的话,就该格子的花死亡。思路这题主要是想总结一下(二维树状数组)。vector-存树状数组-存该药撒的范围-存这种药需要撒的格子坐标。我们通过树状数组来将撒的范围的±1,来标记这次撒药,通过遍历来找这个格子的标记是否为0,因为如果他就被他自己所需要的药撒过的话,就1->0,但如果别人撒过它或者没药来撒它,就-/>0剩下的写注释了。二维树状

2021-10-15 18:51:37 147

原创 莫队算法(简)

问题:牛客-Different Integershttps://ac.nowcoder.com/acm/contest/20322/J给你一个序列a,a1~an,然后q组询问,(l,r),请你算出a1–ai 和 aj—an两个区间的不同的数字个数。思路:想简单了,以为是两个区间中不同的数字个数之和,直接前缀和来了一发,果然wa了。它是求前面中不同数字个数和后面中不同的数字个数,就可能这个数字第一次出现的位置不在这两个序列中,但是第二次出现的位置在这两个序列中。学了学,这是个裸的莫队问题。莫

2021-10-09 17:47:45 193

原创 2021牛客多校4(CFIJ)题解

F Just a joke题意:就是有两个操作,可以删除一条表或者删除一个联通分量。思路:很神奇,我们当时比赛时用并查集来判断感觉水过去了,跟官方题解完全不沾边又有点差不多的意思看一下这个神奇的办法,就是判断有几个联通分量,然后又几个点,点的个数+联通分量的个数,然后判断奇偶。官方题解是不管哪个操作,点加边的个数都是减掉奇数个,然后我们可以判断奇偶来看谁赢了。代码:#include<bits/stdc++.h>using namespace std;typedef long

2021-07-29 10:12:57 349

原创 2021牛客暑假多校第二场部分题解

C-Draw Grids题意:给你一个n*m的点矩阵,每次可以连相邻两个点的一条边,直到连完无法操作的时候就输了,前提是不能连成一个多边形。问你第一个人能不能赢思路:就是按照竖直的线走到头,然后拐回去,直到最后连玩取余2看是谁走最后一步了。代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;int main (){ ll n,m;cin>>n>>m; l

2021-07-20 20:38:47 426 2

原创 Codeforces Round #731 (Div. 3)-ABCDE

A. Shortest Path with Obstacle题意:给你两个点A,B的坐标和F点的坐标,问你从A到B最少可以走多少步。只能横着或者竖着走。思路:简单暴力,只需要看A和B是否在同一个水平或者竖直线上。如果在的话,只需要绕过去就可以了。不在的话,直接坐标差相加即可。代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;//const int N=;int main (){ ios:

2021-07-14 15:27:53 138

原创 CodeforcesRound#732(Div2)-ABC

A-AquaMoon and Two Arrays题意:给你两个数组a和b,可以选择任意次下标i,j,然后ai-1,bj+1,问你是否能保证a数组=b数组,可以的话,请输出移动方案。思路:暴力,直接先判断需要±的数字大小是否相同,相同的话,直接双指针将两个数组±排序进行输出方案。代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1100;ll a[N],b[N];st

2021-07-13 16:26:42 170

原创 牛客练习赛部分题

牛客练习赛81B-小 Q 与彼岸花思路:区间dp,因为在[l,r]中找到两个ai异或的最大值,dp[i][j]可以定义为在区间[i~j]之间的最大异或值,一般的区间dp都是三层循环,最外层距离,第二层起点,终点,第三层断点,但是这个就两个值的最大值,因为比如1 2 3区间的最大异或值,肯定就是先端点1,3,然后就是从区间 [1-2]之间和[2-3]之间去找最大值,所以转移方程我们就可以定义为dp[i][j]=max(dp[i][j],max(dp[i-1][j],dp[i][j-1])),然后比较

2021-04-27 20:18:07 182

原创 Codeforces Round #712 (Div. 2)-ABC

A. Déjà VuA palindrome is a string that reads the same backward as forward. For example, the strings “z”, “aaa”, “aba”, and “abccba” are palindromes, but “codeforces” and “ab” are not. You hate palindromes because they give you déjà vu.There is a string

2021-04-10 15:22:04 376

原创 F. Equalize the Array-(Codeforces Round #702 (Div. 3))-前缀和,后缀和,map的应用

题意:就是问你如果让数列里的数字出现的次数都一样,最少需要删除多少个数字思路:思路我打在了代码注释上,这题不太好想,前后缀和都应用到了。详细的看注释吧代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=2e5+5;ll a[N],sum[N],pre[N],q[N];void init(){ //memset(a,0,sizeof a); memset(..

2021-02-27 23:34:34 148

原创 牛客寒假训练营1(B-F-I-J)部分题解

训练营的比赛已经开了3场了,也已经过年了,博客好像好久都没有更新过了,补一场的吧。虽然说是基础训练营,但还是挺难的,感觉…好了,不说了,开始吧。B-括号题意:就是让你找对应k的括号排列。正好有k个括号排列。思路:这个题的数据范围比较大,如果按照它样例给出的办法,会超时。这个题当时也卡了很久,我的小朋友试出了办法,还是我太菜了。这个题,要是想到的话,就很快,想不到的话,就会绕弯。它是左右()的数量相等的话,假如是n个的话,就按照n的平方的速度增加,所以我们先看比k小的最大平方数。然后看k-平方数

2021-02-15 00:35:01 279 1

转载 大数高精度总结

高精度加法 (string + string)const int L=1005; 大数长度string add(string a,string b)//只限两个非负整数相加 { string ans; int na[L]={0},nb[L]={0}; int la=a.size(),lb=b.size(); for(int i=0;i<la;i++) na[la-1-i]=a[i]-'0'; for(int i=0;i&lt

2021-01-28 09:30:41 162

原创 线段树的建立,单点修改,区间求和

线段树一种用于区间处理的工具。当我们遇到求区间的最值,区间的和,区间修改数据的时候,如果有数组进行操作,复杂度有的时候可达到O(m*n),当数据量比较大的时候,就不可以采取这种方法了。线段树是用一种大概类似于二叉树的方式所建立。二叉树在查找一个数据的时候,是二叉树折半查找的方式进行的,复杂度是O(log2^n),效率比较高。最值问题每个结点上的数字是这颗子树上的最小值。建立每个结点的值为他的左孩子和右孩子的和。当左右两边相等的时候,就是当前数组的值,然后结束递归,进行回溯。void build

2020-10-04 17:01:54 234

转载 天津大学仁爱学院ACM工作室介绍

如果你热爱算法,如果你热爱编程,如果你有着如火一般的热情。那么,邀请你加入天津大学仁爱学院ACM队!在这里,你将体验到脑力的终极竞赛;在这里,你会享受编程的神奇乐趣;在这里,你将有机会与全国乃至世界各地的选手切磋技艺。ACM国际大学生程序设计竞赛(英文全称:ACM International Collegiate Programming Contest(简称ACM-ICPC或ICPC))是由国际计算机协会(ACM)主办的,一项旨在展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力的

2020-09-21 22:31:04 748

原创 2019河北省大学生程序设计竞赛-B-cebound and Sequence(数学 快速幂)

题意思路:给定公式,意思就是求一个等比数列的值,等比数列求和公式,按照原先的是会超时的,所以需要更快速的公式。然后在通过快速幂的方式取模,降低复杂度。呜呜呜,数学没学好,就不推了。代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;ll n,q,p;ll qpow(ll q,ll n)//快速幂~(顺便记一下快速幂的板子){ ll res=1; while(n) {..

2020-09-02 20:20:12 259

原创 2019河北省大学生程序设计竞赛-H-天神的密码-(数学暴力)

题意:给定 n,k的值,定义x=n^k。要求:将x的每一位上的数字相加,然后所得数为x,直到x是一位位数,即0<=x<=9,得出所得的值。思路:k=1,2。(1)直接暴力循环模拟,可能是数据比较水,long long可以存1e18,所以用 long long来寻找。#include<bits/stdc++.h>using namespace std;typedef long long ll;int main (){ ll t; cin>&g..

2020-09-02 19:53:42 259

原创 牛客暑假多校训练营(第十场)E- Game-思维

题意:给你每一列的小木块的高度,如果小木块的右边,没有木块,可以向左推动,直到最右边第一个,就不能再往左推动啦。求所有列中最小化的最大的的列高度。思路:前缀和来求前i列的所有木块的和,sum [ i ] / i ,向上取整,然后来看最大值,因为每次来看当前的最大高度,就是平均下来。代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e6+9;ll sum[N];i...

2020-08-12 09:27:21 134

原创 牛客暑假多校训练营(第十场)A- Permutation-dfs,构造,规律

题意:给定一个素数p,用1,2,。。。p-1,进行排序,排序的序列必须符合第(x+1)位=第x位2%p,或者第(x+1)位=第x位3%p,请你构造这样一个序列。思路:(1)dfs递归来找,因为第一位肯定是1,之后的2~p-1位,有两种情况,2或者3,所以分别来找,然后回溯。递归出口一个是两种情况都不满足,所以往回来回溯,另一个是,计数达到了p-1位的时候,就证明已经达到的一个序列,然后退出。#include<bits/stdc++.h>using namespace std;con..

2020-08-11 16:19:51 186

原创 二叉树的创建,二叉搜索树的创建,(前序,中序,后序遍历)

二叉树概念性质:二叉树的每个结点最多有两个子节点,左孩子和右孩子,以他们为根,有左子树和右子树。第i层最多有2^(i-1)个结点,如果每层都是满的,就是满二叉树。如果只在最后一层缺失,缺失的都在最后,就是完全二叉树。完全二叉树结点数量为k,i>1,父节点为i/2,2i>k,i没有孩子,2i+1>k,i没有右孩子。如果i有孩子,左孩子为2i,右孩子为2i+1。二叉树创建struct node{ int date; struct node *left;//为node

2020-08-03 09:55:52 366

原创 牛客暑假多校训练营(第五场)I- Hard Math Problem-思维

题意:矩形中放,H,G,E,一个H周围至少有1个H和1个G,刚矩形接近无穷的时候,H所占比是多少。思路:说实话,我画了画图,猜了一下2/3,结果蒙对了。题解给的是:GHGHGHGHHEHEHEHEGHGHGHGHHEHEHEHEGHGHGHGHHEHEHEHE斜线的放G,E交叉,然后斜线上下放H,所以接近无穷的时候,H所占比为2/3。代码:#include<bits/stdc++.h>using namespace std;int main (){ ios:..

2020-07-29 09:57:05 160

原创 牛客暑假多校训练营(第四场)F-Finding the Order-思维,数学常识

题意:有两条平行线,ab与cd,通过ac,ad,bc,bd的长度来判断到底是ab//cd,还是ab//dc,c与d的位置判断。思路:这题太搞我了,直觉告诉我是这样的规律,证明不出来,没敢打。还是规规矩矩来证一下吧,假如是cd的位置,因为abcd构成了一个梯形,根据梯形的性质,ac+bd<ad+bc,所以如果是ac+bd<=ad+bc,就是ab//cd,否则ac+bd>ad+bc,就是ab//dc。代码:#include<bits/stdc++.h>using n...

2020-07-29 09:40:52 162

原创 牛客暑假多校训练营(第四场)B-Basic Gcd Problem-递归,素数,gcd

题意:有一个构造的函数给出n,c,求出fc(i)的值取余1e9+7的答案。思路:我们对n和c进行操作,因为求max c*fc(gcd(i,x))的最大值,gcd最大值的话,如果x是素数,那么就是1,如果不是素数,那么就是循环找出第一个能被整除的数,x/这个数就是最大的i,然后进行递归继续找,直到x=1的时候返回1。答案在进行的时候要一直对mod取余。代码:#include<bits/stdc++.h>typedef long long ll;using namespace std..

2020-07-29 09:28:03 140

原创 牛客暑假多校训练营(第六场)E-Easy Construction-思维,构造

题意:构造一个1n的排序P,P中所有数字都是在1n之中,对于每一个p中的整数 i,都有一个长度为i的连续子数组的和%n==k,如果不存在这样的p,输出-1.思路:先看i有一种情况肯定是n,所以就是1~n原串的和就是n*(n-1)/ 2,所以吸纳判断一下1~n的和是否成立。成立的话,就代表k是一个不变的定值,且与n有关,所以k=n*(n-1)/2%n的值。如果n为奇数,sum就是一个常数*n%n就是0了,所以k=0,。如果n为偶数,就展开可得k=n/2,...

2020-07-28 20:08:28 121

原创 牛客暑假多校训练营(第六场)Combination of Physics and Maths-思维

题意:有一个数组,压强满足一个公式:p=F/S,F是压缩力,(所有项之和),S为底面面积(最后一行项之和),求子矩阵的最强压强。思路:这题写的时候,队友就吐槽被下面那个样例给迷惑了,其实是可以发现,单列的压强一定大于多列的,所以我们只要求一个每一列的前缀和,然后遍历来找压强最大值,即可。代码:#include<bits/stdc++.h>using namespace std;int main (){ ios::sync_with_stdio(false); i...

2020-07-28 16:04:29 190

原创 牛客暑假多校训练营(第三场)B-Classical String Problem-字符串

题意:s字符串小写字母组成,执行q个操作,有两个类型的操作。(1)M-修改:如果x为正,字符串最左边的x个移到字符串的右边。如果x为负,字符串最右边的|x|个移到字符串左边。(2)A-回答:回到当前字符串第x个字符是什么。思路:(1)标程思路:通过画图我们能够得出,我们设定一个指针,刚开始让它指0,因为字符串是从0开始的,所以x为正,指针向右移动x的长度,指针增加x,但注意一下字符串的长度问题,所以我们要及时取余,x为负数时,就是指针往左移动x,就是指针减少x,因为可能涉及到负数的问题不太...

2020-07-23 21:16:08 155

原创 牛客暑假多校训练营(第三场)A-Clam and Fish-贪心

题意:有n个阶段,有4个类型分别是:(1)0-没有鱼,没有蛤蜊。(2)1-没有鱼,只有一只蛤蜊。(3)2-只有一条鱼,没有蛤蜊。(4)3-有一条鱼,有一只蛤蜊。(强调了一下,3类型时,抓鱼和挖鱼饵只能选一种)每个阶段下可以执行四个操作中的任意一个:(1)如果舞台上有蛤蜊,你可以用这个蛤蜊做一包鱼饵,而你增加的鱼饵包数增加了一包,你可以在这一阶段结束后用这包鱼饵。(2)如果有一条鱼在舞台上,你可以抓住这条鱼不需要任何鱼饵。这一阶段结束后,鱼饵包的数量就不会改变了。(3)如果你至少有一包...

2020-07-23 08:58:21 191

原创 牛客暑假多校训练营(第一场)J-Easy Integration-积分,逆元

因为复制过来就散了,就截图了题意:求这个积分然后进行取模的判断,得出答案。思路:这题题意很好懂,但是我们折在了求积分上面了,这个应该是一个分部积分,完了,放个假上学期学的都给忘了,具体过程就不在这推导了,应该是[(n!)^2 ] / (2n+1)!。先打一个阶乘表后面调用,所以这题的重点放在了pq^-1上面,因为取余的998244353是素数,所以根据逆元的道理 pq-1=p*qp-2(mod)998244353。逆元:ax=1(mod p)的解出的x为a关于p的逆元,一般让你mod的这个数

2020-07-15 10:16:50 163 1

原创 牛客暑假多校训练营(第一场)F-Infinite String Comparision-字符串

因为复制过来就散了,就截图发了题意:一个字符串可以无限复制,那么比较a,b字符串无限复制后,谁比较大。思路:这题一直被T,大概思路想到了,但是结束条件没有控制好,所以导致一直超时,这题应该是结束条件应该是最长的字符串的两倍就可以判断出来,找最小的循环节,但是lcm(两个字符串长度会超时),所以根据周期性引理,t1+t2-gcd(t1,t2)<2max(t1,t2),所以判断最长的长度2。否则就输出大小,至于比较的话,我们从0开始,通过取余的方式来判断它到哪一位了,因为我们是比较的步数相同,

2020-07-14 22:38:59 162

原创 双向队列基本操作-(SDUT 1466)

双向队列,一个队列的队尾同时也是队首;两头都可以做出队,入队的操作。用deque来表示,定义:queue q;一个队列,分左边和右边,队首:q.front(),队尾:q.back(),是否空判断:q.empty(),清空:q.clean(),返回指定元素:q.at(),删除元素:q.erase(),头部压入:q.push_front(),尾部压入:q.push_back(),头部删除:q.pop_front(),尾部删除:q.pop_back(),队列大小:q.size()。一个简单的例题:Desc

2020-07-03 21:33:57 461

原创 后缀式求和

给出后缀式来求出后缀式表达式的值,后缀式例如:59684/-3+#,因为已给都是一位的正整数,如果不是一位整数就判断是否>=a&&<=z,步骤如下所示:1.先把数字压入栈中,因为是字符型,注意改类型。2.区分+ - * / ,来分别进行判断,弹出前两个数字,因为是倒着进的,所以得倒过来计算,比如栈顶第二个-栈顶第一个。3.再将计算好的数字压入栈中,直到栈中只有栈顶元素,输出栈顶元素。#include<bits/stdc++.h>using namespace

2020-07-02 21:15:44 211

原创 二元运算符后缀表达式

中缀表达式转后缀表达式中缀表达式就是我们常见的算术表达式,比如:23+4(3+5)+10/2,运算符在运算数之间,而后缀表达式就是比如:59684/-3+#,运算符在运算数的后面,所以要把中缀表达式转后缀表达式,用栈来实现。因为*/的优先级大于±,所以如下所示:1.如果是操作数,直接输出,即为后缀表达式的。2.如果栈为空,就代表没有运算符,所以遇到运算符就压入栈中。3.如果是( ,直接压入栈中。4.如果是 ),就开始出栈,直到遇到( ,但( 不输出,只弹出。5.如果是+ - ,因为±的优先级

2020-07-02 16:58:24 371

原创 素数大数判断

int work(ll x){ if(x == 1) return 0; else if(x ==2) return 1 ; else if(x==3) return 1; else if(x%6!=1&&x%6!=5) return 0 ; int t =sqrt(x); for(int i= 5;

2020-06-20 11:57:26 180

原创 Matrix Game-(CodeForces648Div2-A)

Ashish and Vivek play a game on a matrix consisting of n rows and m columns, where they take turns claiming cells. Unclaimed cells are represented by 0, while claimed cells are represented by 1. The initial state of the matrix is given. There can be some c

2020-06-18 14:32:58 462

原创 The Scarborough Fair-(简单模拟)

Vanis来到了一座建在浮空岛上的充满着异域风格的小镇,他发现岛上使用着三种货币,他将这三种货币分别称作A币、B币、C币。他发现,可以使用2枚A币兑换1枚B币,可以使用2枚B币兑换1枚C币,可以使用2枚C币兑换1枚A币(十分古怪的兑换规则)。Vanis经过一番搜寻,成功找到了a枚A币、b枚B币、c枚C币,他想要购买n个物品,每个物品只能够用A、B、C三种币的某一种购买。Vanis想要知道他能否成功兑换到他想要的全部n个物品。输入描述:第一行包含四个整数n、a、b、c,相邻两个整数之间使用一个空格符

2020-06-18 08:40:13 193

原创 第二届太原理工大学程序设计新生赛决赛-(Cappuccino ~ the end of journey-M)简单模拟

题目描述经过一番旅途,Vanis回到了原来的世界,现在他只想给自己倒几杯卡布奇诺 (cappuccino)。商店街有一家咖啡厅,提供两种购买卡布奇诺的方式:支付a元,获得1杯卡布奇诺。支付b元,获得c杯卡布奇诺。现在Vanis有d元,并且可以无限次任意选择购买方案(只要他的钱还足够),他想知道最多能买几杯卡布奇诺。输入描述:第一行输入四个正整数a,\ b,\ c,\ da, b, c, d,相邻整数之间使用一个空格符分隔,含义同题目描述。数据规范:1 \le a,b,c,d \le

2020-06-16 19:59:53 313

原创 第二届太原理工大学程序设计新生赛决赛-(Fuse the Cube Fragment-J题)思维推理

在解密完那条古怪的序列后的不久,Vanis收到了一个奇怪的包裹,寄件人地址竟然写着火星 ()。包裹里有一堆蕴含着能量的小晶块 (Cube Fragment),经过一些实验,Vanis发现这些小晶块具有如下性质:有n种不同的小晶块,编号1至n,每种晶块都蕴含1个单位的能量。两种晶块(第i种和第j种)能够稳定融合,当且仅当i \nmid ji∤j且j \nmid ij∤i,其中\nmid∤表示不能整除。Vanis想知道如果每种小晶块只使用一个,能够融合成的稳定的大晶体最大能蕴含多少个单位的能量,他想请

2020-06-16 16:15:35 228

原创 Nitori and Stack-Tech-(太原理工新生赛决赛-C)栈模拟

Nitori擅长制作各种各样精巧的道具。这一天,Nitori找来n个不同的零件放在桌子上,将它们排列成一排,接着她便拿出一个被她称为“栈”的神奇道具,这个道具可以将无数多个零件放进去,并且也可以按照与放入顺序相反的顺序将零件取出来(即后放入的零件必须先取出来),并且她还可以只取出一部分后继续放入其它的零件,而不必一次性全部取完。Nitori十分喜爱这个叫做“栈”的道具,今天,她想用“栈”将桌上的零件调整一下排列顺序,她会把桌上的零件从左到右依次放入“栈”中,并且在任意时刻,她都可以将若干个先前放进栈中的

2020-06-15 16:41:57 294 1

原创 Reversi-(太原理工新生赛决赛-A)博弈思维

题目描述翻转棋,有时也被称作黑白棋,是一种由两个玩家进行的棋类游戏,一方玩家控制白棋,另一方玩家控制黑棋,当一方玩家放置自己棋子后,如果有连续相邻的另一方玩家的棋子与当前棋子摆放在一条直线上,且直线上的另一端是自己颜色的棋子,则这些对方玩家的棋子都会变成己方玩家棋子的颜色,这种操作便称为翻转。 某日,Vanis、Qiy和Adolph外出比赛,乘坐了去X地的火车。火车上三个人感到很无聊,因此vanis提议玩翻转棋。为了方便游戏,他们对翻转棋做了简化,简化后的规则如下:初始有个棋子连续放置,摆在一排,使用0

2020-06-15 13:13:06 270

原创 东华大学2020年程序设计竞赛(同步赛)-F(A Simple Game)

Alice and Bob play a game.Initially they have n binary strings (a string which consists of zeroes and ones). They take alternating turns, and Alice is moving first. During each turn, the player has to choose several (at least one) strings and do one of the

2020-06-09 10:09:41 401

原创 Maria Breaks the Self-isolation(CodeForces-645-Div2-B)

B. Maria Breaks the Self-isolationtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputMaria is the most active old lady in her house. She was tired of sitting at home. She decided to organize a ceremon

2020-06-04 16:34:18 457

原创 ICPC Central Europe Regional Contest 2019-E(Zeldain Garden)

Boris is the chief executive officer of Rock Anywhere Transport (RAT) company which specializes in supporting music industry. In particular, they provide discount transport for manypopular rock bands. This time Boris has to move a large collection of quali

2020-05-20 20:56:20 661

空空如也

空空如也

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

TA关注的人

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