SSL P2209 数数
来源:互联网 发布:2016网络诈骗案 编辑:程序博客网 时间:2024/05/21 09:39
Description
给出n个正整数,请你数出其中有多少对数的和小于等于s。
Input
第1行两个正整数n,s。
第2行n个正整数,表示给出的数。
Output
只有一个数,如题目要求所示。
Sample Input
4 6
3 5 2 1
Sample Output
4
Hint
数据范围
对于50%的数据,n<=1000;
对于100%的数据,n<=100000,给出的数以及s都小于等于1000000。
首先快排,因为排序后为从小到达(升序),所以如果a[j]+a[i]<=s,那就有(j-i)个数+a[i]<=s,根据这个规律直接暴力。
备注:比一般暴力枚举,省时省力省时间
var a:array [1..100000] of longint; i,g,n,c,j,ans:longint;procedure qsort(l,r:longint); var i,j,key,temp:longint; begin if l>=r then exit; i:=l;j:=r; key:=a[(l+r) div 2]; repeat while (a[i]<key) do inc(i); while (a[j]>key) do dec(j); if i<=j then begin temp:=a[i];a[i]:=a[j];a[j]:=temp; inc(i); dec(j); end; until i>j; if l<j then qsort(l,j); if i<r then qsort(i,r); end;begin readln(n,c); for i:=1 to n do read(a[i]); qsort(1,n); ans:=0; g:=n; for i:=1 to n-1 do begin if a[i]>=c then break; if g<=i then break; for j:=g downto i+1 do if a[i]+a[j]<=c then begin ans:=ans+(j-i); g:=j; break; end; end; writeln(ans);end.
2 0
- SSL P2209 数数
- SSL 2521 数数
- SSL 2521 数数
- SSL 2521 数数
- 数数 ssl 2521 单调队列
- 数数
- 数数
- 数数
- 数数
- 数数
- 数数
- 数数
- 数数
- 数数
- 数数
- 数数
- 数数
- 数数
- poj1922
- php框架
- PAT B1008
- 走迷宫问题——非递归算法
- 零欧电阻及其作用
- SSL P2209 数数
- 使用java反射实现对象工厂以及工具类的编写
- Starry Night_usaco 5.1_bfs+暴力
- 70. Climbing Stairs#1(Done)
- PAT B1009
- [三维线性规划 空间解析几何 随机增量法 || 单纯形] HDU 2979 Expensive Drink
- java 基础 - 类的定义
- 拼包函数及网络封包的异常处理(含代码)
- Android开发之MVP架构详解