POJ3663

题意简单。

关键:记录每头牛的val值,每次寻找和某头牛匹配的牛时候,可以通过刚刚记录的值来计算。

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<algorithm>
 4 using namespace std;
 5 const int maxn = 20005;
 6 const int maxm = 1000005;
 7 int vis[ maxm ],cow[ maxn ];
 8 int main(){
 9     int n,aim;
10     while( scanf("%d%d",&n,&aim)==2 ){
11         memset( vis,0,sizeof( vis ) );
12         for( int i=0;i<n;i++ ){
13             scanf("%d",&cow[i]);
14             vis[ cow[i] ]++;
15         }
16         for( int i=1;i<maxm;i++ ){
17             if( vis[ i ]==0 ) vis[ i ] = vis[ i-1 ];
18             else vis[ i ] = vis[ i-1 ]+vis[ i ];
19         }
20         int ans = 0;
21         for( int i=0;i<n;i++ ){
22             if( aim>=cow[i] ){
23                 ans += vis[ aim-cow[i] ];
24                 if( cow[i]<=aim-cow[i] )
25                     ans--;
26             }
27         }
28         //printf("ans=%d\n",ans);
29         ans/=2;
30         printf("%d\n",ans);
31     }
32     return 0;
33 }
View Code

/*

对于这里的ans--,是除去牛和本身的组合

*/

转载于:https://www.cnblogs.com/xxx0624/p/3204532.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值