codeforces 768 C. Jon Snow and his Favourite Number(思维+暴力)
题目链接:http://codeforces.com/contest/768/problem/C
题意:给出n个数,k个操作,和一个x,每次操作先排序然后对奇数位数进行xor x操作,最后问k次操作后最大值和最小值
为多少。
题解:看似是要找规律的但是只要暴力就行了。主要是a[i]的范围就只有10的3次,而且时间还有4s,直接来一个vis[i]表示
0~2048个数内取了几个,这样排序都不用了。直接for 0~2048就行。(2的10次1024,异或2的9次就是,2的11次减1
所以设最大为2048)然后稍微处理一下。可能还会用到一个re[i]辅助数组,具体看一下代码。
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std;
const int M = 1e5 + 10;
int a[M];
int vis[M] , re[M];
int main() {
int n , k , x;
scanf("%d%d%d" , &n , &k , &x);
for(int i = 0 ; i <= 2048 ; i++) {
vis[i] = 0;
re[i] = 0;
}
for(int i = 0 ; i < n ; i++) {
scanf("%d" , &a[i]);
vis[a[i]]++;
re[a[i]]++;
} if(n == 1) {
if(k % 2 == 0) {
printf("%d %d\n" , a[0] , a[0]);
}
else {
printf("%d %d\n" , (a[0] ^ x) , (a[0] ^ x));
}
}
else {
for(int i = 0 ; i < k ; i++) {
int flag = 0;
for(int j = 0 ; j <= 2048 ; j++) {
if(vis[j]) {
if(!flag) {
int gg = (vis[j] + 1) / 2;
re[j] -= gg;
re[(j ^ x)] += gg;
flag += vis[j];
flag %= 2;
continue;
}
else {
int gg = vis[j] / 2;
re[j] -= gg;
re[(j ^ x)] += gg;
flag += vis[j];
flag %= 2;
continue;
}
}
}
for(int j = 0 ; j <= 2048 ; j++) {
vis[j] = re[j];
}
}
for(int j = 2048 ; j >= 0 ; j--) {
if(vis[j]) {
printf("%d " , j);
break;
}
}
for(int j = 0 ; j <= 2048 ; j++) {
if(vis[j]) {
printf("%d\n" , j);
break;
}
}
}
return 0;
}
codeforces 768 C. Jon Snow and his Favourite Number(思维+暴力)的更多相关文章
- 【codeforces 768C】Jon Snow and his Favourite Number
[题目链接]:http://codeforces.com/contest/768/problem/C [题意] 给你n个数字; 让你每次把这n个数字排序; 然后对奇数位的数字进行异或操作,然后对新生成 ...
- Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) C - Jon Snow and his Favourite Number
地址:http://codeforces.com/contest/768/problem/C 题目: C. Jon Snow and his Favourite Number time limit p ...
- Codeforces768C Jon Snow and his Favourite Number 2017-02-21 22:24 130人阅读 评论(0) 收藏
C. Jon Snow and his Favourite Number time limit per test 4 seconds memory limit per test 256 megabyt ...
- codeforces 768c Jon Snow And His Favourite Number
题意: 给出一个数列,和一种操作,以及两个数x和k. 这个操作有两个步骤: 首先把这个数列按照升序排序,然后把所有奇数位上的数字与x异或. 问执行k次操作之后,这个数列的最大值和最小值是多少. 思路: ...
- CodeForces - 768C Jon Snow and his Favourite Number 桶排
https://vjudge.net/problem/CodeForces-768C 题意:n个数,k次操作,x.每次操作先排序,再让奇数位置上的数据a[i]:=a[i] XOR x; k< ...
- Jon Snow and his Favourite Number CodeForces - 768C (技巧)
链接 题意 给定数组, 每次操作先将数组排序, 再将奇数位全部异或x, 求k次操作后数组最大值与最小值 (1 ≤ n ≤ 105, 0 ≤ k ≤ 105, 0 ≤ x ≤ 103) 题解 直接暴力模 ...
- 【基数排序】Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) C. Jon Snow and his Favourite Number
发现值域很小,而且怎么异或都不会超过1023……然后可以使用类似基数排序的思想,每次扫一遍就行了. 复杂度O(k*1024). #include<cstdio> #include<c ...
- C. Jon Snow and his Favourite Number DP + 注意数值大小
http://codeforces.com/contest/768/problem/C 这题的数值大小只有1000,那么可以联想到,用数值做数组的下标,就是类似于计数排序那样子.. 这样就可以枚举k次 ...
- codeforces 768 D. Jon and Orbs(概率dp)
题目链接:http://codeforces.com/contest/768/problem/D 题意:一共有k种球,要得到k种不同的球至少一个,q个提问每次提问给出一个数pi,问概率大小大于等于pi ...
随机推荐
- 去掉matlab图像显示刻度
图像显示后面加 set( gca, 'XTick', [], 'YTick', [] );
- .net持续集成测试篇之Nunit that断言
系列目录 that是Nunit的新语法,语义上不如简单断言,使用上也更加复杂,但是其功能更加强大. 其基本语法如下代码片段示: [Test] public void DemoTest() { bool ...
- 用命令将本地jar包导入到本地maven仓库
[**前情提要**]在日常开发过程中,我们总是不可避免的需要依赖某些不在中央仓库,同时也不在本地仓库中的jar包,这是我们就需要使用命令行将需要导入本地仓库中的jar包导入本地仓库,使得项目依赖本地仓 ...
- Spring Boot + Security + JWT 实现Token验证+多Provider——登录系统
首先呢就是需求: 1.账号.密码进行第一次登录,获得token,之后的每次请求都在请求头里加上这个token就不用带账号.密码或是session了. 2.用户有两种类型,具体表现在数据库中存用户信息时 ...
- IntelliJ IDEA + Maven + Jetty + Jersey搭建RESTful服务
这次参考的是这个博客,完全按照这个我这里会出一些问题,一会再说就是了. https://www.cnblogs.com/puyangsky/p/5368132.html 一.首先新建一个项目,选择Ja ...
- 关于Linux的简单介绍
Linux: 诞生日期:1991年 开发者:林纳斯·托瓦茨 特点:免费,开源 发行版本:centos|red Hat|Ubuntu|红旗等 思想:一切都是文件 重要文件目录 bin:二进制 ...
- django 获取当前访问的URL
next_url = request.path_info print(next_url) print(request.get_full_path()) //打印出全路径(路径和参数) print(re ...
- 激活Cisco路由器和交换机的right-to-use
一.确认当前正在使用license版本 show license #路由器2911测试可行 show license summary #交换机C4503测试可行 show version # ...
- DFS树求割点问题
时间复杂度:O(n玄学)总之不大 代码实现(好麻烦,蓝题变紫题) #include<iostream> #include<string.h> #include<algor ...
- Linux网络问题排错
前言 作为一名软件工程师,Linux相关的知识是一个不可或缺的技能点,而网络问题往往是初学者接触Linux时最先碰到的一只拦路虎,本篇博客将系统的讲解一个解决Linux网络问题的通用方法论,一个科学的 ...