acgo题库
  • 首页
  • 题库
  • 学习
  • 天梯
  • 备赛

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
  • 资讯
  • 竞赛
  • 讨论
  • 团队
  • 商城
登录
注册
题目详情提交记录(0)
  • 题解

    #include<bits/stdc++.h> using namespace std; int main(){ int n,m; cin>>n>>m; vector<int> a(n); for(int i=0;i<n;i++){ cin>>a[i]; } int n1=n/2,n2=n-n1; vector<int> l,r; for(int ms=0;ms<(1<<n1);ms++){ long long s=0; for(int i=0;i<n1;i++){ if(ms>> i & 1) s+=a[i]; } l.push_back(s%m); } for(int ms=0;ms<(1<<n2);ms++){ long long s=0; for(int i=0;i<n2;i++){ if(ms>> i & 1) s+=a[n1+i]; } r.push_back(s%m); } sort(l.begin(),l.end()); int ans=0; if(!l.empty()) ans=max(ans,l.back()); for(int y:r) ans=max(ans,y); for(int y:r){ int ne=m-y; auto it=lower_bound(l.begin(),l.end(),ne); if(it!=l.begin()){ --it; ans=max(ans,(*it+y)%m); } if(!l.empty()){ int xm=l.back(); ans=max(ans,(xm+y)%m); } } cout<<ans; return 0; }

    userId_undefined
    未知
    模拟·模拟练习生倔强青铜冒泡宗师→排序元老
    0阅读
    0回复
    0点赞
暂无数据

提交答案之后,这里将显示提交结果~

首页