码迷,mamicode.com
首页 > 其他好文 > 详细

小Hi和小Ho的礼物

时间:2018-06-12 22:31:49      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:包含   span   long   .com   using   end   参考   nbsp   font   

 

题目:小Hi和小Ho的礼物

技术分享图片

注:【i、j、p、q】为下标


 

 个人感觉这道题是有一定难度的。读者可以参考一下【四平方和】的解题思路

 

分析过程下次补上

 

代码如下:

 1 #include <iostream>
 2 #include <unordered_map>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int n, a[1000];
 8     long long ans = 0;
 9     unordered_map<int, int> cnt1, cnt2;
10     
11     cin >> n;
12     
13     //预处理cnt1,cnt1[X]表示“包含X枚金币的袋子个数”
14     for(int i = 0; i < n; i ++)
15     {
16         cin >> a[i];
17         cnt1[a[i]]++; 
18     }
19     //预处理cnt2,cnt2[X]表示“选出2个袋子,金币之和为X的选法种数”
20     for(int i = 0; i < n; i ++)
21         for(int j = i + 1; j < n; j ++)
22             cnt2[a[i] + a[j]]++;
23     
24     for(int i = 0; i < n; i ++)
25         for(int j = i + 1; j < n; j ++)
26         {
27             if(a[i] != a[j])    //容斥原理 
28                 ans += cnt2[a[i] + a[j]] - cnt1[a[i]] - cnt1[a[j]] + 1;
29             else
30                 ans += cnt2[a[i] + a[j]] - cnt1[a[i]] - cnt1[a[j]] + 3;
31         }
32     cout << ans << endl;
33      
34     return 0;
35 } 

 

运行结果如下:

技术分享图片

 

小Hi和小Ho的礼物

标签:包含   span   long   .com   using   end   参考   nbsp   font   

原文地址:https://www.cnblogs.com/Tuple-Joe/p/9174909.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!