题解 | #游游刷题#

游游刷题

https://ac.nowcoder.com/acm/problem/262528

通过使用map容器存储每张试卷题的个数对k取余的值 及key=0,证明有mp[key]张试卷题数是k的倍数,可以单独放到一天 然后key和k-key两组数放到一天计算后mp[k-key]置零防止重复计算

#include<bits/stdc++.h> #include<unordered_map> #define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0) using namespace std; typedef long long ll;

map<int,int> mp; int n, k;

void solve() { cin >> n >> k; int cnt=0; for (int i = 0; i < n; i++) { int a; cin >> a; mp[a%k]++; }

// v的取值区间 1~k-1
for(auto &[v,w]:mp){
    if(v==0){
        cnt+=w;
        continue;
    }
    //如果k是2的倍数 mp[v]一定是2的倍数
    if(2*v==k)
        cnt+=(w/2);
    else{
         cnt+=min(w,mp[k-v]);
        mp[k-v]=0;
    }
}
cout<<cnt<<endl;

}

int main() { IOS; int _ = 1; //cin >> ; while (--) { solve(); } return 0; }

全部评论

相关推荐

不愿透露姓名的神秘牛友
10-29 21:14
疯犬丨哈士奇:喜欢你的人会主动表白,对你有想法的人会很主动,所以要你的公司不会吊着你所以懂了吧
点赞 评论 收藏
分享
10-29 15:51
嘉应学院 Java
后端转测开第一人:你把简历的学历改成北京交通大学 去海投1000份发现基本还是没面试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务