zoj 3870 Team Formation
题意:
给出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相关推荐
- 费用流 ZOJ 3933 Team Formation
题目链接 题意:两个队伍,有一些边相连,问最大组对数以及最多女生数量 分析:费用流模板题,设置两个超级源点和汇点,边的容量为1,费用为男生数量.建边不能重复建边否则会T.zkw费用流在稠密图跑得快,普 ...
- JACK——TeamsMaual6 Team Formation
来源:http://aosgrp.com/ 6 Team Formation This chapter describes team formation. It includes a descript ...
- 【ZOJ - 3870】Team Formation(异或,思维)
题干: For an upcoming programming contest, Edward, the headmaster of Marjar University, is forming a t ...
- 【Codeforces gym 102388】SUFE ICPC Team Formation Test,签到题BDG
B Stars /* 题意:求二维平面上(x1,y1),(x2,y2)连成的直线上有多少个整数点 思路:以(x1,y1)为原点建立新的坐标系,答案为gcd(|x2-x1|,|y2-y1|)+1 */ ...
- TYUT-A专题题解(一)
TYUT-A专题题解(一) 01A Ad Hoc UVA353 LA5247 Pesky Palindromes[回文] - 海岛Blog - CSDN博客 UVA947 Master Mind He ...
- JACK——TeamsManual3 Roles
来源:http://aosgrp.com/ 3 Roles A role in Teams is a distinct entity which contains a description of t ...
- 神牛笔记:吉林大学ACM总结(fennec)
其实在北京比赛完的时候,我就想写了,不过还是早了点,直到上海比赛结束,大家的心中都不是太好受.郭老师有句话:你们这样做也是对的,不成功就成仁.让我的心也能安慰了不少. 我是从大一下学期开始接触ACM的 ...
- 我如何在昌迪加尔大学中心组织Google Hash Code 2019
by Neeraj Negi 由Neeraj Negi 我如何在昌迪加尔大学中心组织Google Hash Code 2019 (How I organized Google Hash Code 20 ...
- 【2017年第3期】Talent Network:一个基于设计思维的企业社交网络服务
夏帆, 丁铖, 钱卫宁, 周傲英, Gopakumar Gopalakrishnan, Anjaneyulu Passala 华东师范大学 中图分类号:TP391 文献标识码:A doi:10 ...
最新文章
- mysql整形溢出报错_MySQL整型数据溢出的解决方法
- python numpy ones.like()(返回形状与类型与给定数组相同的数组)
- iframe URI钓鱼
- 关于CUDA和CuDNN配置的小问题
- 热胀冷缩,但为什么水结冰体积会膨胀?
- 64位汇编中的布尔指令
- MySQL索引性能测试
- 【翻译】 Unity3D VR 教程:3.VR中的交互
- 述职答辩提问环节一般可以问些什么_述职被高频问到的15问
- 全国计算机一级证书重点知识,全国计算机一级
- 【不忘初心】Windows11 22000.168 X64 四合一[纯净精简版][2.77G](2021.8.29)
- 排列组合问题,01234 五个数能组成多少个互不相同的三位数,且数字不重复。
- 无畏先锋服务器没响应,LOL:为啥不删除“郊区”?无畏先锋人气惨淡,21分钟匹配不到人...
- android控件ListView设置onClick事件
- SiteGround评测:堆叠的共享托管
- C# 证件照替换底色、设置背景图
- gvcf文件与vcf文件
- CDC、HDC、pDC
- demension(dimensional)
- gw.to免费二级域名注册,可解析支持完整的 DNS 服务
热门文章
- SELinux系列(三)——SELinux的三种工作模式
- opencv学习笔记02
- 同样是数据分析师,他靠“打标签”总被夸,我天天加班取数还被骂
- 熬夜整理出40张可视化大屏模板,不敲一个代码就能直接套用
- 如何引导企业数据“价值变现”,看能源化工业的数据化管理
- JS开发引用HTML DOM的location和document对象
- 电力企业信息化系统之调度信息报送系统整体解决方案
- python学习——正则表达式
- 华为android10版本,华为手机助手(安卓版)最新手机版10.1.1.500
- python黑色背景白色背景_用Python去除图像的黑色或白色背景实例