- 博客(27)
- 问答 (2)
- 收藏
- 关注
原创 PAT 2024年春季(甲级)
对于PTA(包括天梯赛、睿抗、PAT等等)中常考的描述文字和要求较多的问题,我们拆分成多个问题,分别求解,对于姓名和五个数字的匹配,我们用map来储存(进而可以直接用map判断考生是否存在),用结构体来存这五个数字。因为数据可能存在因重叠而导致的重复计算情况,所以我们要遍历每一个3*2的矩阵,注意输出的格式问题。用d数组来存储每个点的度数,取min,再去遍历,即可得到度数最小的点。1.度数最小的点的度数不为0,无法进行拓扑,则不存在唯一的拓扑序。再计算只有左子节点的根的数量和只有右子节点的根的数量的差值。
2024-03-13 11:29:33
563
1
原创 PAT 2024年春季(乙级)
再从大小判断,n个不同的偶数组成的数最小是 (2 + 2 * n)* n / 2 = (1 + n) * n ,m个奇数组成的最小的数是 (1 + 2 * m - 1) * m / 2 = m * m。对于PTA(包括天梯赛、睿抗、PAT等等)中常考的描述文字和要求较多的问题,我们拆分成多个问题,分别求解,对于姓名和五个数字的匹配,我们用map来储存(进而可以直接用map判断考生是否存在),用结构体来存这五个数字。给定n和m,让我们判断能不能由n个不同的偶数和m个不同的奇数组成2024。
2024-03-12 21:18:52
705
原创 Codeforces Round 642 (Div. 3) D. Constructing the Array
每次选择,我们要先选择最长的字段,在长度相等的情况下选择最靠左边的。我们可以将最靠左边的这个条件转换为右边剩余长度最长的,这样字段和剩余长度的增减性相同,我们可以用pair来存储字段长度和剩余长度,用大根堆来存储每个线段,每次取出队头元素,得到答案。我们可以发现每次填充一个数之后,我们就得到两段新的线段。所以按照题目所说的方法,我们模拟就可以得到答案。但我们需要把更新控制到nlog(n)以内。题意:根据所示方法构造数组。
2024-01-07 00:36:40
414
原创 Codeforces Round 646 (Div. 2) C. Game On Leaves
题意:给定一颗树和一个节点x,每次从这棵树上删除一个叶子节点及其任何一条连接的边,Ayush先手,问谁先取到节点x。不难发现,当节点x相连的节点及其子节点有奇数个时,Ayush胜利,反之,Ashish胜利。对于样例一,不管Ayush先选择去掉哪一个节点,节点x都会被Ashish拿走。我们可以得出对于Ayush如果节点x本来就是叶子节点,那他就可以直接取走。Ayush可以先取节点4,然后将必败态留给Ashish,一定胜利。对于样例二,Ayush可以直接拿走节点x。1.节点x的节点及其子节点有奇数个。
2024-01-06 17:30:30
438
原创 Codeforces Round 635 (Div. 1) A. Linova and Kingdom
首先,这个节点对答案的正贡献是到根节点的距离deep,因为我们选择一个节点就一定会选择他的子节点,所以选择这个点会让他所有的子孙节点的贡献-1,所以负贡献为s[i](s数组表示该节点子孙节点的数量),总的贡献就是 deep - s[i] ,将每个点的贡献排序,从大到小选择k个,即为最大值。对于任意一个父节点,我们如果选择父节点而不选择他的子节点,那么一定不如选择他的子节点,可以得到更大的数。题意:给定一棵树,选择k个点,求每个点到根(1是根节点)之间最短路径上非选择点数量之和的最大值。
2024-01-05 19:20:05
831
原创 Codeforces Round 640 (Div. 4) G. Special Permutation
现在我们只用解决如何将这两个序列连接起来,因为相差为2-4,要求奇偶性不同,那么连接的这两个数就只能相差3,即用 9 - 3 去连接,然后在从10输出,6和10相差为4,如果偶数最高项是8,那么就从8输出。题目样例中2是已知无法构造的,我们尝试3,发现也无法构造,从4开始似乎每一个都可以构造。题意:给你一个数n,请你构造长度为n的排列(1-n中每个数字都要出现一次),使得相邻的两个数之间差的绝对值在2-4之间。我们尝试这是怎么构造出来的,当看到相差为2时,第一瞬间想到的是奇偶性相同的顺序序列。
2024-01-04 23:50:36
531
原创 Codeforces Round 723 (Div. 2) C2. Potions (Hard Version)
当碰到负数时,如果加上这个负数,我们的值仍然是非负数,那么本着贪心的原则,能贪则贪,我们就选择这个。对于这道题就是当我们遇上加上这个数是负数时,如果之前有比这个数更小的负数,我们就删去之前更小的那个负数,选择这个数。反悔贪心也就是指我当前阶段觉得这个可以贪,那我就贪,但当我走到下一个阶段发现贪当前这个远胜于贪之前那个的时候就反悔,不再要之前贪的那个了,俗称“渣男”。题意:给定长度为n的数组,每个元素可选择要或者不要,初始值为0,要求在保证得到的值始终不为负的情况下,能选择的最多的个数。
2024-01-04 22:34:16
428
原创 Codeforces Beta Round 1 B. Spreadsheets
对于BC23转为R23C55,我们只需要顺序遍历就可以得到C对应的值,即B为(B - A)* pow(26 , 1) + (C - A)* pow(26 , 0)。对于R23C55转换成BC23则需要注意,在这种表示方法中并不存在0的表示,所以我们在每次取模之后,如果遇到0,则需要把他转换为26,同时在 除以26的时候减一。观察BC23和R23C55,发现第二种表示方法仅有RC两个字母,并且不相邻,因此我们可以判断出当前的表示方法是那种。题意:完成两种表示方式之间的转换。因此我们需要用"Z"来表示0,
2024-01-03 10:56:04
461
原创 CSDN第二十九期周赛
每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。现在有一截楼梯,根据你的腿长,你一次能走 1 级或 2 级楼梯,已知你要走 n 级楼梯才能走到你的目的楼层,请实现一个方法,计算你走到目的楼层的方案数。典型的DP问题,用数组f[i][j]来记录i个超级糖豆,j个普通糖豆的数量,理清状态数组之间的转换关系,这道问题就可以解决了。呃,这也是一道DP问题,这次周赛考了三道DP,不过第二题难度应该是最高的了。
2023-02-17 17:38:25
138
原创 CSDN第二十八期周赛
如果能想到二分,这道题也会变得比较容易,但如果在数学思维方面思考可能就有点偏了,因为每天完成的任务是整数个,所以用数学公式推到就会出现错误。这道题在思维上是没有什么难度的,难一点的地方可能在代码实现上,提供一种C++的实现方式,用Java或者python的话,代码应该会更短一些。其中”.”会被记录成”dot”,”@”记录成”at”。两个按钮:前进和后退,按前进,小C会前进 m 米,按后退,小C会后退 n 米。小海豚喜欢打游戏,现在它在操纵游戏人物小C逃脱废弃的隧道,逃生装置在小C的前方 X 米远的位置。
2023-02-16 08:28:00
227
原创 CSDN第十五期周赛
第三题有点考察思维了,既然说不能成环那我们为了保证建立最多的边,只要使两方边尽可能相等就可以了,(n/2) * (n - n/2),这就是答案了。也可能是第一次使用类似的oj,不太适应他的评测机制,总感觉自测比较麻烦。不过评测机倒是挺快的。第四题是之前给新生培训的一道原题,dp+贪心的解法就可以做出来。第一次在csdn周赛中取得满分的成绩,先来说一些做题体验吧。总的来说这次体验还是蛮不错的,也希望自己能取得更好的成绩。第二题只需记录最大的数字,最后输出最大数+1即可。这次的题感觉比以往几期稍微简单一点。
2022-12-19 15:24:02
308
2
原创 树与二分图-2022RoboCom 世界机器人开发者大赛-本科组(省赛)
2022RoboCom 世界机器人开发者大赛-本科组(省赛)第五题(二分图的应用)。
2022-08-01 22:29:58
625
1
原创 货币系统(闫氏DP分析法求解DP问题)
给定 V 种货币(单位:元),每种货币使用的次数不限。不同种类的货币,面值可能是相同的。现在,要你用这 V 种货币凑出 N 元钱,请问共有多少种不同的凑法。输入格式第一行包含两个整数 V 和 N。接下来的若干行,将一共输出 V 个整数,每个整数表示一种货币的面值。输出格式输出一个整数,表示所求总方案数。数据范围1≤V≤251≤N≤10000答案保证在long long范围内。输入样例:3 101 2 5输出样例:10难度:简单 ..
2022-01-26 11:33:21
182
原创 奶牛棒球(枚举与双指针)
农夫约翰的N头奶牛排成一排,每头奶牛都位于数轴中的不同位置上。它们正在练习投掷棒球。农夫约翰观看时,观察到一组三头牛(X,Y,Z)(X,Y,Z)完成了两次成功的投掷。牛X把球扔给她右边的牛Y,然后牛Y把球扔给她右边的牛Z。约翰指出,第二次投掷的距离不少于第一次投掷的距离,也不超过第一次投掷的距离的两倍。请计算共有多少组牛(X,Y,Z)(X,Y,Z)可能是约翰所看到的。输入格式第一行包含整数N。接下来N行,每行描述一头牛的位置。输出格式输出奶...
2022-01-17 12:46:09
362
原创 dfs-递归实现指数型枚举
dfs——深度优先搜索。用一张图来表示的话,应该是这样,先向深处搜索,当搜索到最后一个时再回溯。就是按照这样的顺序进行搜索。以下面这道题为例:从1∼n1∼n这nn个整数中随机选取任意多个,输出所有可能的选择方案。输入格式输入一个整数nn。输出格式每行输出一种方案。同一行内的数必须升序排列,相邻两个数用恰好11个空格隔开。对于没有选任何数的方案,输出空行。本题有自定义校验器(SPJ),各行(不同方案)之间的顺序任意。数据范围1≤n≤151≤n≤15...
2021-12-28 08:48:25
204
原创 汉诺塔问题求解
古代某寺庙中有一个梵塔,塔内有3个座A、B和C,座A上放着64个大小不等的盘,其中大盘在下,小盘在上。有一个和尚想把这64 个盘从座A搬到座B,但一次只能搬一个盘,搬动的盘只允许放在其他两个座上,且大盘不能压在小盘上。现要求用程序模拟该过程,输入一个正整数n,代表盘子的个数,编写函数void hanoi(int n,char a,char b,char c)其中,n为盘子个数,从a座到b座,c座作为中间过渡,该函数的功能是输出搬盘子的路径。输入格式:输入在一行中给出1个正整数n。输出格
2021-12-20 11:44:26
776
原创 计算PI的值
对于这类问题,是有一种固定的思路的。首先我们要注意到这几个问题:1,看清楚题目中的公式。2,每一项数的变换规律。PI的公式如图所示。接收用户从键盘输入的一个整数x,该整数一定在1到9之间。x的作用是,指定PI的计算公式中,最后一项的绝对值要小于:例如当x等于1时,表示计算PI的公式中,最后一项要小于0.1,也就是此时PI的近似值是计算数列中的的前六项的和,再乘以4(因为数列累加和的值只是PI/4)。x=2,最后一项小于0.01;x=3,最后一项小于0.001,以此类推。计算完毕时,.
2021-12-16 18:45:07
2627
原创 约瑟夫环的函数问题
约瑟夫问题:N个人围成一圈,从第一个人开始报数,数到M的人出圈;再由下一个人从1开始报数,数到M的人出圈;……直到只剩1人,输出依次出圈的人的编号。N,M由键盘输入,0 <M <= N <20。函数第一个参数设计为指针,传主函数的数组作为参数。输出时,每个数字后有且仅有一个空格。例如N=7,M=2,表示7个人围坐一圈,从1号开始报数,数到2的就出列。第一轮转圈中,2、4、6号依次出列。还剩下7、1、3、5四个数字。第二圈又是数到2的数列,1和5出列。第三圈的时候,只剩下3和
2021-12-16 09:25:11
730
原创 连号区间数
小明这些天一直在思考这样一个奇怪而有趣的问题:在1∼N1∼N的某个排列中有多少个连号区间呢?这里所说的连号区间的定义是:如果区间[L,R][L,R]里的所有元素(即此排列的第LL个到第RR个元素)递增排序后能得到一个长度为R−L+1R−L+1的“连续”数列,则称这个区间连号区间。当NN很小的时候,小明可以很快地算出答案,但是当NN变大的时候,问题就不是那么简单了,现在小明需要你的帮助。输入格式第一行是一个正整数NN,表示排列的规模。第二行是NN个...
2021-12-15 23:30:07
397
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人