2026江南程序设计联盟暑假多校训练第二场_补题题解 K 蛇形走位题目分析本题要求我们求出起始在数轴 0.5 处的点经过 n 次自定义方向的移动后最大经过原点次数。解题思路既然题目告知我们每次移动的方向是自定义的也就代表移动一次过后都要再次面临着选左选右的问题既然如此我们就把它所有情况遍历一遍然后经过比较得到最大的就好。这里用贪心是不可取的因为有时候主动放弃一次穿越后续可以收获两次穿越而贪心会直接错过所以贪心是不可取的我采取的是 dfs当然dp也是可以的。代码实现#includebits/stdc.husingnamespacestd;inta[25];intn;intans0;voiddfs(intstep,doubledist,intcnt){if(stepn){ansmax(cnt,ans);return;}dfs(step1,dista[step],cnt(dist*(dista[step])0?1:0));dfs(step1,dist-a[step],cnt(dist*(dist-a[step])0?1:0));}voidsolve(){cinn;for(inti0;in;i){cina[i];}dfs(0,0.5,0);coutans;}intmain(){solve();}L 小组合作题目分析一共有 n 个人他们分别有相应的社牛值而我们现在要将这 n 个人进行分组保证每个组的数量要大于等于该组社牛值最大的数求我们最多可以组几个队伍。解题思路既然要保证每个组的数量要大于等于该组社牛值最大的数我们可以根据社牛值最大的那位同学先划分出来一个组然后再从小到大进行分组最后不能组成一组的同学全部归为我们一开始分出的组。代码实现#includebits/stdc.husingnamespacestd;inta[100010];voidsolve(){intn;cinn;for(inti1;in;i)cina[i];sort(a1,an1);if(a[n]n){cout-1;return;}intans1,cnt0;for(inti1;in-a[n];i){cnt;if(cnta[i]){ans;cnt0;}}coutans;}intmain(){solve();}