a+b
来源:互联网 发布:指静脉识别算法源代码 编辑:程序博客网 时间:2024/05/01 22:53
题目描述
给定一个单调不减的数列p 和一个整数m,求有多少组a,b ,满足pa+pb=m
输入
第一行一个整数T ,表示有T 组测试数据。
每组数据第一行是1 个整数m 。
第二行是整数n ,表示p中有n 个数字。
第三行是n 个数字,表示p 的所有元素。
T≤3,1≤n,m≤3∗106,0≤pi≤3∗106
输出
每组数据输出一个数x ,表示满足条件的组数。
样例输入
2741 2 3 4651 2 3 4 5
样例输出
25
题目描述
给定一个单调不减的数列
输入
第一行一个整数
每组数据第一行是
第二行是整数
第三行是
输出
每组数据输出一个数
样例输入
2741 2 3 4651 2 3 4 5
样例输出
25
注意下标:
#include <iostream>#include <stdio.h> using namespace std; #define MAX 3000005 int a[MAX]; int main(){int t,n,m; scanf("%d",&t); while (t--){ scanf("%d%d",&m,&n); for (int i=0;i<n;i++)scanf("%d",&a[i]); int l=0,r=n-1; long long sum=0; while (l<r) { while(l<r&&a[l]+a[r]<m) l++; while(l<r&&a[l]+a[r]>m) r--; if (l<r&&a[l]+a[r]==m){ if (a[l]==a[r]) break; int ml=a[l],mr=a[r]; int nl=0,nr=0; while(l<r&&a[l]==ml){ l++; nl++;}while(l<=r&&a[r]==mr) { r--; nr++;} sum+=nl*nr; }} sum<<=1; if (l==r&&a[l]+a[r]==m) sum++; else if (l<r&&a[l]==a[r]&&a[l]+a[r]==m) { long long len=r-l+1; sum+=len*len; }cout<<sum<<endl; } return 0; }
0 0
- a>b?a:b
- a+b
- a+++b
- A + B
- A+B
- A+B
- {A} + {B}
- a+++b
- A+B
- A-B
- A+B
- A + B
- A|B?
- A+B
- A + B
- A+B
- A + B
- A+B
- oracle根据某个字段去重查询实例
- Failed to open zip file. Gradle's dependency cache may be corrupt
- jQuery页面加载初始化常用的三种方法
- title添加小图标
- 工具类之TimeUtils
- a+b
- 流媒体开发之--直播实现
- 洗澡了,睡了
- 001.java 环境变量
- 广播接收器——BroadcastReceiver
- libdai application
- MySQL中的自定义函数
- 1033. 旧键盘打字(20)
- java算法之插入排序