0
已解决
张睿杰
初级天翼
初级天翼
1610 problem(M-N=P)
题目描述 Description
给你A 个从小到大排好序的整数,一个数P,要求在这A个整数中找两个数M和N,使得M-N=P,问你能找到多少种这样的方案?
输入描述 Input Description
第一行:2 个正整数:A,P。
第二行:N个顺序整数。
输出描述 Output Description
一个整数,表示该串数中包含的所有满足M-N=P 的数对的方案数。
样例输入 Sample Input
4 1 1 1 2 2
样例输出 Sample Output
4
数据范围及提示 Data Size & Hint
对于50% 的数据:A 的范围是[1…1,000]。
对于另外50% 的数据:A 的范围是[1…100,000]。
对于100% 的数据:P的范围是[1…1,000,000,000],A 个整数中每个数的范围是:[0…1,000,000,000]。
不准说要打牢基础,用数组一类话
0
已采纳
陆麟瑞
资深天翼
资深天翼
这道题要用到map来写,具体与桶的思路一样直接模拟和乘法原理就行了。
for(int i=1; i<=n; i++) { cin>>a[i]; b[a[i]]++;//累加 } for(int i=1; i<=n; i++) if(b[a[i]-m]) { s+=b[a[i]]*b[a[i]-m]; b[a[i]]=0; }
输出s
b不是数组!!!是这样定义的:
map<int,int>b;
头文件是#include <map>
0
0
0
黄昊轩
新手守护
新手守护
if (a[i] > x) { for (j = n+1; j >= i; j--) { a[j ] = a[j-1]; }a[i] = x; }
0
0