- 博客(102)
- 收藏
- 关注
原创 2023.12.11
题意:给定一颗树,初始在根节点,A,B两人操作棋子每次向(任意子结点:即可以连续向下走)移动,结束在叶子结点,每次移动获得子节点的价值,A期望a-b尽量大,B期望小,A先手,求a-b。//当前结点出发最大(A期望)=max(A拾取当前结点+子节点出发的最小(B期望))race\牛客\牛客挑战赛\牛客挑战赛71\树上博弈。
2023-12-11 08:25:48
150
原创 图论 2023.11.27
转换为拓扑图:入度为每个窗口不匹配的数量,一旦为0完全匹配,边为该窗口不匹配的字符,编号为(窗口编号i相连字符编号i+j)之后Kruskal先添加必须要的的0边,再以0边优先,把0边添加至k后,再添1边,最后还要检查图的连通性。给定一个它的高度为 h,它的长度和宽度我们可以认为是无限大的奶酪,有n个空洞坐标为(x,y,z)给定一个row行line列大小的矩阵,给定n个boss的位置,需要从左下角,到达右上角。深度优先搜索,不需要回溯,进入和出来判断只需看z-r,z+r和0,h的比较。
2023-11-27 00:24:13
515
原创 图论 2023.11.20
给定一个无向图(图是联通的),无重边,对于每个节点求出去与节点i关联的所有边去掉以后(不去掉节点i本身),假设产生k联通块2(n-1)+2∑(1<=i<=k)∑(1<=j<=k,j!spfa跑从起点,从终点的最短路,之后枚举所有的边,连接点的记录可能有重边用vis标记。1.最短路的距离,2到当前点的最短路的起点(相当于染色操作)思路:次短路为某一条边的长度+起点到该边一条端点的最短路+终点到另一条边的最短路。假设割后产生2个的联通块,大小为a,b,则贡献为2ab+2(n-1),=终点(自环)时,更新答案。
2023-11-20 00:39:12
554
原创 图论2023.11.12
Elaxia 和 w** 的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们必须合理地安排两个人在一起的时间。Elaxia 和 w** 每天都要奔波于宿舍和实验室之间,他们 希望在节约时间的前提下,一起走的时间尽可能的长。思路:分别求出从s1,t1,s2,t2出发的最短路,筛出s1到t1的最短路的边。地图上有n 个路口,m 条路,经过每条路都需要一定的时间。题意:求无向图中,两对点间最短路的最长公共路径的长度。P2149[SDOI2009] Elaxia的路线。二分图--匈牙利算法匹配。
2023-11-12 22:40:12
663
原创 图论(欧拉路径)
由于常见的求欧拉路的程序给出的结尾都不是开头点,所以在dfs调用后栈里面还剩下一个环,输出即可。题意:n点m条边以及边的目前状态目标状态,若干辆垃圾车跑欧拉回路,每次垃圾车经过改变路的状态。题意:给定一个有向图,规定路线从1开始1结束,经过每条边恰好一次,同时给定一些序列。有向图欧拉路径:恰好一个out=in+1,一个in=out+1,其余in=out。重新建图(将序列合并),跑欧拉回路,stack入栈起点在在E的位置。所有边都经过一次,若欧拉路径,起点终点相同,欧拉回路。P1341 无序字母对。
2023-11-05 22:42:28
735
原创 简单单调栈的运用,悬线法---最大子矩阵,整除分块(规律+分块边界)
思路:约数的性质满足每个正约数i在1~n中出现的个为n/i,于是约数对总和的贡献为i*n/i。以l为左边界,k=n/l, 右边界r为k的最大下标i,找到最大的i满足i<=n/k。给定n*m的矩阵,每一格为F或R,找到最大的全为F的矩形土地,输出面积*3。给出正整数n 和一个长度为n 的数列a,要求找出一个子区间[l, r],f(x)表示x的所有约数和,求f(x)+f(x+1)...+f(y)思路:约数的性质满足每个正约数i在1~n中出现的个为n/i。1.f(n)=n/i的和 (1<=i<=n)
2023-10-22 22:35:00
270
原创 近期总结2023.10.16
28.(839D)对于两个数 a,b,选x使得a=abs(a-x),b=abs(b-x),当x的值小于 (a+b)/2 时,它保持原本的单调性,当x的值等于(a+b)/2时,a==b,当x的值大于(a+b)/2时,单调性反一下。31.(820f)(s1s2s3...)%9=(s1+s2+...)%9,可前缀和,将值域处理成余数的暴力枚举来满足式子,例如(a+b)%m==k首次出现的a,b,将可以的处理成余数记录首次出现位置,暴力枚举余数。//按第一位从小到大。32.找到周期性开始点取余周期(811E);
2023-10-16 08:17:57
164
原创 【无标题】
因子和求解 ans=(1+p1^1+p1^2...p1^(k1*b))*(1+p2^1+p2^2...p2^(k2*b)*...*(1+pn^1+pn^2...pn^(n*b)不互质时,(p-1)%mod==0,p%mod==1,->(1+pi^1+pi^2...pi^(k1*b))%mod->1+k1*b。题意:给定n,m,k,对于所有的0<=i<=n,0<=j<=min(i,m),有多少对C(j,i)%k==0。求有多少对p,q满足lcm(p,q)=x,gcd(p,q)=y。
2023-10-08 22:41:08
1154
原创 学期学习计划
6.难想的题分三个部分(1)规律(2)注意点代码易错部分(3)算法新应用,总结。7.每周除思维题外专门挑一个算法部分专项训练,总结规律。算法练习:主要为洛谷专项训练,牛客知识点训练。5.思维训练:主要为cf,atcoder。1.oi知识树的查漏补缺。4.每天至少思维题2道。
2023-09-16 01:07:32
69
原创 2023.8.16
同时消除0,若为0,4,6,8则dp[i]=ci+(1/4)*dp[i]+(1/4)*dp[i+4]+(1/4)*dp[i+6]+(1/4)*dp[i+8]移项的dp[i]=(4/3)*c[i]+(1/3)*dp[i+4]+(1/3)*dp[i+6]+(1/3)*dp[i+8]若转盘为2,4,6,8则dp[i]=ci+(1/4)*dp[i+2]+(1/4)*dp[i+4]+(1/4)*dp[i+6]+(1/4)*dp[i+8]13.分类,一共有少数个类别,由少数个类别组成的多个数,分类。
2023-08-16 22:35:25
101
原创 2023.8.13
/若f(l,r)=1,则f(l,r-1)为0或sr为0,即只取决于上一位的情况和当前位,枚举右端点,对答案的贡献即有多少左端点使得f(i,r)=1;//思路:以n=4,k=3为例,先查询1 2 3,1 3 4,1 2 4三个结果的异或值,将三个结果异或就可以得知a1的值,同理,前k+1个数也可推出。//题意:给定一个n长度的01串,计算f(l,r)(l<=r,l在1~n,r在1~n)的和,f的计算(ai,a(i+1))运算,有0就为1,11为0。//题意:给定一个字符串,由()?
2023-08-13 00:32:57
240
1
原创 【无标题】
有两堆各若干个物品,两个人轮流从任一堆取至少一个或同时从两堆中取同样多的物品,规定每次至少取一个,//有n堆石子(n>0),每一堆有ai个石子每人每次可以从任意一堆石子里,取出任意多枚石子扔掉,有n堆石子(n>0),每一堆有ai个石子每人每次可以从任意一堆石子里,取出任意多枚石子扔掉,// 所有堆的石子数均 = 1 ,且有偶数堆,这个偶数堆在这个情况下其实就是异或和为0。//可以取完,不能不取,每次只能从一堆里取。有n堆石头,每次可以从一堆中拿出一些或全部石头给相邻的右边的一堆石头,
2023-08-09 22:58:52
276
原创 2023.8.6
然后显然对于新的线段树中的任意节点,如果以该节点代表的区间中不包含被修改的节点,那么也就意味着以这个节点为根的子树不需要修改。//于是们开一个线段树表示区间[l, r]的f[i]和,可以直接查询[l, r]范围内的a[i]的乘积的f[i]。//有m个操作,第一种操作是输出[l, r]范围内的a[i]的乘积的f[i],另一种操作是整段区间乘上一个数。//思路:区间内所有数的乘积的f[i]= 每个数的f[i]的和 (因为数相乘 = 幂次方相加)若该节点即对应被修改的节点,那么就可以直接建立新节点。
2023-08-06 00:43:02
150
原创 2023.8.2
/这个考虑同余的性质,就是两个数的差去取模为0的数肯定是这两个数的同余数,。//思路: 对于一个排列, 如果区间反转, 逆序数等于区间中所有的对数减去当前的逆序对数, 即原本的正序对变为逆序对, 原本的逆序对变为正序对。//如果同余式一边上的数和模能被某个数除尽,则同余式的另一边的数也能被这个数除尽。总结://同余的性质 (就是两个数的差去取模为0的数肯定是这两个数的同余数)//同余式一边上的数与模的最大公约数,等于另一边上的数与模的最大公约数。//同余式的每一边都可以增加或减去模的任意倍数。
2023-08-02 22:50:22
171
原创 2020/7/30
/也就是在前缀和数组中从i向右的位置二分查找第一个sum[j]-sum[i-1]>ai的位置j,从i到j-1的每一个b中元素都是使ai减去一个完整的自己的,//然后用另一个数组ex记录b中每个数使a中某个数减到零所提供的贡献,n次二分查找结束后,对差分数组求前缀和,答案数组就等于cnt[i]*b[i]+ex[i]//题意:有n种茶,n个人,第i种茶有 a[i]的量,第i个人一次能喝 b[i], 第i个人从第i种茶开始往前喝,求每个人最多能喝多少茶。
2023-07-30 00:39:15
337
原创 2023.7.26(同余方程的通解与特解)
思路:要求x,y的特解,可以使用exgcd的板子,令c = k * gcd(A, B)则Ax + By = c;只要将x *= c / gcd(A, B), y *= c / gcd(A, B);这里有一个步长的概念对于x他的步长是 B / gcd(A, B), 对于y他的步长是 A / gcd(A, B)通解x/d-i*(x/d/b/d)*b/d->x/d-x/b*(b/d)->x/d-i*x/d。裴蜀定理:如果a、b是整数,那么一定存在整数x、y使得ax+by=k*gcd(a,b)。
2023-07-26 22:45:05
1133
原创 2023.7.19
he[x] += 1;//思路:因为10为2*5,所以,统计2和5因子数,取较小值即可,又因为直接计算数值巨大,所以分开计算,对于乘法可转换因子数相加,对应的除法可以。思路:利用大小根堆,大根堆负责将已经标记过的第i-1小全部入队,作为比较对象,始终保存i-1小,而小根堆。一颗“树”,树上有n个点,n-1条边(无环),有m次操作,每次操作给定两个点x,y和一个add,树上有n个点,n-1条边(无环),有m次操作,每次操作给定两个点x,y和一个add。q次询问,给定x,y两个点,输出x,y之间的边权和。
2023-07-19 23:55:14
79
原创 2023.7.15
简而言之就是选定一个数,用其他的凑出这个数的每个同余类的最小数,就凑出同余类中比最小数大的个数。思路:转化题意为求ax+by+cz=k(k在[1,h],x,y,z为正整数,有多少k满足条件,题意:给定h高的楼层,起始位置在第一层,可以选择操作向上移动x层或y层或z层,回到第一层。思路:设f(ans)=ans为各位数的和,ans=0(mod k),且f(ans)最小。题意:给一个数 k ,问他的正整数倍数中,(十进制下)每一位的和最小是多少。dis[i]表示模k为i的位数之和的最小值。
2023-07-15 22:44:21
360
原创 2023.7.12
/思路:非常好的01背包问题变形,将奶牛的个数看成物品种类,智商为背包体积,情商为价值,dp[i][j]为智商为j时情商的最大值,于是得到转移方程 dp[j]=max(dp[j],dp[j-x[i]]+y[i]);//x[i]可能为负,造成j-x[i]>j,所以当x[i]为负时,正着dp,由于可能x[i]为负,y[i]也为负,可能造成数组越界,于是向右移动maxn位。//luogu/线性dp题组/P_2340_USACO_03_FALL_Cow_Exhibition_G.cpp。
2023-07-12 22:37:08
159
原创 2023.7.8
所以得(1-k^n)/(1-k),具有单调关系,于是可以二分,由于2^64>1e18,可以枚举长度n,3<=n<=64。思路:等比数列求和公式(a1-an*q)/(1-q),a1(1-q^n)/(1-q),因为a1=1,q>1,题意:给定现在时间,去上学时间,n个樱花的价值,花费时间,次数(0表示无数次),求最大价值,记忆化搜索(强化),完全,01,多重,混合,分组,有依赖(简单依赖)背包(回顾)思维锻炼。思路:公式1/n=1/(n+1)+1/(n*(n+1)),知道这个公式后基本就解出一半了。
2023-07-08 22:24:11
201
原创 【无标题】
思路:因为拓扑排序是不改变结点的先后顺序情况下把DAG拉成一条链,所以可以比较相邻的两个名字,找到第一个不同处,连边,然后跑拓扑排序就可以了,如果存在环,则impossible,巨坑的一个点,调了好久啊,子序列必须在前面。最短路训练:熟悉Dijkstra,floyed,spfa,最长路,差分约束,负环判断(spfa)思路:因为可以有建发电站这个选择,所以有个很好的思路就是,建一个源点0到各点边,边权为c[i],题意:给定n个区,m条道路,起点s,终点t,使s到t的最大拥挤度最小,求最大拥挤度。
2023-07-05 22:27:07
143
原创 2023.6.21题解
思路:操作次数具有单调性,直接二分最小操作数,因为数组不是0就是1,可以使用前缀和判断,在范围内的前缀和大小*2需要>len。题意:给定A,B,C,K,A,B,C代表位数,使得a+b=c;按字典序排,输出第K个满足条件的。思路:确定i,从cl,cr,bl,br确定l,r范围,使l尽可能小,r尽可能大,考虑范围,详见图。题意:给定m个区间,q个按顺序修改的位置,原始数组为n个全为0的,修改将0变为1,求出最小操作数。总结:这几天没刷题啊,基本就是打cf比赛,补题和打cf虚拟赛,预计刷的专项题组要到考试后了。
2023-06-21 22:38:34
100
1
原创 2023.6.19题解,总结
思路:dp,当遇到0,dp[i][1]只能由dp[i-1][1]转化而来,因为遇0,1-》0,dp[i][0]只能max(dp[i-1][1]+a[i].da, max(dp[i - 1][0], dp[i - 1][0] + a[i].da))从转化而来,遇到1, dp[i][1] = max(dp[i-1][1], dp[i-1][0] + a[i].da);题意:英文题,翻一下,有0,1,2三种状态,遇0,1-》2,遇1-》2,0-》1,不能成为2状态。这道题想到dp的话还是很容易推出状态的。
2023-06-19 08:32:21
222
原创 (横向刷题)【算法1-6】二分查找与二分答案【算法2-1】前缀和、差分与离散化(上),总结
通过对以前的算法进行巩固,发现了许多套路,像二分的最大值的最小化,最小值的最大化,离散的数据值域很大,但个数较少,这都是以前没有发现的,还有对题目的总结,扩展也很重要,做题的时候切忌浮躁,一定好好好琢磨背后考察的知识点。总结:这道题启发挺大,总结出二分的套路,最大值的最小化,最小值的最大化一般联想到二分,在范围内直接二分(最大值,最小值)思路:同样是数据值域很大,但个数较少,于是离散化,在离散化后的数组操作,同上,一定注意左开右闭,像我没注意到调了好久。
2023-06-14 22:59:43
1220
原创 题解(隔板法,插空法,最大生成树)2023.6.11
思路:m堆放进红球,(插空法)有C(n-k+1,m)方案数,分成m堆(,隔板法)有C(k-1,m-1)思路:先kruskal算法求最小生成树中的最大边的最小值,再求最大生成树,使用快读,cin时间超限。题意:k个蓝球,n-k个红球,把k个蓝球分成m堆,放进红球中,有多少种方案。思路:转化为二维前缀和,查询时查(y,y)和(x,x)之间的范围。思路:首先计算一个柱面的表面积,之后减去重合的面积。1640 天气晴朗的魔法。
2023-06-11 22:32:16
175
原创 题解2023.6.9
思路:预处理所有*10取模的操作,用队列进行2,3操作,需要调成long long大小,不然报错。统计各个长度X的数量,暴力枚举位置,如果遇到#,枚举长度,判断是否符合。思路:直接暴力枚举,用加取余的方式。
2023-06-09 09:06:10
66
原创 题解(期望dp)2023.6.7
思路:dp[i]表示从n到i的的期望长度,x到y的概率为1/入度,贡献值为w,得到公式dp[y]+=(dp[x]+w)/入度。贡献值(n/i)范围是l,r,每一个l=上一个r+1,r=n/(n/l),等差数列求和乘贡献值,含除法取模采用逆元。公式推导过程:dp[i]表示已经抛了i种不同面骰子,原来一致概率i/n,不一致n-i/n,得到转移方程dp[i]=(i/n)dp[i]+((n-i)/n)dp[i+1]+1。题意:一个n面的骰子,求期望,掷几次能使得每一面都被掷到。A 捞钱杯车队。
2023-06-07 01:03:12
86
原创 题解2023.6.5
统计ai出现的次数, 把他转换为大的阶乘, 如果, 最终1到x - 1, ai的出现次数均为0则说明可以被x!对于a[i]>=x的数一定可以整除,考虑a[i]<x的数,因为(x+1)*x!思路:变成了0,1,-1三种情况,对于去除0后为奇数的一定不可以,偶数的一定可以,n%4==1,4,5搭配;n%4==2,4,6搭配;n%4==3,4,5,6搭配。思路:奇数一定不可以,偶数一定可以,两两相同放一起,不同分开。思路1:4,5,6可构造除7外往后的所有数。G 严肃古板的秩序。C 忽远忽近的距离。
2023-06-05 01:05:31
671
原创 RMQ算法,组合数模板,题解2023.6.1
那么只要我们保证 r-2^k+1 <= l+2^k-1 就能保证RMQ[l, r] = min(dp[l][k], dp[r - (1 << k) + 1][k]);dp[l][k]维护的是区间 [l, l + 2^k - 1] , dp[r - (1 << k) + 1][k]维护的是区间 [r - 2^k + 1, r]。思路:将M质因数分解,看做n相同个小球放进m个盒子里,允许空盒存在, 添元素隔板法(可允许空盒子)公式:c(n+m-1,m-1),然后将这k堆的方案数相乘即可。
2023-06-01 23:00:26
428
原创 sg函数2023.5.31
sg(x):=mex(sg(y)|x->y),mex表示一个集合中未出现的最小自然数,sg(x)=0必败态,sg(x)!例子,单堆Nim游戏,归纳总结为sg(0)=0,sg(1)=1,sg(2)=2...sg(n)=n,石子数不为0都是必胜态。设x1,x2,x3...为ICG的状态则sg(x1+x2+x3...)=sg(x1)^(异或)sg(x2)^sg(x3)...找到规律后,得到sg公式(a,b)=sg(a/2,b-1/2+1)+1,异或一=每组子状态即可。其余sg(n,m)!
2023-05-31 14:13:18
810
原创 总结2023.5.29(逆元,string的操作)
对于两个数a,p若gcd(a ,p) = 1则一定存在另一个数b,使得a*b=1(mod p) 并称此时的b为a关于1模p的乘法逆元,我们记此时的b为inv(a)或a^(-1)string& replace(int pos,int n,const string& str);//删除从Pos开始的n个字符。当有两数a, p满足gcd (a, p) = 1,(p是质数时),则有a^p ≡ a(mod p)变一下形:a*a^(p-2) = 1(mod p)所以,我们可以使用快速幂求出a^(p-2)
2023-05-29 01:40:44
467
原创 差分,莫队,带修莫队,题解2023.5.26
思路:使用dp,记录最后一个B位置和第一个B位置,若最后一列的B能否由开头转移过来,则YES,否则NO。接下来输入m个操作,每个操作包含三个整数l, r, c,表示将序列中[l, r]之间的每个数加上c。思路:一个差分维护询问(询问指将l,r中的操作编号执行一次相当离线操作),另一个差分维护原数组操作。3.b - l >= x && r - b >= x//可以从l,也可以从r到达。接下来m行,每行包含三个整数l, r, c,表示一个操作。2.一列有一个B,位置与上一列(一个B)位置相同。
2023-05-26 00:52:26
500
原创 题解2023.5.23(欧拉筛)
因为选择移除的珍珠(p1,p2...)可取大小(ap1+ap2...)的和<=n,至少存在一个下一次选中的珍珠与上一次选中珍珠的距离dis>cpi,否则矛盾。思路:使用dp,记录最后一个B位置和第一个B位置,若最后一列的B能否由开头转移过来,则YES,否则NO。我们需要筛出根号(1e9)以内的所有质数,根据质数定理,大约有4e^3个质数,3.一列有一个B,位置与上一列(两个B)转移位置相同。1.一列有两个B,转移位置与上一列B转移位置相异;2.一列有一个B,位置与上一列(一个B)位置相同。
2023-05-24 00:09:30
411
原创 题解2023.5.21
c++语言中,multiset是<set>库中一个非常有用的类型,它可以看成一个序列,插入一个数,删除一个数都能够在O(logn)的时间内完成,采用dp,dp公式 dp[i][j]=k*k+dp[i-1][j]+dp[i-1][j-1]-(重复部分)dp[i-2][j-1]思路:直接枚举超时,数的种类为0-9,所以对于每个位置只需往后延伸100位即可,超过100位必重复。思路1:最优策略(与k无关)为:排序为a,b均从小到大排序,根据a位置输出b位置,采用结构体排序。
2023-05-21 22:16:59
422
原创 超星项目最终答辩总结2023.5.18
3.界面应该采用flowpane布局,对于界面不够显示的,flowpane布局会自动换行,且放大缩小布局也会随之更新。6.对于listview的显示,应该设置对齐,不然命名长度不同影响界面美观。5.应该多尝试vbox,hbox显示,而不是单纯的listview显示。1.发布作业题目设计对于主观题的添加过于简单,仍需改进。4.界面设计不够美化,可以添些组件,图片设计。2.写作业输入文字文本框太小。
2023-05-19 00:25:00
69
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人