题解 CF1729D
题目链接 CF1729D
题意
有长度为 n 的数组
分析
因为每次都是选择对应的
那么不妨再写一个数组
结论 1 :长度都为 2。
证明:
对于长度大于 2 的每一组,一定可以将其中
因此,对于最终组数最多情况,必然存在每一组长度都为 2 的情况。
结论2 : 每一组的 要么是都 , 或者有一个 。
证明显然。
结论3 :对于每一个 的下标,能选择 的就不让其选择 的。
因为要使组数最大,因此显然。
如此我们就有了代码的思路:
先对
对于这个
判断与我们现在没有选择的最大负值
否则将其下一个
AC 代码
#include <bits/stdc++.h> using namespace std; const int N = 1e5+5; int n, m; int a[N]; int T; signed main() { cin>>T; while(T--) { cin>>n; for(int i=1; i<=n; ++i) { cin>>a[i]; } for(int j=1; j<=n; ++j) { int x; cin>>x; a[j]=x-a[j]; } sort(a+1,a+n+1); int l=0; for(int i=1; i<=n; ++i ) { if(a[i]<0) l=i; else break; } int cnt=0; for(int i=l+1; i<=n; ++i) { if(l!=0&&a[i]+a[l]>=0) cnt++,l--; else { ++i; if(i<=n) cnt++; } } cout<<cnt<<endl;; } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】