- 博客(21)
- 收藏
- 关注
原创 【宽度优先搜索BFS】骑士问题
例如下图(a)的骑士所在位置(图中有n的格子)的编号为“d4”(注意“d”和“4”之间没有空格)。因此,如图(a)所示的骑士(位于d4),可以到达位置c2,b3,b5,c6,e6,f5,f3和e2(图中有“x”标记的格子)。初始格子用“n”标记,目标格子用“N”标记,有障碍物的格子用“b”标记。一个可行的移动序列在图中用数字标记出来(a1,b3,a5,c6,e5,g4,h2,f1)。事实上,这也是最少的步数了。每一个测试数据的第一行是一个整数b(-1 <= b <= 62),表示棋盘中有障碍物的格子数目。
2025-06-19 13:37:39
384
原创 循环比赛(C++)
设有 N 个选手进行循环比赛,其中 N=2^M,要求每名选手要与其他 N-1 名选手都赛一次,每名选手每天比赛一次,循环赛共进行 N-1 天,要求每天没有选手轮空。这又成了一个整体的数。表格形式的比赛安排表,注意,如果数是小于等于 9 的,那么后面有两个空格,如果数是大于 9 的,那么后面有一个空格。拼好,于是1+(2*2)=5, 2+(2*2)=6 , 3+(2*2)=7 , 4+(2*2)=8 就有了。拼好,于是1+(1*2)=3, 2+(1*2)=4 就有了。
2025-06-11 09:10:15
318
原创 搭配购买(云朵)
但是商店老板跟他说,一些云朵要搭配来买才好,所以买一朵云则与这朵云有搭配的云都要买。所以我们可以用到并查集,记录他们的祖先,把这一组的所有的钱数和价值全部压在那一个祖先上。而在背包的时候,只用判断他是不是祖先,是就开始背包,不是就跳过。第 n+2~n+1+m 行,每行 ui,vi,表示买 ui 就必须买 vi,同理,如果买 vi 就必须买 ui。0<=m<=5000;第 1 行 n,m,w,表示 n 朵云,m 个搭配,Joe 有 w 的钱。第 2~n+1 行,每行 ci,di 表示 i 朵云的价钱和价值。
2025-06-11 08:49:22
298
原创 【并查集】3.1.1 Agri-Net最短网络
第二行..结尾: 后来的行包含了一个N*N的矩阵,表示每个农场之间的距离。理论上,他们是N行,每行由N个用空格分隔的数组成,实际上,他们限制在80个字符,因此,某些行会紧接着另一些行。约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场。为了用最小的消费,他想铺设最短的光纤去连接所有的农场。你将得到一份各农场之间连接费用的列表,你必须找出能连接所有农场并所用光纤最短的方案。只有一个输出,其中包含连接到每个农场的光纤的最小长度。第一行: 农场的个数,N(3<=N<=100)。
2025-06-11 08:40:12
244
原创 fairphoto
我们可以用一个数组是否为零来判断当前前缀和和之前的是否相同,如果相同,就在判断数组上标上当前点的位置,如果不同,就用当前点的位置减去之前点的位置,可以用一个数组来记录。n+1 行:每行一个整数xi,表示点的坐标,和一个字符(’G’ 表示黑点,’H’ 表示白点),中间用空格隔开,给出n 个点,每个点都有一个坐标xi,这些点中一些点是白点,另外的是黑点,求满足以下两个条件的最长的线段的长度。• 对于100% 的数据,n <= 10^5,1 <= xi <= 10^9。一行一个数,最长的线段的长度。
2025-06-09 18:20:12
186
原创 【中山纪念中学六年级程序设计思维班模拟赛第三场】修路(rood)
有 n 个好朋友,目前任意两个朋友家之间没有任何道路相连,其中第 i 个朋友家对应着修路费用 di,凡是连接到朋友 i 家的道路都要增加 di 的费用,每条道路连接两个朋友家。这道题是个贪心,看起来很吓人,实际上菜的要死,可以选中一个最小值来连接所有的点,其中每个点都要算一遍,最小值算n-1遍,再减去每个点算的最小值,就是n-1个最小值,最后相加并输出就行了。样例解释:可以在1号和2号,2号和3号,3号和4号这三对朋友之间修建道路,所需费用为(7+3)+(3+3)+(3+5)=24。
2025-06-08 21:52:26
251
原创 【中山纪念中学六年级程序设计思维班模拟赛第三场】修路(rood)
有 n 个好朋友,目前任意两个朋友家之间没有任何道路相连,其中第 i 个朋友家对应着修路费用 di,凡是连接到朋友 i 家的道路都要增加 di 的费用,每条道路连接两个朋友家。这道题是个贪心,看起来很吓人,实际上菜的要死,可以选中一个最小值来连接所有的点,其中每个点都要算一遍,最小值算n-1遍,再减去每个点算的最小值,就是n-1个最小值,最后相加并输出就行了。样例解释:可以在1号和2号,2号和3号,3号和4号这三对朋友之间修建道路,所需费用为(7+3)+(3+3)+(3+5)=24。
2025-06-08 21:48:51
155
原创 水果盛宴(fruit)
贝茜的有一个饱腹值上限 T(1<=T<=5,000,000)。吃一个橘子会增加她 A 点饱腹值,吃一个柠檬会增加她 B 点饱腹值(1<=A,B<=T),如果她愿意,贝茜可以最多喝一次水,这会立即使她的饱腹值变成一半,请你帮助贝茜求出她可以获得的最大饱腹值。贝茜又再一次地闯入了 Farmer John 的房子!她在厨房发现了一堆柠檬和一堆橘子(每堆都有无限多个),并且,她希望尽可能地多吃。这道题主要就是暴力递归,注意要用变量记录有没有喝过水,要是喝过了,就不能喝了。一行一个整数,表示贝茜可获得的最大饱腹值。
2025-06-08 21:40:42
232
原创 采访(interview)
接下来m 行,每行有m[i]+1 个数,首先输入m[i],表示这一组中一共有多少国家是敌对关系,之后输入m[i]个数,表示这m[i]个国家两两之间为敌对关系(一组敌对关系的国家中,每两个国家都构成敌对关系,比如这一组是1,3,4,那么1 和3,1 和4,3 和4 都构成敌对关系),若m[i] = 1,那么这个国家与其他国家都不构成敌对关系。100%的数据:0≤T≤50000,0≤n≤500,1≤m≤10,n=∑m[i],即m[1]+m[2]+…用了分组背包的做法,只要背好模版,或懂的道理,这道题都很简单。
2025-06-08 21:36:32
325
原创 愤怒的奶牛2(angry)
她认为这是她完全原创的:玩家将一个弹弓射到一个一维的场景中,该场景由位于数字线上各个点的一组干草包组成。每只奶牛都有足够的力量引爆其落地地点附近的干草包,我们的目的是使用一系列奶牛引爆所有的干草包。这道题我们可以用二分算法来模拟能量值R,我们一旦遇到求最大最小值就要想到二分算法,但在二分算法前,按照方法,我们应该先用快速排序排一下,才能进行二分算法。接下来N行,每行包含一个整数xi,表示每捆干草包的位置(0<=xi<=1,000,000,000)一行一个整数,表示最少所需要的每头奶牛的能量值R。
2025-06-08 21:30:13
234
原创 房间开灯(light)
贝茜只能进电灯开着的房间,并且贝茜只能从房间(x,y)走到四个方向的房间(x-1,y),(x+1,y),(x,y-1)和(x,y+1)(如果在边界的话,那可能会更少)。在这个样例中,贝茜可以使用房间(1,1)内的开关打开房间(1,2)和(1,3)的灯。然后她可以走到(1,3),使用(1,3)内的开关打开(2,1)的灯,接着可以通过(2,1)打开(2,2)的灯,然而(2,3)是黑暗的,她无法去打开(2,3)房间里的开关,因此,她最多只能打开 5个房间里的灯。一行一个整数,表示贝茜最多可以照亮的房间数。
2025-06-08 21:21:22
159
原创 2014年江北区】这是一道动规题(seq.pas/c/cpp)
/ 数组n1[0],n1[1],n1[2]分别记录余数为0,1,2的数字个数。else if(n1[2]>=2) // 如果没有余1的数字,去掉2个余2的数字。else if(n1[1]>=2) // 如果没有余2的数字,去掉2个余1的数字。=0) // 优先去掉1个余1的数字。=0) // 优先去掉1个余2的数字。// 读取数字个数n。if(s==0) // 如果总和余0,直接取全部数字。else if(s==1) // 如果总和余1。else if(s==2) // 如果总和余2。
2025-06-07 12:55:54
342
原创 【中山纪念中学六年级程序设计思维班模拟赛第三场】钻石(diamond)
Alice 有一个包含 n 行和 m 列的表格,其中每个单元格的字符为“.”或者“#”。把一个正方形旋转 45 度会变成菱形,形状如钻石。要将表格中的某区域视为钻石,其形状必须如正方形旋转 45 度后的菱形,且边缘必须仅由字符“#”组成,且其内部必须完全由“.”填满,不能为空。第一行包含两个正整数 n 和 m(1 ≤ n,m ≤ 2000),表示表格的行数和列数。接下来 n 行,每行包含 m 个“.”或“#”字符,描述表格的情况。样例 1 中的 3 个钻石用红线进行标记如下。输出表格中一共有多少个钻石。
2025-06-07 12:48:27
485
原创 团队背包(team)
思路:这是一道动态规划的题,可以每个物品循环一遍,因为数据只用25000,所以可以每个点都循环一遍,f[j]+=f[j-w[i]],f[i]代表承受i的重量有多少种可能数,(注意:由于承受0的重量也有1种可能,所以f[0]要被负初始值为1)然后从25000循环到0,如果m>0且还有可能每被算,且f[i]>0,那么ans+=i*min(m,f[i]),并m-=min(m,f[i]),最后输出一下就行了。对于 100% 的数据,满足 1<=M<=1,000,000,1<=N<=500,0<wi<=50。
2025-06-07 12:36:38
766
原创 道路阻塞(rblock)
我们把这些地方和路抽象成一张图,这张图里有 N 个点,共有 M 条边(每条边都是双向边),每条边都有一个长度,约翰的家在第 1 个点,农场在第 N 个点,两个点之间没有重复的边,并且这个图是一个连通图,每次约翰从家里到农场总会选一条最短的路径走。思路:打一下暴力,原本以为迪杰斯特拉会超时,没想到AC了,先算一次迪杰斯特拉,算出原本的最短路,再一条一条边乘2,算出之后的最短路的最小值,最后输出相减后的结果。对于 100% 的数据,满足 1<=N<=250,1<=M<=25000,1<=c<=10^6。
2025-06-07 12:26:30
692
原创 【动态规划】打包
你现在拿到了许多的礼物,你要把这些礼物放进袋子里。你只有一个最多装下V 体积物品的袋子,你不能全部放进去。你估计你能拿的最大重量为 G。现在你了解了每一个物品的完美值、重量和体积,你当然想让袋子中装的物品的完美值总和最大,你又得计划一下了。只要在普通01背包的基础上加上一个判断体积得循环就行了,f[i][j]代表重量为i,体积为j的最大价值。第三到N+2行:每行3个数 Ti Gi Vi 表示各礼物的完美值、重量和体积。第一行:G 和 V 表示最大重量和体积。输出共一个数,表示可能获得的最大完美值。
2025-06-07 12:13:17
277
原创 最远距离(house)
Jimmy 想建立一条长度为 Len 的主线大街,然后建立 K 条小街,每条小街的尽头有一间房子(小街的其它位置没有房子)。每条小街在主线大街的 P_i 处分支, 小街的长度用 L_i 表示,Jimmy 想知道最远的两个房子之间的距离是多少。对于 100% 的数据:1≤Len≤100,000,000;// 计算次大值mi(小街到主线左端点的距离b[i]-a[i]),排除已选ma的情况。// 计算每条小街到主线右端点的距离s[i]=a[i]+b[i],并更新最大值ma。
2025-06-07 10:49:31
274
原创 最大星星(airship)
浩瀚的长空中璀璨的星星,和地面上看到的星星不同,在太空中看到的星星是成一条直线的,一共 N(1<=N<=100,000)颗星星,编号为 1 到 N,每个星星有自己的体积。由于在飞船中很无聊,除了不停地玩弄手中失重的书和笔之外没有别的事可干,此时 Jimmy 说我们来玩游戏吧,一共玩了 M 轮(1<=M<=100,000),每一轮都是给出两个整数 L 和 R(1<=L<=R<=N),询问第 L 到第 R 颗星星之间最大星星的体积。对于每个查询区间[L,R],计算k=floor(log2(R-L+1))36。
2025-06-07 08:52:12
256
原创 乱键手机(mobitel)
例如,如果我们要获取字母‘a’,我们将按“2 键”一次,如果我们想要字母‘b’,我们将按“2 键”两次。第一个整数表示 “键 1”实际按出的数字,第二个整数表示“键 2”实际按出的数字,第三个整数表示“键 3”实际按出的数字,以此类推(且保证数字 1~9,每个数字当且仅当出现一次)。幸运的是,没有两个键是相同的。这道题不难,我们只要先求出这个字母原本所代表的数字,再循环一下,找到并输出代替他的数字就行了,如果和上一给数字相同,就先输出#,记住,要注意是,s和z是第四个字母,我比赛时就差点被坑了。
2025-06-02 20:52:49
872
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅