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 ...
随机推荐
- 杂记 -- 关于less在vue项目中的使用
1.安装less,less-loader npm install less less-loader --save 2.配置wepack.js(vue3+版本中不用自己设置) //添加less路径模块 ...
- MacOS最佳思维导图推荐-MindNode 7
思维导图软件哪个比较好呢?MindNode for mac下载一款功能简单,界面简洁,不用看教程都会用的思维导图软件.mindnode 7 mac版可随时随地记录自己的想法,让您从灵感入手,将奇思妙想 ...
- Git上传代码命令
对于Git在这不做说明:只介绍Git使用过程中的常用命令: 一.创建仓库,提交文件 1.初始化一个Git仓库,使用git init命令. 2.添加文件到Git仓库,分两步: 第一步,使用命令git a ...
- [原]排错实战——使用process explorer替换任务管理器
原Aha总结注册表process explorersysinternalsprocess monitor 前言 一般,我们会使用任务管理器查看系统中有哪些进程正在运行,强制杀掉某个进程.可是系统自带的 ...
- P2P平台爆雷不断到底是谁的过错?
早在此前,范伟曾经在春晚上留下一句经典台词,"防不胜防啊".而将这句台词用在当下的P2P行业,似乎最合适不过了.就在这个炎热夏季,P2P行业却迎来最冷冽的寒冬. 引发爆雷潮的众多P ...
- [ZJOI2006]书架(二分+树状数组)
这题90%以上的人做法为裸的平衡树,实际上根本没必要还常数大,最好的方法是二分+树状数组.具体做法是,开3倍内存,初始把中间n位赋值为1.对于每个操作:1&2.删除该位,将其丢在头/尾(开三倍 ...
- 《深入理解java虚拟机》-目录结构
第一部分 走进Java第1章 走进Java 第二部分 自动内存管理机制 第2章 Java内存区域与内存溢出异常2.1 概述2.2 运行时数据区域2.2.1 程序计数器2.2.2 java虚拟机栈2.2 ...
- 架构之道(5) - APP和Web的后台架构
当一个项目,同时需要Web.手机H5.Android,三平台同时可以测览,那就需要很简洁而有力的架构. 而我这就经历了这麽一个项目,先开发网站,然后是手机H5,最后是Android. 自信男人,无须多 ...
- Spring集成MyBatis配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- Codeforces 1295D Same GCDs
题目链接 link Solution 这是一道结论题,有两个做法,分别用了欧拉函数或一点点莫比乌斯反演 (这里只放欧拉函数的做法) 设\(d=gcd(m,a)\) \[gcd(\frac{a}{d}, ...