L CTR篮球题目分析一共有两排数量为 n 的篮球队伍 现在要在这两个队伍中任取 x 个人组成一个队伍且不能连续选择同一排的学生求所选的队伍最大的总身高。解题思路根据题目我们可以得出这样一个结论如果选择第一排第 i 位学生上一个选中的学生只能来自第二排编号小于 i同理如果选择第二排第 i 位学生上一个选中的学生只能来自第一排编号小于 i。这个时候我们可以利用动态规划的思想。设 max0遍历到当前编号最后一人选自第一排所能得到的最大总身高设 max1遍历到当前编号最后一人选自第二排所能得到的最大总身高。max0 max(max0, max1 第一排的第 i 位置的值)max1 max(max1, max0 第二排的第 i 位置的值)而最后的答案则为 max(max0, max1).代码实现#includebits/stdc.h#definelllonglongusingnamespacestd;ll a[100010];ll b[100010];voidsolve(){intn;ll ans00,ans10,ans0;cinn;for(inti1;in;i)cina[i];for(inti1;in;i)cinb[i];for(inti1;in;i){ll tem0ans1a[i];ll tem1ans0b[i];ans0max(ans0,tem0);ans1max(ans1,tem1);}ansmax(ans0,ans1);coutans;}intmain(){ios::sync_with_stdio(false);cin.tie(0);solve();}G GCD与MINI题目分析给了我们一个长度为 n 的数组我们可重新排列数组判断是否可以找到一个以 i 为分界线左边所有数的最小值 右边所有数的最大公约数。解题思路既然是让我们判断是否存在 以 i 为分界线左边所有数的最小值 右边所有数的最大公约数。那么我们可以判断的是左边的最小值一定是整个数组的最小值所以我们只需要找到是否存在 x ( 1 x n - 1) 个数的 gcd 等于这个最小值。特殊情况如果数组中的最小值的个数不止一个那么就我们可以直接输出 “Yes”如果数组只有两个数那么如果这两个数相等则输出 “Yes” 反之输出 “No”。代码实现#includebits/stdc.h#definelllonglongusingnamespacestd;ll a[100010];voidsolve(){intn,cnt0;cinn;for(inti1;in;i)cina[i];if(n2){if(a[1]a[2]){coutYesendl;}else{coutNoendl;}return;}sort(a1,a1n);if(a[1]a[2]){coutYesendl;return;}vectorllv;for(inti2;in;i){if(a[i]%a[1]0){cnt;v.push_back(a[i]);}}if(cnt2){coutNoendl;return;}ll temv[0];for(autoit:v){temgcd(tem,it);if(tema[1]){coutYesendl;return;}}coutNoendl;}intmain(){ios::sync_with_stdio(false);cin.tie(0);intT;cinT;while(T--){solve();}}