传送门

题意

分析

可知对与某个数x,设其可发送信息的边界为[L,R],那么随着x的递增,[L,R]也右移,故可对输入数排序,做一次双指针即可

trick

代码

//1. Aj < 1/8 * Ai + 8 或者  
//2. Aj > 8 * Ai + 8 或者  
//3. Ai < 88888 且 Aj > 88888  
/*
i不会给j发消息当且仅当
8*a[j]<a[i]+64
a[j]>8*a[i]+8
a[i]<88888&&a[j]>88888
可行区间
1:9~16
2:9~24
9:10~80
10:10~88
11:10~96
...
16:10~136
17:11~144
11110:1397~88888
11112:1397~88888
88888:11103~88888
88889:88888~100000
100000:88888~100000
*/ #include <bits/stdc++.h>
using namespace std; #define ll long long
#define F(i,a,b) for(int i=a;i<=b;++i)
#define R(i,a,b) for(int i=a;i<b;++i)
#define mem(a,b) memset(a,b,sizeof(a)) int x,sz;
vector<int>v;
int main()
{
int n;
cin>>n;
F(i,1,n)
{
scanf("%d",&x);
v.push_back(x);
}
sort(v.begin(),v.end());
sz=v.size();
ll ans=0;
int l=0,r=-1;
R(i,0,sz)
{
while(l<sz&&v[l]*8<v[i]+64) l++;
while(r+1<n&&v[r+1]<=8*v[i]+8&&(v[i]>=88888||v[r+1]<=88888)) r++;
ans+=r-l+1;
if(i>=l&&i<=r) ans--;
}
printf("%lld\n",ans );
return 0;
}

最新文章

  1. BZOJ2109: [Noi2010]Plane 航空管制
  2. Bzoj3531: [Sdoi2014]旅行
  3. web配置详解
  4. hbase操作的问题
  5. php中var_export与var_dump的区别分析
  6. CentOS安装nvidia显卡驱动
  7. CSS jQuery HTML5 CSS3
  8. IIS 7.5 配置伪静态
  9. HDOJ 1272 并查集 不相同父节点
  10. servlet 用法
  11. sql server两种分页方法
  12. java基础解析系列(四)---LinkedHashMap的原理及LRU算法的实现
  13. ZOJ3541 The Last Puzzle
  14. vim搭建笔记
  15. Windows10安装pycocotools方法,亲测可用!
  16. gitbook build 报错
  17. ultraEdit MAC 破解方法
  18. FastReport报表打印总页数的问题?
  19. CodeLite C/C+ IDE更新放出
  20. mapreduce的输入格式 --- InputFormat

热门文章

  1. Openlayers中layer介绍
  2. Java开发面试题
  3. c/c++标准库中的文件操作总结
  4. cenos 6.5 安装apache 2.4.28出现种问题
  5. Machine Learning in Action(1) K-近邻
  6. machine learning for hacker记录(1) R与机器学习
  7. Struts2页面遍历
  8. iOS 设备获取唯一标识符汇总
  9. MFC窗口消息PostMessage和SendMessage
  10. Gym - 100187A A - Potion of Immortality —— 贪心