ZOJ-3870 Team Formation
2016-04-16 21:59
260 查看
题目大意:给n个正数,找出满足A^B>max(A,B)的对数。
题目分析:
代码如下:
题目分析:
代码如下:
# include<iostream> # include<cstdio> # include<cstring> # include<vector> # include<queue> # include<list> # include<set> # include<map> # include<string> # include<cmath> # include<cstdlib> # include<algorithm> using namespace std; # define LL long long const int N=1005; const int INF=1000000000; int n; int a[N*100]; int p[N*100]; int getLpos(int l,int r,int x) { while(l<r){ int mid=l+(r-l)/2; if(p[mid]<x) l=mid+1; else r=mid; } return l; } int getRpos(int l,int r,int x) { while(l<r){ int mid=l+(r-l)/2; if(p[mid]>x) r=mid; else l=mid+1; } return l; } int main() { int T; scanf("%d",&T); while(T--) { scanf("%d",&n); for(int i=0;i<n;++i){ scanf("%d",a+i); } sort(a,a+n); for(int i=0;i<n;++i){ for(int j=31;j>=0;--j){ if(a[i]&(1<<j)){ p[i]=j; break; } } } int ans=0; for(int i=0;i<n;++i){ for(int j=p[i]-1;j>=0;--j){ if(a[i]&(1<<j)) continue; int l=getLpos(0,i,j); int r=getRpos(0,i,j); ans+=r-l; //cout<<i<<' '<<l<<' '<<r<<endl; } } printf("%d\n",ans); } return 0; }
相关文章推荐
- TCP & UDP
- 用Apache httpclient模拟登陆学生个人信息系统
- operator关键字(重载操作符)
- 【hdu2087】剪花布条——KMP
- HDU 5665 Lucky(思维题)【BC】
- 剑指offer之面试题8:旋转数组的最小数字
- POI之Excel单元格合并边框问题
- 第七次作业
- Centos7多版本python包不能通用问题
- jdbc
- Redis命令-有序集合-zrevrangebyscore
- nodejs cms开源框架
- import com.sun.org.apache.xerces.internal.impl.dv.util.Base64问题
- MyBatis中like查询语句的使用
- ES6-Proxy与Reflect 实现重载(overload)
- 集合
- X264和JM有如下区别
- 字符串最后一个单词的长度之机试
- HDU 1015 Safecracker(一道很好的dfs)
- c++中new和delete的使用方法