题意:

给出n个数,问做多可以找到多少对数字A,B,使得A xor B > max(A,B)。

思路:

感谢mzjj教本弱智。

对于一个数,只考虑小于它的数字。

假设对于一个数字x 11001001,对于从最高位开始的连续的1,满足条件的数y的这位一定不能为1,从碰到的第一位0开始:这一位就可以是1,后面无论是什么都可以满足条件;

如果这位不为1,那么直到碰到下一个0之前,都不能是1。

所以可以从小到大枚举,按最高位分组,对于当前来到的x,枚举它的0的位有多少,答案加上以这位为最高位的数字的个数。

然后把这个数字加进分组中。

一开始把b数组只开了10,以为10的9次方最多10位,确实是,但是那是10进制,二进制就是32位了,睿智了Orz。

我的代码:

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <algorithm>
 4 using namespace std;
 5 const int N = 1e5 + 10;
 6 int a[N];
 7 int b[35];
 8 int main()
 9 {
10     int t;
11     scanf("%d",&t);
12     while (t--)
13     {
14         memset(b,0,sizeof(b));
15         int n;
16         scanf("%d",&n);
17         for (int i = 0;i < n;i++)
18         {
19             scanf("%d",&a[i]);
20         }
21         sort(a,a+n);
22         long long ans = 0;
23         for (int i = 0;i < n;i++)
24         {
25             int x = a[i];
26             int cnt = 0;
27             while (x)
28             {
29                 if (!(x & 1)) ans += b[cnt];
30                 cnt++;
31                 x >>= 1;
32             }
33             if (cnt == 0) continue;
34             b[cnt-1]++;
35         }
36         printf("%lld\n",ans);
37     }
38     return 0;
39 }

学长的代码:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 typedef long long LL;
 4 const int N = 1e5 + 5;
 5 int T, n;
 6 int a[N];
 7 int cnt[33];
 8
 9 int main() {
10     scanf("%d", &T);
11     while(T--) {
12         scanf("%d", &n);
13         for(int i = 0; i < n; i++) {
14             scanf("%d", &a[i]);
15         }
16         sort(a, a+n);
17         memset(cnt, 0, sizeof(cnt));
18         LL ans = 0;
19         for(int i = 0; i < n; i++) {
20             int x = a[i];
21             int b = 31 - __builtin_clz(x);//返回左起第一个‘1’之前0的个数。
22             for(int j = 0; j < b; j++) {
23                 if(~x&(1<<j)) ans += cnt[j];
24             }
25             cnt[b]++;
26         }
27         printf("%lld\n", ans);
28     }
29     return 0;
30 }

转载于:https://www.cnblogs.com/kickit/p/9000699.html

zoj 3870 Team Formation相关推荐

  1. 费用流 ZOJ 3933 Team Formation

    题目链接 题意:两个队伍,有一些边相连,问最大组对数以及最多女生数量 分析:费用流模板题,设置两个超级源点和汇点,边的容量为1,费用为男生数量.建边不能重复建边否则会T.zkw费用流在稠密图跑得快,普 ...

  2. JACK——TeamsMaual6 Team Formation

    来源:http://aosgrp.com/ 6 Team Formation This chapter describes team formation. It includes a descript ...

  3. 【ZOJ - 3870】Team Formation(异或,思维)

    题干: For an upcoming programming contest, Edward, the headmaster of Marjar University, is forming a t ...

  4. 【Codeforces gym 102388】SUFE ICPC Team Formation Test,签到题BDG

    B Stars /* 题意:求二维平面上(x1,y1),(x2,y2)连成的直线上有多少个整数点 思路:以(x1,y1)为原点建立新的坐标系,答案为gcd(|x2-x1|,|y2-y1|)+1 */ ...

  5. TYUT-A专题题解(一)

    TYUT-A专题题解(一) 01A Ad Hoc UVA353 LA5247 Pesky Palindromes[回文] - 海岛Blog - CSDN博客 UVA947 Master Mind He ...

  6. JACK——TeamsManual3 Roles

    来源:http://aosgrp.com/ 3 Roles A role in Teams is a distinct entity which contains a description of t ...

  7. 神牛笔记:吉林大学ACM总结(fennec)

    其实在北京比赛完的时候,我就想写了,不过还是早了点,直到上海比赛结束,大家的心中都不是太好受.郭老师有句话:你们这样做也是对的,不成功就成仁.让我的心也能安慰了不少. 我是从大一下学期开始接触ACM的 ...

  8. 我如何在昌迪加尔大学中心组织Google Hash Code 2019

    by Neeraj Negi 由Neeraj Negi 我如何在昌迪加尔大学中心组织Google Hash Code 2019 (How I organized Google Hash Code 20 ...

  9. 【2017年第3期】Talent Network:一个基于设计思维的企业社交网络服务

    夏帆, 丁铖, 钱卫宁, 周傲英, Gopakumar Gopalakrishnan, Anjaneyulu Passala 华东师范大学 中图分类号:TP391     文献标识码:A doi:10 ...

最新文章

  1. mysql整形溢出报错_MySQL整型数据溢出的解决方法
  2. python numpy ones.like()(返回形状与类型与给定数组相同的数组)
  3. iframe URI钓鱼
  4. 关于CUDA和CuDNN配置的小问题
  5. 热胀冷缩,但为什么水结冰体积会膨胀?
  6. 64位汇编中的布尔指令
  7. MySQL索引性能测试
  8. 【翻译】 Unity3D VR 教程:3.VR中的交互
  9. 述职答辩提问环节一般可以问些什么_述职被高频问到的15问
  10. 全国计算机一级证书重点知识,全国计算机一级
  11. 【不忘初心】Windows11 22000.168 X64 四合一[纯净精简版][2.77G](2021.8.29)
  12. 排列组合问题,01234 五个数能组成多少个互不相同的三位数,且数字不重复。
  13. 无畏先锋服务器没响应,LOL:为啥不删除“郊区”?无畏先锋人气惨淡,21分钟匹配不到人...
  14. android控件ListView设置onClick事件
  15. SiteGround评测:堆叠的共享托管
  16. C# 证件照替换底色、设置背景图
  17. gvcf文件与vcf文件
  18. CDC、HDC、pDC
  19. demension(dimensional)
  20. gw.to免费二级域名注册,可解析支持完整的 DNS 服务

热门文章

  1. SELinux系列(三)——SELinux的三种工作模式
  2. opencv学习笔记02
  3. 同样是数据分析师,他靠“打标签”总被夸,我天天加班取数还被骂
  4. 熬夜整理出40张可视化大屏模板,不敲一个代码就能直接套用
  5. 如何引导企业数据“价值变现”,看能源化工业的数据化管理
  6. JS开发引用HTML DOM的location和document对象
  7. 电力企业信息化系统之调度信息报送系统整体解决方案
  8. python学习——正则表达式
  9. 华为android10版本,华为手机助手(安卓版)最新手机版10.1.1.500
  10. python黑色背景白色背景_用Python去除图像的黑色或白色背景实例