某人有n袋金幣,其中第i袋內金幣的數量是ai。現在他決定選出2袋金幣送給小hi,再選2袋金幣送給小ho,同時使得小hi和小ho得到的金幣總數相等。他想知道一共有多少種不同的選擇方法。
具體來說,有多少種下標四元組(i, j, p, q)滿足i, j, p, q兩兩不同,並且i < j, p < q, ai + aj = ap + aq。
例如對於陣列a=[1, 1, 2, 2, 2],一共有12種選法:
i j p q
1 3 2 4
1 3 2 5
1 4 2 3
1 4 2 5
1 5 2 3
1 5 2 4
2 3 1 4
2 3 1 5
2 4 1 3
2 4 1 5
2 5 1 3
2 5 1 4
第一行包含乙個整數n。
第二行包含n個整數,a1,
a2,a
3...
an
。a_1, a_2, a_3 ... a_n。
a1,a2
,a3
...
an。
對於70%的資料,1 <= n <= 100
對於100%的資料,1 <= n <= 1000, 1 <= a
ia_i
ai <= 1000000
不同選擇的數目
5
1 1 2 2 2
12
參考討論給出的思路,使用hash+容斥原理技術解決問題
#includeusing namespace std;
#define n 2000020
int f[n],g[n],a[n];
long long ans;
int n;
int main()
for(int i=0;i當然這麼寫有點浪費空間,可以結合map函式改進
#includeusing namespace std;
#define n 1010
int a[n];
mapf,g;
long long ans;
int n;
int main()
for(int i=0;i} for(int i=0;i} cout
}
小Hi和小Ho的禮物
某人有n袋金幣,其中第i袋內金幣的數量是ai。現在他決定選出2袋金幣送給小hi,再選2袋金幣送給小ho,同時使得小hi和小ho得到的金幣總數相等。他想知道一共有多少種不同的選擇方法。具體來說,有多少種下標四元組 i,j,p,q 滿足i,j,p,q兩兩不同,並且i j,p q,ai aj ap aq。...
hiho1505 小Hi和小Ho的禮物描述
小hi和小ho的禮物 描述某人有n袋金幣,其中第i袋內金幣的數量是ai。現在他決定選出2袋金幣送給小hi,再選2袋金幣送給小ho,同時使得小hi和小ho得到的金幣總數相等。他想知道一共有多少種不同的選擇方法。具體來說,有多少種下標四元組 i,j,p,q 滿足i,j,p,q兩兩不同,並且i j,p q...
hihoCoder 1606 小Hi和小Ho的密碼
時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述小hi和小ho一直使用加密的方式傳輸訊息。他們使用如下方法來生成一組密碼 首先小hi和小ho選擇乙個整數 n pk 其中p質數 k是正整數,也即n是質數或質數的冪 其次,他們會求出兩個整數a和b滿足0 a b n,並且,n...