2026第四次萌新赛

📅 发布时间:2026/8/14 15:44:46
2026第四次萌新赛
2026第四次萌新赛签到M , G easyL , J midD , H , I mid - hardC , B , E , F hardK , AM题噢耶奶奶的龙刚开始算极限值把最后一个sin(1/x)用1/x替换掉了忘记等价无穷小的前提是1/x要趋近于0而现在是趋近于无穷而现在sin(1/x)是有界x是等价无穷小等价无穷小乘有界结果是0直接输出0即可。#includebits/stdc.h using namespace std; #define int long long signed main(){ int ans0; coutans; return 0; }G题 你逃不过我你信不信这个刚开始想的是循环相乘中间对10000取余但是这样到后面的时候就是超时然后通过一个个试样例发现到后面输出的只是一样的都是0313然后就分情况输出。#includebits/stdc.h using namespace std; #define int long long signed main(){ int n; cinn; int ans1; int sum0; if(n10000000){ cout0313; } else{ for(int i1;in;i){ ansans*i; ansans%10000; sumsumans; sumsum%10000; } if(sum10){ cout000sum; } else if(sum100){ cout00sum; } else if(sum1000){ cout0sum; } else{ coutsum; } } return 0; }L题A × B这道题是大数乘法数字过大普通整型存不下用字符串存储数字模拟竖式乘法。将两个字符串反转让个位放在下标 0方便位权计算。开大小为两数位数之和的数组双重循环逐位相乘乘积加到res[ij]。遍历数组统一处理进位。倒序读取数组拼接答案去掉前导零。#includebits/stdc.h using namespace std; #define int long long signed main(){ string a,b; cinab; reverse(a.begin(),a.end()); reverse(b.begin(),b.end()); vectorintres(a.size()b.size()); for(int i0;ia.size();i){ for(int j0;jb.size();j){ int a1a[i]-0; int b1b[j]-0; res[ij]res[ij]a1*b1; } } int c0; for(int i0;ires.size();i){ int sumres[i]c; res[i]sum%10; csum/10; } string ans; bool oktrue; for(int ires.size()-1;i0;i--){ if(res[i]0ok){ continue; } okfalse; ans.push_back(res[i]0); } coutans; return 0; }J题小苯的星轨区分原点和普通点用 z 记录原点数量。原点最多有一个最后答案再加上n-1 对每个非原点建立gcd函数找到最大公约数把坐标向量约分并统一正负方向把把下面的翻到上面水平直线的都翻到正半轴保证同一直线上的向量形式一致。用map 统计每条直线上的点数用组合公式c*(c-1)/2表示c里面有两个不同的点可以组成星对计算同直线非原点组成的点对。#includebits/stdc.h using namespace std; #define int long long #define PII pairint,int int gcd(int a,int b){ while(b0){ int ta%b; ab; bt; } return a; } void solve(){ int n; cinn; int z0; int ans0; mapPII,intmp; int x,y; for(int i0;in;i){ cinxy; if(x0y0){ z; continue; } int ggcd(abs(x),abs(y)); xx/g,yy/g; if(y0||y0x0){ x-x; y-y; } mp[{x,y}]; } for(auto it:mp){ PII pit.first; int cutit.second; ansanscut*(cut-1)/2; } if(z0){ ansans(n-1); } coutans; coutendl; } signed main(){ int t; cint; while(t--){ solve(); } return 0; }D题小圆爱玩龙龙Easy允许在选出的道具里至多免费拿走一件免费道具不占用预算其余道具总花费不能超过给定预算w1目标求最大快乐值。依次假设每一件道具 f 作为免费获取的道具直接获得它的快乐值(v[f])。对于除 f 之外的所有道具执行 01 背包。dp[j]代表预算最多花费j元时购买付费道具能得到的最大快乐值。付费道具在预算 w1 内的最优结果为(dp[w1])加上免费道具快乐值(v[f])更新全局最优答案。枚举完所有可免费的物品后输出最大快乐值。#includebits/stdc.h using namespace std; int main(){ int n,w1; cinnw1; vectorintw(n1),v(n1); for(int i0;in;i){ cinw[i]v[i]; } int ans0; for(int f0;fn;f){ vectorintdp(w11); for(int i0;in;i){ if(if){ continue; } for(int jw1;jw[i];j--){ dp[j]max(dp[j],dp[j-w[i]]v[i]); } } ansmax(ans,dp[w1]v[f]); } coutans; }