自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(166)
  • 资源 (1)
  • 收藏
  • 关注

原创 【PTA Data Structures and Algorithms (English)】7-5 Tree Traversals Again

有一棵树,树的遍历可以用栈来实现,然后给出你这棵树用栈实现后的Push和Pop的序列,然后让你给出这棵树的后序遍历。

2023-03-10 08:52:10 337 1

原创 【PTA Data Structures and Algorithms (English)】7-1 Maximum Subsequence Sum

给你一个长度为K的序列,问你最大的区间和是多少,给出这个区间的左右端点值,若有多个区间,输出左端点下标最小的那一个区间。

2023-03-09 20:12:40 244

原创 【PTA Data Structures and Algorithms (English)】7-2 Reversing Linked List

5。

2023-03-09 19:57:14 606

原创 【PTA Data Structures and Algorithms (English)】7-3 Pop Sequence

先说一下在网上学到的正解吧,就是模拟过程,如果第一个数是5,那么代表在5出栈的时候前面4个数还在栈中,然后就看这个时候栈里面元素的个数是否大于K,按照这个思路来遍历完所有序列即可。有一个栈,按照1到n的顺序来入栈,给你一个M,N,K,M表示的是栈的大小,N表示的是序列的长度,K是询问次数,每次询问给你一个出栈序列,来问你这个序列是否是正确的。

2023-03-09 19:53:10 104

原创 【PTA Data Structures and Algorithms (English)】7-4 List Leaves

给你一棵树,节点最多是10,让你从上到下,从左到右来输出叶子节点。

2023-03-09 19:35:25 61

原创 Master of Both

给你n个字符串,然后给你m个字典序排列,问你在每一种字典序排列的情况下这n个字符串所组成的逆序对数量是多少。

2023-01-11 21:01:26 166

原创 Codeforces Round #833 (Div. 2)

刚看到这个题的时候是一脸懵,然后队友们讲出了他们的神仙思路,就是或的话最后一位是不会变的,这里可以判断是否有解,如果d的最后一位比a或b的最后一位小的话,那就是无解的,怎么或也不好使,然后考虑把a,b这两种情况合并成一种,假设d的最后一个1是在第t位,那么剩下的30-t位先都给他添上1,这样或完以后就都是一个数了,然后就是推公式了,看下图。给你一个长度为n的数组,一个数组的分数就是其前缀和为0的下标,现在你可以进行一步操作,选择一个取值为0的数,然后将他变为任意数,现在问你分数最大是多少。

2023-01-01 17:47:32 615

原创 Codeforces Round #836 (Div. 2)

给你一个n和一个x,让你构造一个长度为n的数组,是一个排列,且a[1] = x,a[n] = 1,并且构造的每个位置的数都能被其下标整除,输出字典序最小的序列,如果不能构造出来的话就输出-1。给你一个字符串,这个字符串的double串就是这个字符串复制一遍,比如说abc的double串是aabbcc,现在让你重新排列这个double串,让其为回文串,输出这个回文串。给你一个n,让你构造一个长度为n的数组,这个数组的数是两两不相同的,最大值减去最小值等于所有数的和的平方根。

2022-12-31 12:09:24 299

原创 Codeforces Round #840 (Div. 2)

每组样例给你5个数,分别是n,i,j,x,y,表示数组长度为n,a[i] = x,a[j] = y,这个数组是一个1-n的排列,问你有多少种排列方式使得数组a是一个先上升后下降的形状。有n个怪兽,每个怪兽都有自己的攻击力和防御力,你的初始攻击力为k,一轮比赛下来,每个怪兽都会减少血量k,然后你的攻击力就会减少存活的怪兽中攻击力最少的那只怪兽的攻击力,现在问你能不能把所有怪兽都给干死。给你一个n,问你最少需要多少个点才能构成有n对点对相互可达,边随便加,然后再问你在上一个的基础上有多少点对不可达。

2022-12-30 22:00:52 518

原创 Codeforces Round #837 (Div. 2)

方法就是固定左边界看有多少右边界或者是固定右边界看有多少左边界。有n个点,m个关系,每个关系中有两个点,表示他们互相之间是不认识的,现在问你有多少个区间,区间里面的所有点是互相认识的。给你一个数组,问你有多少个数对(x,y),满足|a[x]-ay]| = |max(a) - min(a)|这里有个前缀知识,要是没见过的话这个思路很难想到,就是区间DP求最长回文子序列,在数组中。给你一个数组n,问你是否存在数组里面两个数不互质的情况。给你一棵字典树,问你最长回文子序列的长度是多少。

2022-12-30 21:39:43 294

原创 Codeforces Round #841 (Div. 2)

这个跟上一个题刚好是相反的,这个是让i和j尽量相等,走对角线,然后就是右下右下这么走,先右再下,对角线是一个完全平方和,可以用n*(n+1)*(2n+1)/6这个公式来实现,那么对角线上面那一个斜线的和就是每次+1,+2,+3,…给你一个n和m,现在有一个点数为n的图,一开始是没有边的,有一种操作,你可以选一个数k,然后加k+1条边,这些边的两个端点的最大公约数必须是k,不能出现重边,自环,每进行一步操作就会产生k+1的代价,现在问你正好添加m条边的最小代价是多少,如果没有的话就输出-1。

2022-12-30 10:44:50 564

原创 Codeforces Round #830 (Div. 2)

9111222 433 6 945 10 15 205120 60 80 40 806150 90 180 120 60 3062 4 6 9 12 18630 60 90 120 125 125012213301给你一个长度为n的数组,你可以进行一种操作,将第i个数变为gcd(i,a[i]),这一步操作的花费为n-i+1,然后问你最少的操作花费将这个序列的gcd变成1。因为这个n最大不超过20,将最后两个数都进行一步操作就能将整个序列的gcd变成1,这个

2022-10-26 22:56:21 330

原创 Codeforces Round #779 (Div. 2)

一开始想的思路就是枚举这个gcd,从2到n,然后发现枚举到3的时候就已经填不满了,所以说答案只能在gcd = 2的情况下进行,因为gcd 需要 = 2,所以说n为奇数的话一定不行,n为偶数的话答案就是(n/2)!给出一个01串,要求任何一个连续的长度大于2的区间内1的个数大于等于0的个数,判断需要插入的最小字符个数。两个相邻的0之间最少有两个1,直接插入就行,下面看代码。

2022-10-19 17:27:41 220

原创 Codeforces Round #781 (Div. 2)

首先统计出现最多的数的次数是多少,然后可以遵循一种操作顺序,一定是最优的,就是先copy再交换,假如说一开始最多的数出现的次数是三次的话,那么先copy再交换后的最多的数出现的次数就是6次了,只进行了4次操作,然后会发现每次这种操作都是2的幂次*3,就二分一下就行,下面看代码吧。每秒钟每个有儿子节点感染的节点i,可以感染节点i的一个其他健康儿子节点,同时可以指定一个健康节点感染。每个询问a,b ,得到输出gcd(a+x,b+x) ,最多询问30次,问x的值是多少,范围(1

2022-10-18 23:05:33 141

原创 Codeforces Round #826 (Div. 3)

首先看第一步,一定是先换两两相邻的兄弟节点,而且这两个兄弟节点如果相差不为1这棵树就无解,先把所有的叶子节点换成兄弟两个顺序正确,然后发现可以将两个节点归成一个,继续进行这个操作,把这个新归成的节点就是他们的除以二上取整 ,然后最后归成1就结束了,下面看代码把。给你一个长度为n的数组,你需要将这个数组分成若干段,每一段的前面或者后面必须有一个值表示这一段的长度,暂且叫这个数为标签吧,作为标签的数就不能出现在任何区间里面,问你有没有一种划分方法满足上述题意。

2022-10-12 17:57:32 403

原创 Codeforces Round #825 (Div. 2)

就统计一下a数组和b数组的’0’的差值的绝对值,然后再统计a数组和b数组不同数的位置的个数,这个不同位置的个数是一定大于等于’0’的差值的绝对值的,如果相等的话那就是这个数,如果大于的话就是差值绝对值+1就行,下面看代码把。我想的是dp,f[i]表示的是以第i个数为结尾,最左边能扩展到的位置,如果当前的数为a[i],代表它最大能当a[i]个数的数组的最后一个,转移的时候就只看前一个能扩展到什么位置就行,下面看代码吧。将这个序列循环右移之后的结果就是。这不就相当于是两两交换吗。

2022-10-12 09:42:34 310

原创 Codeforces Round #783 (Div. 2)

a[r]) > 0,那么这段的贡献就是这段的长度,若sum < 0 那么这段的贡献就是这段的长度取负,若sum = 0,那么这段的贡献就是0,现在问你所有的划分方式中的贡献值之和的最大值。有一个长度为n的数组a和长度为n的数组b,数组b的所有元素都为0,你可以进行一种操作让bi = bi-ai 或 bi = bi + ai,问你最少需要多少次能使得b是一个单调递增的序列。现在有个n*m的迷宫,你可以向四个方向走,但是不能两次走同一个方向,问你最少走多少步从左上角走到右下角,若无法走到则输出-1。

2022-10-06 14:31:09 418

原创 Codeforces Round #787 (Div. 3)

这个题跟今年的天梯赛L2-3非常像,这个题的做法是这样的,我先找到x和y之间的路径,然后分别以这条路径上的每个点为根来进行dfs,来求出每个点的father,然后做法跟第三题是类似的,这次是对于每个必须经过点进行一遍向上搜索,如果遇到了已经搜过的点就答案加2*len,len是以这个必须经过的点为起点搜到不能搜的长度,然后最后答案再加上x和y之间的路径长度就行了,具体看代码。给你一个长度为n的字符串,每个字母的取值都为0,1,?有这么一个思路,就是枚举每一个人是小偷,那么他前面的都为1,后面的都为0,?

2022-10-03 22:34:04 366

原创 Codeforces Round #788 (Div. 2)

Sample input477 3 2 -11 -13 -17 -2364 10 25 47 71 96671 -35 7 -4 -11 -256-45 9 -48 -67 -55 7Sample outputNOYESYESNO给你一个长度为n的数组,每个元素都是不为0的数,你可以执行一步操作将这个数组的两个数的正负号互换,现在问你能不能通过无限次的交换使得这个数组是一个不降的一定是把负号都交换到最前面,就统计一下负数的数量为cnt,前cnt个数的绝对值一定是不升的,从cnt+1

2022-10-01 16:09:14 356

原创 【差分约束系统】

一般这种题数据量不会很大,下面请看代码。

2022-08-29 14:30:52 80

原创 【HNOI2012, 矿场搭建】割点

其中第 i 行以 Case i: 开始,其后是用空格隔开的两个正整数,第一个正整数表示对于第 i 组输入数据至少需要设置几个救援出口,第二个正整数表示对于第 i 组输入数据不同最少救援出口的设置方案总数。输入文件有若干组数据,每组数据的第一行是一个正整数 N(N≤500) ,表示工地的隧道数,接下来的 N 行每行是用空格隔开的两个整数 S,T(1≤S,T≤1000),表示挖煤点 S 与挖煤点 T 由隧道直接连接。Case 1 的四组解分别是 (2,4),(3,4),(4,5),(4,6);...

2022-08-10 17:22:04 142

原创 【POI 2008, BLO】割点

对于每一个点,如果这个点是割点,那么删了他之后对这个图来说是没有影响的,所以说这个点的贡献就是2*(n-1),如果这个点是割点的话,那么对于把它删去的所有连通块都乘一下就行,注意求那个割边的过程,就是如果与这个点相连的点没有返租边的话那就是割点了,下面看代码吧。有n个点m条边无向连通图的图,保证没有重边和自环。对于每个点,输出将这个点的所有边删除之后,有多少点对不能互相连通。这里的点对是有顺序的,也就是(u,v)和(v,u)需要被统计两次。第一行包含两个数n,m(1≤n≤105,1≤m≤5×105)。...

2022-08-10 12:11:45 124

原创 【2022牛客多校第六场 Z题 Game on grid】dp

有一个n*m的棋盘,Alice和Bob轮流进行操作,每操作一步都是从当前点到右边的点或下面的点,如果走到了标志为’A’的点就是Alice赢,如果走到了标志为’B’的点就是Bob赢,如果走到了不能再走的时候还没有决出胜负那就是平局,问Alice在不知道Bob怎么走的情况下能不能稳赢,稳平局,稳输。...

2022-08-07 13:20:39 176

原创 【2022杭电多校5 1003 Slipper】多个超级源点+最短路

除了能传送这个条件其他就是一个最短路,如果相距k层的每个点都都建一条边的话那么边就太多了,然后就可以想到在每一层建一个超级源点,这个超级源点距离这一层的点的距离是0,与距离这一层为k的超级源点的距离是p,然后wa掉了,因为只建立一个超级源点的话就会使得同一层的任意两个点的距离变成0,这是不成立的,然后就可以每一层建两个超级源点,一个进,一个出,这样问题就迎刃而解了,先来看一下这个样例图吧,每一层的蓝色点就是出点,红色点就是入点。...

2022-08-03 19:36:58 174

原创 【2022杭电多校5 1012题 Buy Figurines】STL的运用

因为这个过程是确定性的过程,比较清晰,所以就是个模拟题,至于怎么模拟这个就需要点技巧了,如果对于每一个人都O(m)的查询每个队列的长度的话那么复杂度就太高了,所以说我们可以维护一个set,这个set里面的节点信息是每个队列的人数和标号,然后再维护一个优先队列,这个优先队列里面的每一个节点信息是时间,人的编号,出队/入队,然后是按照时间来排的,如果时间相同,那么按照先出队后入队来排,然后就是模拟的过程了,具体可以看代码。...

2022-08-03 17:07:10 264

原创 【2022牛客多校5 A题 Don‘t Starve】DP

因为数据量是2000,所以每两个点之间的距离能在4e6的时间处理出来,然后这就是2000个点,4e6条边,时间完全ok,然后设状态dp[i]表示从(0,0)点到第i个点的能吃到食物的最多的数量,然后先把所有边按边长从大到小排序,然后从前往后dp就能保证那个距离的递减性,还有一些距离是相等的,需要在dp的时候处理出来与这个距离相同的所有边,然后把里面的值先存起来避免dp的时候把原来的值换掉以后再更新,就发生重复了,相当于环,那么看一下代码吧。...

2022-08-02 11:01:42 136

原创 【杭电多校第四场 B题】最短路图+缩点dp

题意就是给你一个有向图,每条边有两个权值,问第一个权值的最短路是多少,而且在第一个权值最小的情况下第二个权值之和的最大值是多少。

2022-07-31 21:02:58 247

原创 【Tarjan算法解决强连通分量问题】

对这个图进行dfs,对每个点记录一个dfs序,当dfs完他的子树的时候发现他的子树有返祖边或者连向另一块强连通分量的横插边的时候他以及他的那个能返祖到他的dfs序最大的子节点这个区间内的所有点就构成了强连通分量,思想挺简单的,现在来看一下例题吧。先来介绍一下强连通分量吧,如果在某个图中所有点都能两两到达,那么这个图就是强连通图,如果这个图不是强连通图,但是某个子图是强连通图,那么这个子图就是强连通分量。接下来m行,每行两个整数u,v(1≤u,v≤n)。给一个n个点m条边的图,输出所有的强连通分量。...

2022-07-27 20:38:15 135

原创 【2022牛客多校2 K Link with Bracket Sequence I】括号线性dp

这个题就是dp,dp[i][j][k]表示要构造的序列的第i项,左括号的个数比右括号的个数大j,给出的串a和目前构造的串b的最长公共子序列是k的个数,其实这个转移的话就是有两种情况,一种是第i个位置放左括号,一种是右括号,这样dp就跑出来了,还有一点需要注意的就是那个取模的时候做减法比直接取模快一点,下面看代码。对于每一个样例,给你一个n,m,和一个长度为n的字符串,现在需要构造出一个m个字符的字符串,给出的长度为n的字符串是你要构造出的子序列,问能构造出多少种合法并不同的括号序列。...

2022-07-23 20:41:47 373

原创 【2022 牛客第二场J题 Link with Arithmetic Progression】三分套三分/三分极值/线性方程拟合最小二乘法

给你一个长度为n的序列a,对于每一个元素,你可以更改其为任何值,但是代价为他们差值的平方,问你把这个序列改成等差数列的最小花费是多少。

2022-07-23 19:51:39 229

原创 【AcWing 327. 玉米田】状压dp

M+1行每行包含N个整数0或1,用来描述整个土地的状况,1表示该块土地肥沃,0表示该块土地不育。而且,相邻的土地不能同时种植玉米,也就是说种植玉米的所有方格之间都不会有公共边缘。农夫约翰的土地由M×N个小方格组成,现在他要在土地里种植玉米。现在给定土地的大小,请你求出共有多少种种植方法。非常遗憾,部分土地是不育的,无法种植。输出总种植方法对108取模后的值。第1行包含两个整数M和N。土地上什么都不种也算一种方法。...

2022-07-22 18:48:02 151

原创 【ACwing 1064 小国王】状压dp

你需要在一个n*n的棋盘放k个棋子,使得他们互不攻击,每个国王都会对其相邻的8个位置攻击,现在问你有多少个放置方案。

2022-07-22 10:16:10 102

原创 2021牛客多校训练营5(B题)

有n个盒子,每个盒子都会有一个球,球的颜色是黑色或者是白色,每种颜色的概率是1/2,查看盒子中的球的唯一途径就是打开盒子,打开第i个盒子的花费是wi,你也可以询问一次上帝,上帝会告诉你剩下的盒子中有多少个黑球,询问一次的花费是C,问确定所有盒子中的球的颜色的花费的期望值的最小值是多少有两种情况,一种是问上帝,一种是不问上帝,不问上帝的话一定是n个盒子全开完,答案就是sum[n],代表的是前n个权值的和,问上帝的话就是有n种情况,就是上帝的回答都是不同的,这n个盒子的状态有2^n种,首先按照开箱权值从小到大排

2022-07-13 22:40:20 175

原创 【codeforces round#800 B. Paranoid String】DP

一个"10"能被"0"替换,一个"01"能被"1"替换,给你一个长度为n的01串,问有多少子串能通过变换成为长度为1的串首先想到的就是DP了,f[i][0]表示的是以第i个元素结尾的能变换成"0"这个字母的所有方案数,f[i][1]表示的是以第i个元素结尾的能变换成"1"这个字母的所有方案数,那么当第i个元素是’0’时,f[i][0]能从f[i-1][1]来转移过来,而且还要+1,因为它本身就算是一个,这样子得出的结果是少的,因为000这种和111这种没算进去,f[i][0]的更新110这种也要算进去的,那

2022-07-07 18:22:21 133

原创 【codeforces round#800 D题 Fake Plastic Trees】树上贪心

给你一棵树,树上有n个节点,树的根节点是1,一开始树上的每个节点的权值都是0,现在有一种操作,选择一个节点,使得根节点到这个节点的路径上的所有节点的权值都增加,增加的幅度从根节点到这个节点呈不递减趋势,每个节点的权值有一个范围,在题目输入中给出,现在问你最少需要多少个这种操作才能使得每个节点的权值都能在自己的范围里。叶节点被更新到的机会只有一次,就是选择叶节点的时候,那么根据贪心的思想,首先把所有的叶节点都给更新到范围最大值,这里为什么要更新到最大值呢?因为它如果大了,它的父节点们就会有更大的空间,所以咱们

2022-07-07 17:17:12 225

原创 【codeforces Round#801 Div2 D题 Tree Queries】树形贪心结论

给你一棵树,你需要执行多次询问来确定一个节点x的位置,对于每一次询问,你需要选择一个节点,能得到这个节点与x节点的距离是多少,问至少需要多少次询问才能确定x的位置。有一个结论,就是选所有叶节点一定能表示出所有的节点,现在咱们来证明一下。选所有叶节点的话,叶节点的直接父节点就能唯一确定,那么咱们就把这些直接父节点作为新的叶节点来再唯一确定父节点的父节点,那么就能唯一确定所有的节点了,那么很显然选叶子节点是一定比选父节点优的,因为叶节点只有一个分支,不确定性更小,所以说如果最优解中有非叶子节点的话咱们可以替换成

2022-07-07 11:59:25 131

原创 【codeforces 1695C Zero Path】DP

给你一个n*m的矩阵,这个矩阵的每个数的取值是1或者是-1,问是否存在路径使得路径上的和为0,每个点只能往下走一格或者是往右走一格首先这个路径的长度一定是n+m-1,所以说这个长度为奇数的话就一定无解,因为都是1或者是-1,当长度是偶数的时候,用mx[i][j]表示从(1,1)到(i,j)的路径的最大值,mi[i][j]表示从(1,1)到(i,j)的路径的最小值,然后如果0在mx[n][m]和mi[n][m]之间的话那就一定有解,因为mx[n][m]和mi[n][m]一定是偶数,然后路径可以通过变换来使得m

2022-07-06 21:45:32 124

原创 【蓝桥杯】第十三届蓝桥杯C/C++省赛 B组题解

前言:因为考完蓝桥杯后在疯狂的补作业,所以没来得及更新hhh,现在就来更新一下当时在比赛场上的思路和理解吧,欢迎各位大佬批评指正!试题 A: 九进制转十进制第 i 位的权值是9^(i-1),然后就是每位上的数乘以这位数的权值加和即可,就是2 + 29 + 099 + 2999 = 1478所以说答案为 1478 试题 B: 顺子日期这个题就有很多歧义了,有的人说是4,有的人说是14,我当时写的是14,那么我阐述一下我的理由吧,因为他说了是在日期的yyyymmdd表示法中的,所以说前导零是存在

2022-04-11 16:48:32 1331 2

原创 【蓝桥杯】【第12届省赛B题 砝码称重】DP

题目链接:题意:给你一堆砝码,问能称出来多少个数量。比如1 和 3就能称出来1 2 3 4,因为是用天平测的,所以说可以放在左边也可以放在右边,看一下题面也可以理解分析:当时考试的时候我记得是直接暴搜,赛后查了一下是40分,看一下暴搜的代码吧:#include<iostream>#include<map>#include<cstdlib>using namespace std;typedef long long LL;const int N = 100

2022-04-06 18:18:39 331

原创 【蓝桥杯】【ACWing 1237 螺旋折线】思维->推公式

题目链接题意:如下图所示的螺旋折线经过平面上所有整点恰好一次。对于整点 (X,Y),我们定义它到原点的距离 dis(X,Y) 是从原点到 (X,Y) 的螺旋折线段的长度。例如 dis(0,1)=3,dis(−2,−1)=9给出整点坐标 (X,Y),你能计算出 dis(X,Y) 吗?分析:对于(x,y),那么咱们可以找一下规律,因为这个题的x坐标的绝对值是递增的,所以说咱们可以看一下这是第几个x,具体的请看这张图吧咱们可以这样想,以x为基准,找出这是第几个x,然后再看y与第x行的起点的距离

2022-04-06 16:07:21 486

贪吃蛇(游戏分为三个难度,游戏中有三种食物)

贪吃蛇(游戏分为三个难度,游戏中有三种食物)

2021-12-06

空空如也

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

TA关注的人

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