scu4437(二分)
Posted yijiull
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scu4437(二分)相关的知识,希望对你有一定的参考价值。
题目链接:https://cn.vjudge.net/contest/159024#problem/B
暴力超时,用二分优化。。
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<iostream> 5 #define ll long long 6 using namespace std; 7 const int maxn=1e5+10; 8 int n; 9 int B[maxn]; 10 int num[maxn]; 11 int main() 12 { 13 while(scanf("%d",&n)!=EOF) 14 { 15 for(int i=0;i<n;i++) 16 scanf("%d",&num[i]); 17 int m=1; 18 ll ans=0; 19 for(int i=1;i<10;i++) 20 { 21 m*=10; 22 for(int i=0;i<n;i++) 23 B[i]=num[i]%m; 24 sort(B,B+n); 25 for(int i=0;i<n;i++) 26 { 27 int pos=lower_bound(B+i+1,B+n,m-B[i])-B; 28 ans=ans+(n-pos); 29 } 30 } 31 printf("%lld\n",ans); 32 } 33 34 }
以上是关于scu4437(二分)的主要内容,如果未能解决你的问题,请参考以下文章
NightMare2(SCU4527+dijkstra+二分)