日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

问题 F: 分盒子(经典)

發布時間:2024/9/3 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 问题 F: 分盒子(经典) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題 F: 分盒子
時間限制: 1 Sec 內存限制: 128 MB

[提交][狀態][討論版]
題目描述
國際婦女節馬上就要到了!波利卡正在為假期做準備。

商店里有n個糖果盒出售。這個盒子里有糖果。

Polycarp希望為k個女孩準備最多的禮物。每一份禮物將由兩個盒子組成。女孩們應該能夠平等地分享每一份禮物,所以一份禮物(在一對盒子里)中的糖果總數應該能被k整除。換句話說,如果di+dj能被k整除,那么兩個盒子i和j (i≠j)可以組合作為禮物。

Polycarp能提供多少個盒子?當然,每個盒子只能是一件禮物的一部分。Polycarp不能“部分”使用盒子,也不能在盒子之間重新分配糖果。

輸入
輸入的第一行包含兩個整數n和k(1≤n≤2?105,1 ≤k≤110)——箱子數量和號碼的女孩。

輸入的第二行包含n個整數d1,d2,…,dn(1≤di≤109),其中di為第i個盒子中的糖果數量。

多組數據輸入

輸出
打印一個整數——Polycarp可以作為禮物贈送的盒子的最大數量。

樣例輸入
7 2
1 2 2 3 2 4 10
8 2
1 2 2 3 2 4 6 10
7 3
1 2 2 3 2 4 5
樣例輸出
6
8
4
提示

第一組可以選(2,3),(5,6),(1,4),可以使用6個盒子,所以答案為6
/*
之前做過 一個 統計 一個素數對和等于n 的素數對的個數 的題目,和這題有異曲同工之妙。

湊一對和為某個值的對數,就要像辦法拆分分別統計可以湊成一對的單個元素的個數。
這題,要使一對和能整除k。
先對數據預處理,每個數對k取余以簡化計算,取余的結果同數組mp數組統計個數。
最終只要統計的mp[i],mp[k-i]有值就來計算答案。
特別考慮mp[0],和 i==k-i 的情況
*/
ac_code:

#include <bits/stdc++.h> using namespace std; int mp[115];int main(){int n,k;while(~scanf("%d%d",&n,&k)){int x;memset(mp,0,sizeof(mp));for(int i = 0; i < n; i++){scanf("%d",&x);mp[x%k]++;}int ans = mp[0]/2;for(int i = 1; i <= k/2; i++){if(mp[i]&&mp[k-i]){if(i != k-i) ans += min(mp[i],mp[k-i]);else ans += mp[i]/2;}}printf("%d\n",ans*2);}return 0;}

總結

以上是生活随笔為你收集整理的问题 F: 分盒子(经典)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。