CF-1110C-Meaningless Operations
题意:
输入q,然后输入q个a,对于每个a,找到一个b,使gcd(a ^ b, a & b)最大,输出这个最大的gcd;
思路:
用k表示a二进制最高位的二进制编号,1,2,4,8对应1,2,3,4;
假如a不是 (1 << k) - 1这种形式的,那么总能找到一个b使a ^ b == (1 << k) - 1,而a & b == 0,这个时候gcd一定最大。如果a是 (1 << k) - 1,那么因为b不能为0,所以凑不出 (1 << k) - 1,没办法只能暴力了,因为(1 << k) - 1这样的形式的a也只有24个,所以我们要事先打表,否则应该会超时
打表代码:
#include "bits/stdc++.h"
using namespace std;
int main() {
for (int i = ; i <= ( << ) - ; i = i << | ) {
int max_gcd = ;
for (int j = ; j < i; j++) {
max_gcd = max(max_gcd, __gcd(i ^ j, i & j));
}
printf("mp[%d] = %d;\n", i, max_gcd);
}
return ;
}
提交代码:
| C - Meaningless Operations | GNU C++11 | Accepted | 30 ms | 0 KB |
#include "bits/stdc++.h"
using namespace std;
map<int, int> mp;
int main() {
mp[] = ;
mp[] = ;
mp[] = ;
mp[] = ;
mp[] = ;
mp[] = ;
mp[] = ;
mp[] = ;
mp[] = ;
mp[] = ;
mp[] = ;
mp[] = ;
mp[] = ;
mp[] = ;
mp[] = ;
mp[] = ;
mp[] = ;
mp[] = ;
mp[] = ;
mp[] = ;
mp[] = ;
mp[] = ;
mp[] = ;
mp[] = ;
int t, n;
scanf("%d", &t);
while (t--) {
scanf("%d", &n);
if (mp.count(n)) {
printf("%d\n", mp[n]);
continue;
}
int k = ;
while (n) {
k++;
n >>= ;
}
printf("%d\n", ( << k) - );
}
return ;
}
这次比赛得到的教训是打表程序跑出来的结果一定要是可以直接复制粘贴的,比赛的时候前面的题本来就做的不够快,然后当时打表程序不够好,这题还手敲了switch,结果来不及提交了。还是map好,没有引号百分号,用printf输出比较方便。
CF-1110C-Meaningless Operations的更多相关文章
- C. Meaningless Operations Codeforces Global Round 1 异或与运算,思维题
C. Meaningless Operations time limit per test 1 second memory limit per test 256 megabytes input sta ...
- CF - 1110 C Meaningless Operations
题目传送门 题解: 首先根据观察,很容易发的是: x != (1<<k) - 1 时候 答案就是, 将x二进制下再最高位后的0都变成1. 然后就是考虑 x == (1<<k) ...
- CF1110C Meaningless Operations(构造题)
这可能是我打那么多次CF比赛时,做出来的最难的一道题了……而且这题也是个绝世好题…… 题目链接:CF原网 洛谷 题目大意:$q$ 组询问,每次给定 $a$ 询问 $\gcd(a\&b,a\o ...
- CF1110C Meaningless Operations
思路: 令x为满足2x <= a的最大的x.如果a的二进制表示中包含0,则将b构造为(2x+1 - 1) ^ a即可:否则gcd(a ^ b, a & b) = gcd(2x+1 - 1 ...
- 【Codeforces Global Round 1 C】Meaningless Operations
[链接] 我是链接,点我呀:) [题意] 给你一个a 让你从1..a-1的范围中选择一个b 使得gcd(a^b,a&b)的值最大 [题解] 显然如果a的二进制中有0的话. 那么我们就让选择的b ...
- CodeForces Global Round 1
CodeForces Global Round 1 CF新的比赛呢(虽然没啥区别)!这种报名的人多的比赛涨分是真的快.... 所以就写下题解吧. A. Parity 太简单了,随便模拟一下就完了. B ...
- CodeForces Contest #1110: Global Round 1
比赛传送门:CF #1110. 比赛记录:点我. 涨了挺多分,希望下次还能涨. [A]Parity 题意简述: 问 \(k\) 位 \(b\) 进制数 \(\overline{a_1a_2\cdots ...
- Codeforces Global Round 1 (A-E题解)
Codeforces Global Round 1 题目链接:https://codeforces.com/contest/1110 A. Parity 题意: 给出{ak},b,k,判断a1*b^( ...
- CF-1110 (2019/02/08)
CF-1110 A. Parity 快速幂的思想,考虑最后一位即可 #include <bits/stdc++.h> using namespace std; typedef long l ...
随机推荐
- sudo apt-get update数字签名错误解决方法
lzb@lzb:~/projects/curl-master$ sudo apt-get update 命中: http://mirrors.aliyun.com/ubuntu xenial InRe ...
- 关于linux下安装mysqlclient报 Failed building wheel for mysqlclient问题
导入下列依赖包,搞定 sudo apt-get install python3 python-dev python3-dev build-essential libssl-dev libffi-dev ...
- dozer
1.简介 dozer是用来两个对象之间属性转换的工具,有了这个工具之后,我们将一个对象的所有属性值转给另一个对象时,就不需要再去写重复的set和get方法了. 2.如果两个类之间的属性有些属性意思一样 ...
- Split string every nth character?
https://stackoverflow.com/questions/9475241/split-string-every-nth-character >>> line = '12 ...
- UML-如何进行面向对象设计?
1.开发者如何设计对象? 1).直接编码 2).uml图,然后编码 3).uml图,不编码 绘图要轻量的 2.并行创建若干模型 如:5分钟画交互图,5分钟画类图.反复交替 3.选择什么样的UML CA ...
- Django专题
一. web框架的原理: 1.C/S架构和B/S架构 C/S:客户端与服务器 B/S:浏览器与服务器 web开发 2.web开发的本质: socket服务端:收发消息都是按照HTTP协议的 ...
- python-day7爬虫基础之Ajax数据爬取
前几天一直在忙老师的项目,就没有继续学python,也没有写什么收获,今天晚上有空看看书,边看边理解着写吧: 首先说一下,我对Ajax的理解,就是有时候我们在浏览某个网页的时候,只要我们鼠标一直往下滑 ...
- PID<->Port[转]
//Netstat -anb #include <Windows.h> #include "Psapi.h" #include <Iprtrmib.h> # ...
- Python笔记_第三篇_面向对象_8.对象属性和类属性及其动态添加属性和方法
1. 对象属性和类属性. 我们之前接触到,在类中,我们一般都是通过构造函数的方式去写一些类的相关属性.在第一次介绍类的时候我们把一些属性写到构造函数外面并没有用到构造函数,其实当时在写的时候,就是在给 ...
- gcc -c xx.c 选项讲解
-c选项表示编译.汇编指定的源文件(也就是编译源文件),但是不进行链接.使用-c选项可以将每一个源文件编译成对应的目标文件. 目标文件是一种中间文件或者临时文件,如果不设置该选项,gcc 一般不会保留 ...